Repository navigation
Description
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:
EntryItemhas no ID field —Linkis the de facto key- Dead, unwired EF Core / SQL package references in
Frontend.csproj - That reusing the existing
FeedSourceblob 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 planand/squad plan validatecan 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).
## 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
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: #1759. Also safe with #1748, #1770, #1760, #1772, #1761, #1762, and #1768.
Why / evidence: current
workflows/squad.mdplacessquad-researchat lines 577-609. #1759'ssquad-planhunk is lines 611-637 and itssquad-plan-implementationowner 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.tslines 672-690 document the silent-discard hazard, lines 806-818 model implicit H2 closure, and lines 857-865 assert zero discarded bytes.Fix long-path planning lifecycle defects + guard empty dispatch probe…