🐛 Fix parallel task groups finishing without commits - #6
Open
velles wants to merge 2 commits into
Open
Conversation
In a parallel wave the orchestrator never committed. Two instructions cancelled each other out: commit each group after verifying it, but ask before staging when uncommitted changes exist outside the group's scope — which in a parallel wave is every sibling group still in flight. With no way to attribute the mixed working tree to a group either, deferring was always the safe reading, so runs finished with the work uncommitted and still reported success. - State the commit invariant up front in orchestrated execution: a group is incomplete until its commit exists, commits are never batched, and no wave is dispatched while the previous one is uncommitted. - Require a clean baseline before each wave, so every dirty path afterwards is attributable. This is the only place the don't-sweep-up rule is asked, and carried-over dirt is recorded once as a run baseline instead of re-prompting each wave. - Give staging an explicit procedure per wave shape, with a staged-set check before commit and a commit receipt in the group report. - Make executors report an exhaustive changed-file manifest, written into group-N-updates.md in parallel waves — plans go stale, and a path the plan never listed was silently going uncommitted. - Close each wave on a clean tree; unclaimed paths are amended into the owning commit or surfaced, never rolled into the next group's commit. - Finalize now refuses to call a run delivered with work still in the tree. Ten assertions in test_skill_content.sh pin the gate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ource Parallel waves were collapsing at execution time. step2 declared groups disjoint on source files, then step3 validated against the real plans and found the test layer wasn't disjoint at all — every group had repaired assertions in the same few project-wide suites — and serialized them. A five-group wave became three sequential ones. step2 now scopes the surface that actually contends: - Research subagents report the shared test surface — cross-cutting suites, snapshots, fixtures, test-utils — and which of them the feature's changes will invalidate. - Groups are carved against that surface. New tests never contend; stale assertion repairs in pre-existing shared suites do. Resolve by splitting the suite, giving it a single owner, or serializing — in that order. - The resolution is recorded as a file-ownership rule in the Overview, covering shared test suites and fixtures rather than source files alone, and waves are justified across both surfaces. step3 stops manufacturing collisions of its own: - Wave disjointness no longer counts tasks.md or agents-context/. Parallel executors never write them — the orchestrator applies each group's updates at commit time — so serializing over a shared concept file costs real parallelism to avoid a conflict that cannot occur. - Proposed edits to existing context files must be anchored rather than whole-file, so two groups' updates to one concept file compose instead of the second discarding the first. This is what made the exemption safe. - Every serialization now names the file, the groups, and the reason; unexplained ones read as dependencies and get copied into the next spec. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
✨ What's New
🧪 Test Plan
🤖 Generated with Claude Code