CB-518: state the primary's orchestration as an explicit, ordered flow #8

Closed
kevin wants to merge 0 commits from CB-518-primary-flow into main
Owner

CB-517 moved orchestration policy into CLAUDE.md but left it as a bullet list, so the procedure stayed implicit — the order of operations had to be reconstructed from a parallelisation bullet, and nothing said when to review or when to tear down. A policy you reassemble on each task is one you reassemble differently each task.

What changes

CLAUDE.md → Bridge communication → Primary (lead) becomes a numbered 0–8 flow: role check · split · gate · spawn all · send all · collect · verify · review · adjudicate. Following it is now checkable against the tool calls rather than a matter of recall.

Two steps carry the load:

  • Spawn (3) and send (4) are separate on purpose. Folding them into one loop is what silently serialises work that was meant to fan out.
  • Review (7) is its own step ahead of the merge (8), not a clause inside it — the two have opposite owners. Reviewers fan out over the diff, never the implementer of the scope they review, and briefed from the diff rather than the author's rationale, which carries the same blind spot. Adjudication, merge and teardown stay with the primary. Merging on a reviewer's word is delegating the gate by proxy, so the step says so outright. Under ~50 changed lines the fan-out is skipped.

Nothing is dropped

The six bullets that trailed the tool table are relocated into the step that owns each:

Old bullet Now
Pass profile: explicitly step 3
wait:false + poll, ~60s cap note beneath the flow
Name the worker's playbook step 4
Self-contained delegation steps 1 + 4
You are the gate closing note
Verify what a worker claims step 6

The intent→tool table stays as the lookup. Net 44 insertions / 32 deletions, identical in both copies.

Canonicity

The block is canonical only if its wiki template matches byte for byte, so the template was produced by splicing the block out of CLAUDE.md rather than edited in parallel. The sync check the repo documents passes:

in sync: True

The wiki pointer moves in the same commit (da015de..0c896eb), keeping charter and template versioned together as CB-517 did.

Note for the reviewer

The wiki submodule was checked out behind the recorded pointer, and its local main was staler still (f4af2a1) than origin/main (da015de) — committing on it unrepaired would have reverted chapter 10. Both were repointed before committing. Worth knowing: the documented sync check is only trustworthy against a synced submodule, which is an argument for the CI step to resolve the recorded pointer rather than the working checkout.

No code changes; CI is a docs-only no-op here.

🤖 Generated with Claude Code

https://claude.ai/code/session_017Kw1FosEt3Noix5GG9wJ2r

CB-517 moved orchestration policy into `CLAUDE.md` but left it as a bullet list, so the *procedure* stayed implicit — the order of operations had to be reconstructed from a parallelisation bullet, and nothing said when to review or when to tear down. A policy you reassemble on each task is one you reassemble differently each task. ## What changes `CLAUDE.md` → *Bridge communication* → **Primary (lead)** becomes a numbered **0–8 flow**: role check · split · gate · spawn all · send all · collect · verify · review · adjudicate. Following it is now checkable against the tool calls rather than a matter of recall. Two steps carry the load: - **Spawn (3) and send (4) are separate on purpose.** Folding them into one loop is what silently serialises work that was meant to fan out. - **Review (7) is its own step ahead of the merge (8)**, not a clause inside it — the two have opposite owners. Reviewers fan out over the diff, never the implementer of the scope they review, and briefed from the diff rather than the author's rationale, which carries the same blind spot. Adjudication, merge and teardown stay with the primary. *Merging on a reviewer's word is delegating the gate by proxy*, so the step says so outright. Under ~50 changed lines the fan-out is skipped. ## Nothing is dropped The six bullets that trailed the tool table are relocated into the step that owns each: | Old bullet | Now | |---|---| | Pass `profile:` explicitly | step 3 | | `wait:false` + poll, ~60s cap | note beneath the flow | | Name the worker's playbook | step 4 | | Self-contained delegation | steps 1 + 4 | | You are the gate | closing note | | Verify what a worker claims | step 6 | The intent→tool table stays as the lookup. Net 44 insertions / 32 deletions, identical in both copies. ## Canonicity The block is canonical only if its wiki template matches byte for byte, so the template was produced by *splicing the block out of `CLAUDE.md`* rather than edited in parallel. The sync check the repo documents passes: ``` in sync: True ``` The wiki pointer moves in the same commit (`da015de..0c896eb`), keeping charter and template versioned together as CB-517 did. ## Note for the reviewer The `wiki` submodule was checked out behind the recorded pointer, **and** its local `main` was staler still (`f4af2a1`) than `origin/main` (`da015de`) — committing on it unrepaired would have reverted chapter 10. Both were repointed before committing. Worth knowing: **the documented sync check is only trustworthy against a synced submodule**, which is an argument for the CI step to resolve the recorded pointer rather than the working checkout. No code changes; CI is a docs-only no-op here. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017Kw1FosEt3Noix5GG9wJ2r
kevin added 1 commit 2026-08-04 17:32:42 +02:00
CB-517 moved orchestration policy into CLAUDE.md but left it as a bullet
list, so the procedure was implicit: the order of operations had to be
reconstructed from a parallelisation bullet, and nothing said when to
review or when to tear down. A policy you have to reassemble on each
task is one you will reassemble differently each task. Restate the
primary's half as a numbered 0-8 flow — role check, split, gate, spawn
all, send all, collect, verify, review, adjudicate — so that following
it is checkable against the tool calls rather than a matter of recall.

Two steps carry the load. Spawn and send are separate on purpose:
folding them into one loop is what silently serialises work that was
meant to fan out. And review is now its own step ahead of the merge
rather than a clause inside it, because the two have opposite owners —
reviewers fan out over the diff (never the implementer of the scope
they review, and briefed from the diff rather than the author's
rationale, which carries the same blind spot), while adjudication, the
merge and teardown stay with the primary. Merging on a reviewer's word
is delegating the gate by proxy, so the step says so outright.

Nothing is dropped. The six bullets that trailed the tool table are
relocated into the step that owns each — profile explicitness into
spawn, playbook naming and self-containment into send, claim
verification into its own step, the ~60s blocking-send cap into a note
beneath the flow — and the table stays as the intent→tool lookup.

The wiki pointer moves with it. The block is canonical only if its
template matches byte for byte, so the template was produced by
splicing the block out of CLAUDE.md rather than by editing it in
parallel, and the sync check the repo documents passes. Bumping the
pointer in the same commit keeps charter and template versioned
together, as CB-517 did.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Kw1FosEt3Noix5GG9wJ2r
kevin closed this pull request 2026-08-04 17:38:09 +02:00
Some checks are pending
CI / build (pull_request) Successful in 1m23s

Pull request closed

Sign in to join this conversation.