Each role owns one decision and publishes one artifact. Narrow roles keep hand-offs small and make failures easy to attribute.
Role | Owns | Publishes |
|---|---|---|
Planner | Decomposing the task into pieces with done criteria | A piece list with inputs and acceptance checks. |
Worker | Executing one piece inside its stated scope | A draft plus the assumptions it used. |
Reviewer | Checking drafts against the acceptance checks | A verdict per piece: accept or rework with reasons. |
The same three roles compose into a few stable shapes. The choice depends on whether pieces depend on each other and on how much review costs.
Pattern | Shape | Good for | Risk |
|---|---|---|---|
Sequential chain | Worker output feeds the next worker | Dependent steps such as extract then summarize | Early defects propagate into every later step. |
Parallel fan-out | Workers run side by side, then merge | Independent pieces such as per-file checks | Merging divergent assumptions costs extra review. |
Review gate | A reviewer verdicts before anything is accepted | High-stakes output such as submitted fixes | Review latency on every piece, including easy ones. |
The transcript below is schematic. It shows message shapes only and is not output from any real system.
planner -> worker A: draft the arbiter block from this spec and list assumptions
planner -> worker B: draft the scoreboard checks from this spec and list assumptions
worker A -> reviewer: draft A plus 3 assumptions
worker B -> reviewer: draft B plus 2 assumptions
reviewer -> planner: accept A; rework B with reason: reset case missing
planner -> worker B: retry piece B with the reset case addedRole blur is the usual failure. A worker that replans scope and a reviewer that silently rewrites both bypass the checks the roles exist to provide.
Parallel fan-out. Each worker checks one file, and the merge step combines four verdicts into one report.
The worker defect rate. Silent rewrites make acceptance data meaningless, so planner decisions lose their input.