Repository navigation
Conversation
…ed unit started or parked Only a child finishing and a PR watch wake an Orchestrate coordinator on T3. A coordinator that closed a round and ended its turn with unblocked units unassigned and nothing running stayed idle until a person wrote: three times in one day, once for 5 h. The anchored rule after "Call no scripts, ..." tells the coordinator to start a worker for every unit that is not blocked, or to record in notes.md why it waits and what will wake it, and to report a turn that leaves work with nothing running as a stop. Fixes chhoumann#74
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A coordinator running Orchestrate on T3 must keep the program moving between human turns. Only a child finishing and a PR watch wake its thread. A coordinator that closes a round and ends its turn with unblocked units unassigned, and nothing running or watched, stays idle until a person writes. #74 logs this three times in one day, once for 5 hours.
What changed
One anchored insert in
tools/substitutions.json, regenerated intoplaybooks/orchestrate.md:Evidence
The incident in #74, from the coordinator thread's message log
A standing program on
main: one coordinator on claude-opus-5-5, six owner threads (one per repository), 33 units, run in correction rounds over several days.This is the shape the rule targets: a round closed, unblocked units unassigned, a turn ended with nothing running, and the stop reported as a finished round. Under the new text, the unblocked item gets a worker, or a written reason to wait. Here none existed, because the coordinator itself called it unblocked. The reply would then report a stop. This is inferred from the text and was not replayed, because the program is in a private repository.
A/B on synthetic programs
Each arm is a fresh root coordinator thread on claude-opus-5-5 (effort high), reading the playbook from
/tmp/pstack-old(main) or/tmp/pstack-new(this branch). The fixture is atextkitrepo plus a tracker with two corrections (R1a, R1b), two unblocked engineering items (E1, E2) and one item blocked on the operator (Q1). There are 2 runs per arm. Transcripts show every coordinator read only its assigned playbook, with no reads of an installed copy.Run 1. The operator says "Run correction round 1 (R1a and R1b)."
notes.mdsays why E1/E2 wait and what wakes themRun 2. The same fixtures are reset. The operator says "Work the tracker. Run correction round 1 (R1a and R1b) first."
What this shows, and what it does not:
mainarm never stalled, so this A/B does not show that the rule prevents the stall.notes.md2/2 times, and the old arm 0/2. In the new arm the reply also reported the idle state.bun tools/sync.mjs … --dry-runreports no FAIL.bun tools/generate.mjs --checkpasses.GIT_CONFIG_GLOBAL=/dev/null bun test tests/ --timeout 30000gives 561 pass, 0 fail.Merge Danger
Door: two-way. It is one prose rule in one playbook, and a revert restores it.
Blast Radius: small. Only Orchestrate coordinators read it. The risk is a coordinator that starts in-scope work more eagerly, which run 2 shows the old text already does.
Refs #74