Skip to content

Plan owners use generic roles instead of cast names #1759

Closed

Description

@bradygaster

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.md at all, or
  • (b) falls back to hardcoded generic role names, or
  • (c) reads it but only uses the Role column 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

  1. bradygaster commented on Aug 20, 2026

    @bradygaster
    CollaboratorAuthor

    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.md plan 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.ts lines 672-690 and 857-865 cover the same-file inline-skill extraction hazard.

  2. added
    gh-awGitHub Agentic Workflows integration
    type:bugSomething broken
    triagedIssue has been triaged
    wave:1-nextWave 1 — immediate next sprint
    and removed
    bugSomething isn't working
    on Aug 20, 2026
  3. added
    squadSquad triage inbox — Lead will assign to a member
    on Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    gh-awGitHub Agentic Workflows integrationpriority:p1This sprintsquadSquad triage inbox — Lead will assign to a membertriagedIssue has been triagedtype:bugSomething brokenwave:1-nextWave 1 — immediate next sprint

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions