Add /orchestrate: automate the solve-review-land loop for one epic (v2.19.0)#4
Merged
Conversation
…2.19.0) New skill /orchestrate <epic-id> drives /solve -> mandatory review -> land across a whole epic's stories, relocating the human-in-the-loop gate from "per story" to "once, at one final PR." Landings happen on an epic/<id> integration branch (never master directly) via bd's own swarm/merge-slot primitives, so nothing before that PR is final. Requires a planning model, same Model Guard as /case and /refine, since it makes unsupervised judgment calls throughout the run. - New skill: orchestrate/SKILL.md (v1.0.0) + agents/openai.yaml (slash-only, mirroring /solve and /evaluate). - /evaluate gains --review [effort] --unattended: same frontier-pinned review-and-apply as --review, but skips the human amend-confirm for an orchestrated run on a provisional branch (1.9.0 -> 1.10.0). - Plugin/marketplace 2.18.0 -> 2.19.0 across all four manifests; descriptions and tier annotations updated everywhere /orchestrate belongs. - tests/model-guard.sh extended to also trial /orchestrate on Haiku (adds an epic/* branch check to the authored-detection) - 27/27 trials passed live, confirming the new guard stops a budget model exactly like /case and /refine's. - CLAUDE.md, README.md, CHANGELOG.md, session-primer.md updated to reflect the new command and its frontier-model gate. Design went through two Fable-tier reviews before implementation (epic branch as the real gate, reusing /evaluate's existing conflict-resolution gate instead of reinventing it) plus planning-time research that found bd already ships the swarm/merge-slot primitives this design needs. The Model Guard requirement was added after, at the user's direction, for parity with /case/refine. Co-Authored-By: Claude Sonnet 5 <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.
Summary
/orchestrate <epic-id> [--dry-run]drives/solve→ mandatory review → land across a whole epic's stories, so the human stops running/solve→/evaluate --review→/evaluate --approveone story at a time and instead reviews one pull request at the end.epic/<id>integration branch (nevermasterdirectly), via bd's ownswarm/merge-slotprimitives —bd swarm statusfor live parallel readiness,bd merge-slotto serialize the one step (landing) that touches the shared main worktree. Nothing is final until the run's own PR,epic/<id>→<origin>, merges./evaluategains--review [effort] --unattended— same frontier-pinned review-and-apply as--review, but skips the human amend-confirm, scoped to an orchestrated run on a provisional branch, never for approving straight to trunk./orchestraterequires a planning model, the same Model Guard/case//refinecarry — it makes unsupervised judgment calls for most of a run (pre-flight go/no-go, stalled-story triage, the final PR's summary), added after the initial design at the user's direction for parity./orchestratenever authors/revises a contract itself (a spec-gap or scope gap found mid-run is queued for the final report, never acted on via/case//refine), and never touches this project's own version manifests/changelog per-story — it performs the one epic-level bump itself, once, at the end, which removes the one class of conflict this repo's own history shows is near-guaranteed.tests/model-guard.shextended to also trial/orchestratelive on Haiku (adds anepic/*-branch check to its authored-detection alongside the existing.case.md/.beadschecks) — 27/27 trials passed, confirming the new guard stops a budget model exactly like/case's and/refine's.2.18.0→2.19.0across all four manifests;/evaluate1.9.0→1.10.0;/orchestratenew at1.0.0.CLAUDE.md,README.md,CHANGELOG.md, andsession-primer.mdall updated.This design went through two rounds of review by a Fable-tier model before implementation — the first caught that autonomously running
/evaluate --approveper story needs a reversible integration branch with a real gate at the end to not contradict this repo's human-loop principle, and that "judge whether review is needed" has no rubric (fixed: review is now always mandatory, effort taken from the story's ownComplexitylabel); the second found that/evaluate's own conflict-resolution gate already implements what the design was about to reinvent. Planning-time research on top of both then found bd itself already ships theswarm/merge-slotprimitives this needed, so/orchestrateended up thinner than any draft that preceded it.Test plan
tests/rubrics-sync.sh(no flag) — no drift, confirmed.json.load) after version bumps.tests/model-guard.shrun live against Haiku — 27/27 trials passed (5/casedescriptions, 2/refine, 2/orchestrateinvocations × 3 trials each), confirming all three Model Guards stop a budget model with no side effects./case(2–3 stories, at least one dependency edge), then runbd swarm validate/bd swarm statusdirectly against it to confirm they behave as/orchestrate's SKILL.md assumes./orchestrate <epic-id> --dry-runon that epic — confirm pre-flight validation/reporting only, no git/bd writes./orchestrate <epic-id>for real — confirmepic/<id>created, stories dispatched (parallel where the graph allows), each lands as its own commit, a deliberately-conflicting pair of stories triggers the "ambiguous" human prompt during landing (not a silent guess), and the final PR opens against the correct base with one version-bump commit plus one commit per story./evaluate <id> --review high --unattendedoutside the orchestrated flow: applied diff shown, no confirm blocks, auto-amends — then confirm plain/evaluate <id> --review(no--unattended) still stops for the human exactly as before.🤖 Generated with Claude Code