Why this matters
The obvious delegation pattern — N parallel workers, one results directory, one disjoint output file each — is the one coord/ledger.rs:587 forbids: any write-roots overlap between active claims is rejected, including when their exact_files are disjoint. Models burn whole rounds discovering this: in one observed session, six read-only workers each writing their own file under tmp/anomaly/ were all refused, the model retried all five spawns identically, failed again, and only on the third round manually split into tmp/anomaly_w2…w6/ — eleven wasted spawns. Today's parallel wave work pays the same tax: our planner and designer both had to be given separate root directories for what is logically one output area.
Current behavior
crates/tui/src/tools/subagent/coord/ledger.rs:587 — the overlap check compares roots only; disjoint exact_files under a shared root still collide. The error text steers toward per-worker sibling roots, which the model must discover by trial and error.
Desired behavior
- Two active claims whose
exact_files are disjoint may share a write root (the files are the real exclusion boundary).
- Alternatively (or additionally), a parent-declared shared root can auto-suffix per-worker subroots so the pattern needs no trial and error.
Acceptance criteria
Related
Why this matters
The obvious delegation pattern — N parallel workers, one results directory, one disjoint output file each — is the one
coord/ledger.rs:587forbids: any write-roots overlap between active claims is rejected, including when theirexact_filesare disjoint. Models burn whole rounds discovering this: in one observed session, six read-only workers each writing their own file undertmp/anomaly/were all refused, the model retried all five spawns identically, failed again, and only on the third round manually split intotmp/anomaly_w2…w6/— eleven wasted spawns. Today's parallel wave work pays the same tax: our planner and designer both had to be given separate root directories for what is logically one output area.Current behavior
crates/tui/src/tools/subagent/coord/ledger.rs:587— the overlap check compares roots only; disjointexact_filesunder a shared root still collide. The error text steers toward per-worker sibling roots, which the model must discover by trial and error.Desired behavior
exact_filesare disjoint may share a write root (the files are the real exclusion boundary).Acceptance criteria
write_roots: ["tmp/scan"]and disjointexact_filesboth start and both write without contention errorsexact_filesis still refusedRelated
release; it does not, and the liveness filter says it could not #6272 (the contention error's remedy text does not namereleasealthough the tool description claims it does — verified against ledger.rs:587's message)