Repository navigation
Description
Observed in the live e2e
/squad plan assigned work owners as generic role strings — lead, devrel, reviewer — rather than the actual cast that had been merged into .squad/team.md for that repo: Keaton, McManus, Fenster, Hockney, Kint.
Why this matters
Persistent cast identity and routing is one of the core differentiators over just handing an issue to the Copilot coding agent. If the plan step discards the cast and falls back to generic roles, that value evaporates precisely at the moment the user is reviewing the plan and forming an impression of what Squad does.
It also breaks routing downstream: a task owned by lead doesn't map to a squad:{member} label the way a task owned by keaton does.
Investigation
Determine whether the plan skill:
- (a) reads
.squad/team.mdat all, or - (b) falls back to hardcoded generic role names, or
- (c) reads it but only uses the
Rolecolumn while ignoring the cast name
Then make owner assignment use cast names, with the role as secondary context — e.g. Keaton (Lead) rather than bare lead.
Scope
Small and isolated. Does not depend on the long-path repair or the validate work, and can land independently.
Where the code lives
workflows/squad.md, the planning skill blocks — ## skill: squad-plan (~L603) and ## skill: squad-plan-implementation (~L824).
⚠️ Never put a ## heading inside a ## skill: block — it closes implicitly at the next H2 and everything up to the next skill marker is silently discarded. Skills use #####. Run npx vitest run test/gh-aw-quality.test.ts before pushing.
Goal and Success Criteria
Added 2026-08-20 during wave:1 triage.
Goal: Ensure the Owner/Agent column in every plan artifact always contains a cast name from .squad/team.md — not a generic role string — so that downstream squad:{owner} label routing works correctly.
SC-1 — squad-plan Step 3 requires cast names.
squad.md's squad-plan Step 3 (~L637) includes explicit instruction that the Owner column value MUST be a cast name from .squad/team.md, not a generic role string. Fails if that step contains no such instruction (i.e., a model could emit lead or devrel and satisfy the current spec).
SC-2 — squad-plan-implementation Steps 2 and 4 require cast names.
Both steps (~L851 and L863) include the same cast-name requirement for the Agent column. Fails if either step omits the instruction, leaving role strings as a valid output.
SC-3 — Test asserts the column value structurally.
test/gh-aw-quality.test.ts contains a test that parses the Owner/Agent column value from a plan output and asserts it is a known cast name from .squad/team.md (not a bare role string). Fails if no structural assertion on the column value exists — a column-header presence check does not satisfy this.
Activity
bradygaster commentedon Aug 20, 2026
Flight sequencing note — revised 2026-08-20.
Wave: 2.
Depends on: nothing in this stream.
Blocks:
Safe to run in parallel with: #1756. Also safe with #1748, #1770, #1760, #1772, #1761, #1762, and #1768.
Why / evidence: current
workflows/squad.mdplan output is lines 611-637 and implementation planning/owner output is lines 832-863. #1756 is disjoint at lines 577-609. #1758 overlaps the implementation-planning region and changes the long-path flow, so keep #1759 → #1758 serialized.test/gh-aw-quality.test.tslines 672-690 and 857-865 cover the same-file inline-skill extraction hazard.Fix long-path planning lifecycle defects + guard empty dispatch probe…