pub enum Kind {
Code,
Spinoff,
Orchestrated,
Research,
TechnicalDecision,
MakeSkill,
FanOut,
Bugfix,
Orchestrate,
}Expand description
The run/node kind enum (design.md §1.2).
All 8 kinds are active in MVP.
Variants§
Code
Interactive, human-reviewed coding worktree (/worktree-code).
Spinoff
Autonomous fire-and-forget task that merges itself back (/worktree-spinoff).
Orchestrated
Orchestrated worker reporting to an orchestrator (/worktree-orchestrated).
Research
Autonomous multi-source research worktree (/worktree-research).
TechnicalDecision
Drives one architectural decision to an ADR (/worktree-technical-decision).
MakeSkill
Authors a new Claude Code skill (/worktree-make-skill).
FanOut
Parallel fan-out of many identical units (/fan-out).
Bugfix
End-to-end bug investigate-fix-review worktree (/worktree-bugfix).
Orchestrate
Top-level DAG driver run (/orchestrate). Coordinates Kind::Orchestrated
child workers. Has no worktree of its own — the orchestrator agent runs
in the user’s main conversation and uses the run dir only to host the
event log, manifest, and final hierarchical report.
Implementations§
Source§impl Kind
impl Kind
Sourcepub const WIRE_NAMES: &'static [&'static str]
pub const WIRE_NAMES: &'static [&'static str]
Every kind’s kebab-case wire name, in declaration order. Single
source of truth for “the set of accepted kinds” — see Kind::wire_name.
Sourcepub const fn wire_name(self) -> &'static str
pub const fn wire_name(self) -> &'static str
The kebab-case wire name for this kind — the same string serde
(de)serializes via rename_all = "kebab-case".
The exhaustive match is deliberate: adding a Kind variant fails
to compile until its wire name is listed here, so Kind::WIRE_NAMES
and any caller that advertises the accepted kinds (e.g. the report
validator’s expected hint) cannot silently drift from the enum.
Sourcepub fn lifecycle(self) -> Lifecycle
pub fn lifecycle(self) -> Lifecycle
Default lifecycle for a kind (design.md §7.4). code is
interactive (human-driven inside tmux); every other MVP kind is
autonomous (agent runs to completion, watchdog adjudicates).
Sourcepub fn is_autonomous_single_node_worker(self) -> bool
pub fn is_autonomous_single_node_worker(self) -> bool
Whether this kind is a top-level, single-node, autonomous worker —
one detached agent that materializes its own worktree and self-merges,
with no children and no parent DAG driving it. These are exactly the
kinds eligible for the supervisor’s bounded auto-retry on an empty-handed
agent-died (issue autoretry-agent-died-worker).
Excludes:
Code/Orchestrate(interactive — a human drives; never force-retry);FanOut(a multi-unit driver — its driver node has no agent of its own);Orchestrated(a DAG child — its PARENT supervisor owns its retry policy, so retrying it independently would desync the parent’s child bookkeeping).
The exhaustive match fails to compile when a new Kind is added, forcing
a deliberate eligibility decision rather than a silent default.