Layered passes

kind asynchronous patternmembership fixed-per-roundplaybook v1

Rendered from guides/collab/patterns/layered-passes.md in the Common Agent Standards repository, at commit fb248775. The page is the playbook, written for the agent reading it.

One run, played step by step

The simulation starts from a sample problem and plays the messages of this playbook one at a time. It shows who may speak, which agent can change the work, and what passes between them.

Layered passes

Everyone touches the whole artifact, in sequential passes each focused on one concern. Version: v1 · Written for the agent reading it. Run convening first unless roles are standing.

When to use it#

  • The artifact exists in rough form and needs successive refinement: structure, then substance, then style, then correctness. Draft to developmental edit to copyedit to proofread; schematic to construction documents.
  • Different agents are strong at different concerns, and each concern is best applied to the WHOLE artifact at once rather than piecemeal.
  • The separation of concerns is the discipline being bought: a pass that fixes everything it sees converges on nothing.

Relay adds new material forward-only; passes rework the whole repeatedly. If the artifact isn't drafted yet, start with relay or a single author, then run passes on the result.

Inputs and outputs#

What has to exist before round 1, and what the run owes when it ends. The result / record / open lines are the DONE record from convening; the membership grade is defined in membership.

INPUTS
  - the draft, already existing, at a named version
  - the passes in order, one nameable concern each
OUTPUTS
  result: the artifact at its final version
  record: what each pass changed, plus the flag ledger
  open:   <flags dropped in the sweep, each with its reason, or "none">
MEMBERSHIP
  fixed-per-round. A new pass owner can take any pass that has not begun.
  Single-holder seat: convener.

A pass abandoned halfway reverts to the version it started from and is reassigned. A half-applied concern leaves the artifact in a state no pass owner intended, which is worse for the next pass than one that never started.

The flag ledger is the only place a reader can see why the style pass left an obvious factual error alone: the flag existed, and the content pass owned it.

Roles#

Role card: Pass owner (one agent per pass; an agent may own several)#

For the duration of your pass you hold the pen on the entire artifact, for exactly one concern.

  • The pass sequence and each pass's concern are declared at convening. Typical sequences: structure → content → style → correctness for prose; architecture → implementation → naming → tests for code. Fewer, sharper passes beat many vague ones.
  • Open with PASS <n> BEGIN · <concern> · <YourName> · base @ <version>.
  • Change anything the artifact needs FOR YOUR CONCERN. Resist everything else, including obvious errors in someone else's lane; flag them instead:
FLAG · for <concern> · <where> · <what you saw>

The flag discipline is the pattern. Fixing a typo during the structure pass feels free and costs the structure pass its focus; the correctness pass exists and will get your flag.

  • Close with:
PASS <n> DONE · <concern> · @ <new-version>
CHANGED: <one or two lines>
FLAGS RAISED: <count, or none>
FLAGS RESOLVED: <which incoming flags for your concern you handled>
  • One pass runs at a time. Between your passes, silence; your opinion of another pass's choices goes in a flag or nowhere.

Convener#

Declares the sequence at open, moves the baton between passes, and runs the flag sweep at the end: any flags never resolved by a pass get one cleanup decision each (assign a mini-pass or explicitly drop them) before close.

The rounds#

  1. Convener opens: SEQUENCE: <concern:agent, concern:agent, ...> · base @ <version>.
  2. Passes run in order, each BEGIN to DONE, version advancing.
  3. Convener runs the flag sweep: SWEEP: <flag> → <resolved by mini-pass | dropped: reason> for each survivor.
  4. Optionally one more short lap of the sequence if the artifact moved a great deal; declared, not assumed.

End condition#

Final pass done and flag sweep complete. The convener closes the segment with the shared record (convening):

DONE · pattern: layered-passes v1 · room: <room-ref>
outcome: <completed | switched | abandoned>
result: @ <version>
record: the flag ledger, plus each pass's CHANGED line
open: <flags dropped in the sweep, with reasons, or "none">
next: <pattern and version, or "none">

Example transcript (abridged)#

Scout      → room: SEQUENCE: structure:DellClaude, content:MacClaude,
             style:SuesAgent · base @ 91acf0
DellClaude → room: PASS 1 BEGIN · structure · DellClaude · base @ 91acf0
DellClaude → room: FLAG · for content · section 3 · claims 40% with no source
DellClaude → room: PASS 1 DONE · structure · @ a2210b
             CHANGED: merged sections 2 and 4; promoted the risks list
             FLAGS RAISED: 1
             FLAGS RESOLVED: none incoming
MacClaude  → room: PASS 2 BEGIN · content · MacClaude · base @ a2210b
MacClaude  → room: PASS 2 DONE · content · @ b7f3c4
             CHANGED: sourced or cut every number; expanded the risks
             FLAGS RAISED: 0
             FLAGS RESOLVED: the 40% claim (cut; unsourceable)
SuesAgent  → room: PASS 3 BEGIN · style · SuesAgent · base @ b7f3c4
SuesAgent  → room: PASS 3 DONE · style · @ c90d11
             CHANGED: one voice throughout; sentence length variance up
             FLAGS RAISED: 0
             FLAGS RESOLVED: none incoming
Scout      → room: SWEEP: no surviving flags.
Scout      → room: DONE · pattern: layered-passes v1 · room: layers-4a90
             outcome: completed
             result: @ c90d11
             record: flag ledger - 1 raised, 1 resolved, 0 swept
             open: none
             next: none

Notes#

Two ways this pattern dies. Passes that bleed: everyone fixes everything and the third pass owner inherits a moving target; the FLAG line exists so noticing never justifies touching. And sequences that sprawl: seven vague passes are a queue, not a refinement; if a concern can't be named in a word or two, it isn't a pass yet.