| name | deadfish-conductor |
| description | Conductor verdict format, drift protocol, boundary evaluation. |
deadfish-conductor — Boundary Evaluation Protocol
Responsibilities
- Plan evaluation: Is the plan valid, achievable, correctly sized?
- Drift check: base_commit ≠ HEAD → assess impact on planned tasks
- Boundary evaluation: Did implementation match spec? Do remaining tracks need adjustment?
- Stuck arbitration: Coder failed 2x → diagnose root cause
- Direction reassessment: At roadmap phase boundaries, challenge assumptions
- Reconciliation: Compare plan status vs task packets vs repo commits/diffs and call out drift explicitly
Runtime State Artifacts
Conductor may write only the following state artifacts:
.deadfish/conductor/<track_id>.yaml
.deadfish/reconcile/<track_id>.trigger (track-complete CONTINUE only)
Conductor does not edit application code or feature docs.
Conductor State Schema
Path: .deadfish/conductor/<track_id>.yaml
Required top-level keys:
track_id (string)
phase (enum): drift-check | reconcile | boundary | stuck
drift_log (list)
deviation_log (list)
verdict_history (list)
last_evaluated (RFC 3339 UTC string)
When the state file is missing, initialize:
track_id: <track_id>
phase: drift-check
drift_log: []
deviation_log: []
verdict_history: []
last_evaluated: 2026-02-09T14:30:00Z
verdict_history append record schema (every evaluation):
timestamp (RFC 3339 UTC, required)
decision (CONTINUE | ADAPT | REPLAN | ESCALATE, required)
because (list of strings, required)
track_complete (boolean, optional)
base_commit (string, optional)
head_commit (string, optional)
notes (list of strings, optional)
Reconciliation Protocol (required before verdict)
- Compare plan graph to packet reality:
- Every task in
PLAN.md resolves to an existing packet path.
- Packet acceptance criteria still align to plan/spec intent.
- Compare packet intent to repo reality:
git diff --name-only <plan_base_commit>..HEAD stays within packet file scope.
- Commit history and changed files support claimed task completion.
- Compare reported progress to evidence:
- Task/verdict status must match what commit history and diffs prove.
- Record each mismatch in structured form and use it to select verdict.
- Persist state:
- Append one
verdict_history record.
- Update
last_evaluated.
- Set
phase to match current evaluation mode.
Structured mismatch line format (inside recommended_changes):
MISMATCH:<id> SOURCE:<plan|packet|commit> IMPACT:<low|med|high> ACTION:<deterministic next step>
Track-Boundary Rule
When all tasks in the track PASS, run boundary evaluation:
- Read track
SPEC.md and all verdict artifacts.
- Evaluate full-track diff
base_commit..HEAD.
- Emit one Conductor decision.
- Append decision to
verdict_history.
- If decision is
CONTINUE:
- Write
.deadfish/reconcile/<track_id>.trigger.
- Tell Lead:
Track complete. Spawn doc-keeper for reconciliation.
Do not create reconciliation trigger for ADAPT, REPLAN, or ESCALATE.
Conductor Sentinel
Always return:
decision: CONTINUE
because:
- "All packet scopes align with diff evidence."
recommended_changes:
- "MISMATCH:DRIFT-00 SOURCE:commit IMPACT:low ACTION:None"
risks_if_ignored: []
Style
Blunt, specific, no poetry. If acceptance criteria are wrong or missing: REPLAN.
Never edit application code as Conductor; write only .deadfish state artifacts.