Skip to content

Strengthen /squad research into a real spec artifact #1756

Closed

Description

@bradygaster

Why this matters

Research is load-bearing and already the strongest step in the SDLC chain. In a live end-to-end run against a real .NET repo it independently caught:

  • EntryItem has no ID field — Link is the de facto key
  • Dead, unwired EF Core / SQL package references in Frontend.csproj
  • That reusing the existing FeedSource blob provider avoids introducing a new AppHost storage resource
  • A self-contradiction in the user's own epic text

That is genuine analytical value, not summarization.

The problem

/squad plan consumes the latest research artifact as PRIMARY context. But the only quality floor on research output today is a ≥200 character length check. Weak research therefore silently degrades every downstream step — plan, validate, implement — with nothing to catch it.

Gaps toward being a real spec

The current output is prose. To function as a spec that later steps can cite, it needs:

  • Evidence/source table — every claim tied to a file, line, or command output
  • Explicit goals and non-goals
  • Load-bearing assumptions section — what invalidates the analysis if untrue
  • Open decisions list — things a human must resolve
  • Acceptance-test framing — how we would know the work succeeded
  • Traceability IDs so /squad plan and /squad plan validate can reference specific findings

Audience

This is aimed squarely at the SpecKit / spec-driven-development crowd. The value proposition is that Squad produces a real, reviewable spec artifact — not that it merely dumps context into the next prompt.

Where the code lives

workflows/squad.md, the ## skill: squad-research block (~L569).

⚠️ Never put a ## heading inside a ## skill: block. The block closes implicitly at the next H2, and everything up to the next skill marker is silently discarded — this dropped ~29 KB once and still compiled clean. Skills use #####. Run npx vitest run test/gh-aw-quality.test.ts before pushing; it has a zero-discarded-bytes assertion that catches this.

Origin

User directive, 2026-08-19 — recorded in .squad/decisions/inbox/coordinator-research-is-load-bearing.md.

Scope Narrowed — Structural Contract Only (2026-08-20 triage)

Procedures' triage verdict: ship the structural contract pre-E2E; defer insight tuning until E2E results exist.

In scope: Required sections, Rn traceability IDs, citation token per evidence row, replacing the ≥200-char floor at workflows/squad.md:605.

Out of scope (→ #1757, deferred): The judgment half — "a well-formatted bad plan should FAIL." That requires a good/bad golden corpus we don't have until after the E2E series. Do not conflate these axes.

Goal and Success Criteria

Goal: Replace the ≥200-char floor at workflows/squad.md:605 with a structural schema that asserts the research artifact's required sections are present, so downstream /squad plan can reference specific evidence entries by traceability ID.

SC-1 — Character-count floor removed.
workflows/squad.md:605 (or its replacement) no longer enforces ≥200 chars as the sole quality check on research output. Fails if the only quality gate on research artifacts is still a character count.

SC-2 — Required sections declared in the skill spec.
The squad-research skill block explicitly requires these five elements: (a) an evidence table with at least one row, each row containing a source citation token; (b) a goals-and-non-goals section; (c) a load-bearing assumptions section; (d) an open decisions section; (e) at least one Rn traceability ID. Fails if any of those five elements is not named as required in the skill definition.

SC-3 — Test asserts section presence structurally.
test/gh-aw-quality.test.ts contains a test that parses a research artifact fixture and asserts each of the five required sections is present as a named heading — one assertion per section. Fails if the only coverage is a substring check or a single combined assertion. A substring check for R1 does not satisfy this criterion.

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: #1759. Also safe with #1748, #1770, #1760, #1772, #1761, #1762, and #1768.

    Why / evidence: current workflows/squad.md places squad-research at lines 577-609. #1759's squad-plan hunk is lines 611-637 and its squad-plan-implementation owner text is in lines 832-863, so #1756 and #1759 are adjacent/disjoint, not overlapping. The inline-skill extractor tests de-risk same-file edits: test/gh-aw-quality.test.ts lines 672-690 document the silent-discard hazard, lines 806-818 model implicit H2 closure, and lines 857-865 assert zero discarded bytes.

  2. added
    gh-awGitHub Agentic Workflows integration
    triagedIssue has been triaged
    wave:2-soonWave 2 — next 2-4 weeks
    and removed
    enhancementNew feature or improvement
    on Aug 20, 2026
  3. added
    squadSquad triage inbox — Lead will assign to a member
    on Aug 20, 2026
  4. added
    wave:1-nextWave 1 — immediate next sprint
    and removed
    wave:2-soonWave 2 — next 2-4 weeks
    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:featureNew capabilitywave:1-nextWave 1 — immediate next sprint

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions