Skip to content

Add /orchestrate: automate the solve-review-land loop for one epic (v2.19.0)#4

Merged
codxse merged 1 commit into
masterfrom
orchestrate-epic-loop
Jul 18, 2026
Merged

Add /orchestrate: automate the solve-review-land loop for one epic (v2.19.0)#4
codxse merged 1 commit into
masterfrom
orchestrate-epic-loop

Conversation

@codxse

@codxse codxse commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • New skill /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 --approve one story at a time and instead reviews one pull request at the end.
  • Landings happen on an epic/<id> integration branch (never master directly), via bd's own swarm/merge-slot primitives — bd swarm status for live parallel readiness, bd merge-slot to serialize the one step (landing) that touches the shared main worktree. Nothing is final until the run's own PR, epic/<id><origin>, merges.
  • /evaluate gains --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.
  • /orchestrate requires a planning model, the same Model Guard /case//refine carry — 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.
  • /orchestrate never 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.sh extended to also trial /orchestrate live on Haiku (adds an epic/*-branch check to its authored-detection alongside the existing .case.md/.beads checks) — 27/27 trials passed, confirming the new guard stops a budget model exactly like /case's and /refine's.
  • Plugin/marketplace bumped 2.18.02.19.0 across all four manifests; /evaluate 1.9.01.10.0; /orchestrate new at 1.0.0. CLAUDE.md, README.md, CHANGELOG.md, and session-primer.md all updated.

This design went through two rounds of review by a Fable-tier model before implementation — the first caught that autonomously running /evaluate --approve per 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 own Complexity label); 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 the swarm/merge-slot primitives this needed, so /orchestrate ended up thinner than any draft that preceded it.

Test plan

  • tests/rubrics-sync.sh (no flag) — no drift, confirmed.
  • All 4 manifest JSON files validated (json.load) after version bumps.
  • tests/model-guard.sh run live against Haiku — 27/27 trials passed (5 /case descriptions, 2 /refine, 2 /orchestrate invocations × 3 trials each), confirming all three Model Guards stop a budget model with no side effects.
  • Author a small real epic with /case (2–3 stories, at least one dependency edge), then run bd swarm validate/bd swarm status directly against it to confirm they behave as /orchestrate's SKILL.md assumes.
  • Run /orchestrate <epic-id> --dry-run on that epic — confirm pre-flight validation/reporting only, no git/bd writes.
  • Run /orchestrate <epic-id> for real — confirm epic/<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.
  • Manually verify /evaluate <id> --review high --unattended outside 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

…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>
@codxse
codxse merged commit d9b1324 into master Jul 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant