Conductor & Worker Protocol¶
This is how the driver's two agents talk. It is a real message exchange, not a blind "continue": the worker reports, the conductor reads and judges, the conductor replies.
The exchange¶
sequenceDiagram
autonumber
participant C as Conductor (your charter)
participant W as Worker (fresh Claude Code)
C->>W: work on item "build settings form"
activate W
W->>W: implement · run tests
W-->>C: STATUS: needs-decision<br/>Zustand vs Context?
deactivate W
C->>C: classify: reversible + charter-clear
C->>C: log D1 to DECISIONS.md
C-->>W: use Context API (charter: no new infra)
activate W
W->>W: wire it up · verify
W-->>C: STATUS: done · 12 tests green
deactivate W
C->>C: mark item [x] · next item (fresh worker)
The status contract¶
The worker closes every turn with a fenced status block, then stops and waits for the conductor:
```leopold-status
STATUS: done | needs-decision | blocked
ITEM: <the item you are on>
SUMMARY: <what you did this turn, 1-3 lines>
DECISION-NEEDED: <if needs-decision: the question + options A/B + tradeoff; else empty>
NEXT: <what you think comes next>
EVIDENCE: <build/lint/test result if relevant>
```
The driver parses this deterministically (a fenced block, or a bare STATUS:
fallback), then the conductor reasons over the parsed result.
The conductor's verdict¶
The conductor returns one of three actions:
flowchart TD
Status["worker status"] --> Class{classify}
Class -- "STATUS: done + good evidence" --> Finish["finish · mark item done"]
Class -- "reversible OR charter-clear" --> Answer["answer · push instruction · log"]
Class -- "irreversible AND ambiguous" --> Esc["escalate · notify · pause"]
classDef stop fill:#e63946,stroke:#9d0208,color:#fff;
class Esc stop;
| Action | When | Effect |
|---|---|---|
answer |
reversible or the charter covers it | push a concrete instruction back into the same worker session, log the decision |
finish |
item complete with evidence | mark the plan item done, start the next item with a fresh worker |
escalate |
irreversible and ambiguous, or a charter contradiction | notify the human, pause the run |
Why it works: the conductor is itself a reasoning model reading the full message with your charter as its system prompt, not a regex. The structured status block makes the signal reliable; the charter makes the judgment yours.