docs/issue-driven-orchestration.md
Status: stable workflow guide Audience: developers who track work in GitHub Issues, Linear, Jira, or similar issue trackers and want to drive AI-assisted implementation through GSD's existing primitives.
A recipe for combining commands GSD already ships into an issue-tracker → workspace → plan/execute → verify/review → PR loop. It is documentation only. No new commands, no daemon, no tracker integration — every command referenced below already exists in GSD today.
The shape is inspired by OpenAI's open-source Symphony orchestration reference (repository). GSD does not vendor or wrap Symphony. The orchestration concepts map cleanly onto primitives GSD already exposes; this guide just spells the mapping out so you can adopt the pattern without writing glue code or bypassing GSD's safety gates.
GSD has the building blocks for issue-driven AI development —
/gsd-workspace --new, /gsd-manager, /gsd-autonomous, /gsd-verify-work,
/gsd-review, /gsd-ship, plus STATE.md and the phase artifact suite
— but no guide that walks through how to drive them from a single tracker
issue without writing custom orchestration scripts. Without that guide
the failure modes are:
/gsd-manager or /gsd-autonomous even when their work pattern
fits.claude invocations, bypassing STATE.md, the phase
manifest, and the verification gates.This guide makes the canonical loop discoverable.
Each row maps a Symphony-style orchestration concept to the GSD primitive that already serves it. Use this table as a translation key when reading Symphony docs, blog posts, or third-party orchestration write-ups.
| Symphony concept | GSD primitive |
|---|---|
WORKFLOW.md (top-level intent) | ROADMAP.md (project intent), STATE.md (live status), phase CONTEXT.md (per-phase scope), phase PLAN.md (executable steps) |
| One isolated agent workspace per task | /gsd-workspace --new --strategy worktree |
| Agent dispatch and concurrency | /gsd-manager (interactive dashboard), /gsd-autonomous (unattended) |
| Per-phase plan and discuss steps | /gsd-discuss-phase → /gsd-plan-phase → /gsd-execute-phase |
| Proof-of-work / test evidence | /gsd-verify-work (UAT.md persisted across /clear) |
| Adversarial review | /gsd-review (cross-AI peer review of plans) |
| Human merge gate | /gsd-ship (creates PR, optional code review, prepares merge) |
| Follow-up capture | /gsd-note, /gsd-plant-seed, /gsd-new-milestone, or a manually opened tracker issue |
| Concurrency control | Manager / background-agent semantics (no always-on poller) |
The mapping is one-way: GSD owns the safety gates (verification, human review, explicit confirmation for follow-up creation). Symphony's "continuous orchestration" framing is intentionally not adopted — see Non-goals.
The canonical issue → PR loop, written so it can run from a single tracker issue end-to-end. Replace bracketed placeholders before running.
ROADMAP.md, select it. If not, run /gsd-new-milestone (for a new
milestone of related issues) or open a phase via /gsd-add-phase /
/gsd-insert-phase. Capture the tracker issue URL in the phase's
CONTEXT.md so traceability survives compaction./gsd-workspace --new --strategy worktree <slug> to spin up a git
worktree with an independent .planning/ directory. The worktree is
the safety boundary: any exploration, partial commits, or aborted
plans stay outside main./gsd-discuss-phase to clarify ambiguities,
/gsd-plan-phase to produce PLAN.md, and either /gsd-manager
(interactive dashboard) or /gsd-execute-phase / /gsd-autonomous
(unattended) to implement. Avoid driving raw claude invocations
from outside GSD — that bypasses STATE.md updates and the phase
manifest./gsd-verify-work to walk the user
through UAT against the phase's acceptance criteria. Tests,
screenshots, log captures, and config diffs are all recorded in
UAT.md, which persists across /clear and feeds gaps into
/gsd-plan-phase --gaps when verification surfaces missed scope./gsd-review to get
adversarial peer review of the plan from independent AI CLIs (catches
blind spots model-by-model), then /gsd-ship to open the PR with a
rich body assembled from the planning artifacts. Both gates require a
human decision before anything reaches the remote./gsd-note for inline
notes, /gsd-plant-seed for ideas worth a future phase, or
/gsd-new-milestone for a coherent group of follow-ups. Creating a
tracker issue from a discovered follow-up requires explicit user
confirmation — GSD does not post to remote trackers automatically.When the PR merges, the loop closes. Auto-close keywords in the PR body
(Closes #NNN / Fixes #NNN) close the tracker issue at merge time.
The loop is safe because four invariants hold by construction:
/gsd-workspace --new
worktree, so partial work, aborted plans, and exploratory commits
never touch main. gsd-local-patches/ is the recovery surface if a
worktree's hand-edits need to come back across an update./gsd-review and /gsd-ship both stop for
human approval. There is no auto-merge and no auto-PR-from-execution
path. If you want to remove the human gate for a specific repository,
that is your branch-protection / merge-queue policy decision, not
something GSD opts into for you./gsd-verify-work's UAT.md must record
evidence before /gsd-ship is run. The recommended discipline is to
treat verification_failed as a blocker even when the implementation
looks correct — the failure usually surfaces a missed acceptance
criterion, not a flaky test.If any of these invariants is bypassed (e.g. running claude directly
against the worktree, skipping /gsd-verify-work, or scripting issue
creation through the tracker API without user confirmation), the
guarantees of this guide do not apply.
This guide deliberately does not propose any of the following. They are listed here so future contributors don't re-litigate them in code review:
CONTEXT.md. GSD has no opinion about which
tracker you use, or whether you use one at all./gsd-autonomous, the verification and review gates
still fire. The "autonomous" label refers to phase-to-phase
progression, not to skipping human approval.If maintainer experience with this loop justifies it, a separate approved-enhancement could later add a minimal tracker bridge:
UAT.md evidence as a comment on the source issue./gsd-plant-seed output.Each of those would be its own enhancement proposal because each adds integration surface and ongoing maintenance burden. They are out of scope for this guide.
/gsd-*
commands.STATE.md mechanics.