Repository navigation
Description
The long program path (research → triage → plan program → plan implementation → accept → activate) likely does not work end to end. Three interlocking defects, all in workflows/squad.md. They should be fixed together — fixing any one alone leaves the path broken.
Defect 1 — accept requires an artifact the program path never produces
## skill: squad-plan-accept (~L633), Step 1 hard-requires a plan artifact. The program path produces a program artifact and has no plan at that point.
So accept fails on the very path it exists to serve.
Defect 2 — implement dispatches epics as if they were tasks
plan activate creates a three-level hierarchy:
Root
└── Epics
└── Tasks
But /squad implement dispatches only immediate children. Running implement on the root therefore dispatches epics as worker issues rather than tasks — each worker receives a unit of work far too large to implement in one PR.
Defect 3 — validate runs too late
Current order:
research → triage → plan program → plan implementation
→ accept scope → plan validate → accept implementation → activate
plan validate must move before both accepts, so the complete package is challenged before anything is locked. Tracked jointly with the validate-teeth issue.
Also worth doing: SpecKit vocabulary alignment
The sequence doesn't map onto SpecKit's specify / plan / tasks / implement vocabulary, which is the mental model of the target audience. plan implementation is effectively the tasks step — a /squad tasks alias would ease adoption at near-zero cost.
Where the code lives
All in workflows/squad.md:
| Skill | Approx. line |
|---|---|
squad-plan |
L603 |
squad-plan-accept |
L633 |
squad-plan-implementation |
L824 |
squad-plan-validate |
L861 |
## heading inside a ## skill: block. The block closes implicitly at the next H2 and everything up to the next skill marker is silently discarded — ~29 KB was lost this way once, and it still compiled clean. Skills use #####. Run npx vitest run test/gh-aw-quality.test.ts before pushing; it asserts zero discarded bytes.
Origin
Found by Flight during architectural review following the 2026-08-19 live end-to-end run.
Goal and Success Criteria
Added 2026-08-20 during wave:1 triage. One criterion per defect; each is independently falsifiable.
Goal: Fix all three structural defects in workflows/squad.md so that /squad plan (program path) → /squad accept → /squad activate → /squad implement on a 3-level epic produces correct task dispatch without manual correction.
SC-1 — Defect 1: accept works on program artifacts, not just plan artifacts.
squad.md's squad-plan-accept Step 1 uses a dynamic lookup that resolves both plan and program artifact types. Fails if squad.md:~L654 still contains a literal identifier that only matches the basic plan-path artifact.
SC-2 — Defect 2: Epic Dispatch dispatches tasks, not epics.
The Epic Dispatch section (~L529-554) dispatches only leaf tasks — children that have no open sub-issues of their own. Fails if the dispatch step iterates over direct children of the root without filtering out intermediate Epics (items that themselves have children).
SC-3 — Defect 3: Validate runs before both accept steps.
The squad-plan-validate section appears before both squad-plan-accept and squad-plan-implementation-accept in the workflow definition ordering. Fails if validate (~L867) still appears after accept-scope in the file.
Activity
bradygaster commentedon Aug 20, 2026
Flight sequencing note — revised 2026-08-20.
Wave: 3.
Depends on:
squad:{member}work instead of generic roles.Blocks:
Safe to run in parallel with: #1770 and #1760. Avoid parallelizing with #1759 or #1757.
Why / evidence: this is the broadest
workflows/squad.mdedit: implement/epic dispatch is lines 533-575; legacy plan accept is lines 641-689; implementation planning is lines 832-867; validation/acceptance order is lines 869-960. #1759 overlaps the owner-assignment area in lines 832-863, and #1757 overlaps the validation/acceptance area in lines 869-960. #1772 is separate file work inworkflows/squad-implement-worker.mdlines 202-205 and 216-265, but without it a live "end to end" proof can silently stop after merge.Fix long-path planning lifecycle defects + guard empty dispatch probe…
fix(gh-aw): refill dispatch slots from the root, not the parent epic (#…