Files
DonchitosandClaude Opus 5.5 be8993bbc5 Release 1.1.3 — long skills keep their later steps
Fix release for 1.1.2: the 14 longest skills keep their later phases
after a compaction, a question nobody answered is never taken as an
answer, settings read the same from a subfolder, the commit check works
for a project in a subfolder of a larger repository, every skill opens
with a title, and the shipped allow rules no longer approve deleting a
branch or writing files without asking. Details in CHANGELOG.md; upgrade
steps in UPGRADING.md (v1.1.2 → v1.1.3).

Refs #83
Refs #133

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0185en4t76fPn7315q4c3nko
2026-10-08 17:52:48 +11:00

5.8 KiB

/architecture-review — Phases 3 and 3b: Traceability Matrix and Story Linkage

Part of /architecture-review. SKILL.md names when to read this file; the settings it resolved and the rules under its later headings still apply here.

Phase 3: Build the Traceability Matrix

In this file:

  • Step 3b-1 — Load stories
  • Step 3b-2 — Load test files
  • Step 3b-3 — Build the extended RTM

For each technical requirement extracted in Phase 2, search the ADRs:

  1. Use the ADRs already loaded in Phase 1b — do not re-read them. Extract each ADR's "GDD Requirements Addressed" section from what is already in context. (If Phase 1b ran in a mode that did not load every ADR, Grep pattern="## GDD Requirements Addressed" glob="docs/architecture/adr-*.md" output_mode="content" -A 15 fills the gap without a full re-read.)
  2. Check if it explicitly references the requirement or its GDD
  3. Check if the ADR's decision text implicitly covers the requirement
  4. Mark coverage status:
Status Meaning
✅ Covered An Accepted ADR explicitly addresses this requirement
🟡 Covered (Proposed) An ADR addresses it, but that ADR is still Proposed
⚠️ Partial An ADR partially covers this, or coverage is ambiguous
❌ Gap No ADR addresses this requirement
❓ Not assessed The ADR is unreadable, or has no ## Status section

Read each ADR's ## Status before marking coverage — an unaccepted decision is not coverage. If ✅ meant only that an ADR addresses this, with no status qualification, a requirement covered entirely by Proposed ADRs would count as covered and this review could return PASS: All requirements covered over an architecture nobody had accepted. Four skills downstream (create-control-manifest, create-epics, create-stories, gate-check) require Accepted, so a PASS on that basis sends work forward that every one of them will refuse.

🟡 is not a pass state: it caps the verdict at CONCERNS, and names the route out — /architecture-decision accept ADR-NNNN. That route is the only thing that moves an ADR to Accepted; without it, grading Proposed as covered would be the only option, which is why it must never be graded so.

Build the full matrix:

## Traceability Matrix

| Requirement ID | GDD | System | Requirement | ADR Coverage | Status |
|---------------|-----|--------|-------------|--------------|--------|
| TR-combat-001 | combat.md | Combat | Hitbox detection < 1 frame | ADR-0003 | ✅ |
| TR-combat-002 | combat.md | Combat | Combo window timing | — | ❌ GAP |
| TR-inventory-001 | inventory.md | Inventory | Persistent item storage | ADR-0005 | ✅ |

Count the totals: X covered, Y partial, Z gaps.


Phase 3b: Story and Test Linkage (RTM mode only)

Skip this phase unless the argument is rtm or full with stories present.

This phase extends the Phase 3 matrix to include the story that implements each requirement and the test that verifies it — producing the full Requirements Traceability Matrix (RTM).

Step 3b-1 — Load stories

Glob production/epics/**/*.md (excluding EPIC.md index files) to establish the denominator. Then collect the fields with targeted section greps, not a full read of each story — the same two-grep form /test-evidence-review uses for this identical extraction:

Grep pattern="## Test Evidence" glob="production/epics/**/story-*.md" output_mode="content" -A 8
Grep pattern="TR-" glob="production/epics/**/story-*.md" output_mode="content"
  • TR-ID — from the second grep.
  • Test file path — under ## Test Evidence, captured by the first grep's -A 8.
  • Status — from the story header; add Grep pattern="^> \*\*Status\*\*" if not already captured.
  • Story path and title — from the file name and path; no read at all.

Full-read a story only when its Test Evidence section is missing or ambiguous.

Step 3b-2 — Load test files

Glob the engine's test root (.claude/docs/directory-structure.md): Godot tests/unit/**/*_test.* and tests/integration/**/*_test.*; Unity Assets/Tests/**/*Tests.cs; Unreal Source/*/Private/Tests/**/*.cpp. With no engine configured, say the test index could not be built rather than reading an empty glob as "no tests". Build an index: system → [test file paths].

For each test file path from Step 3b-1, confirm via Glob whether the file actually exists. Note MISSING if the stated path does not exist.

Step 3b-3 — Build the extended RTM

For each TR-ID in the Phase 3 matrix, add:

  • Story: the story file path(s) that reference this TR-ID (may be multiple)
  • Test File: the test file path stated in the story's Test Evidence section
  • Test Status: COVERED (test file exists) / MISSING (path stated but not found) / NONE (no test path stated, story type may be Visual/Feel/UI) / NO STORY (requirement has no story yet — pre-production gap)

Extended matrix format:

## Requirements Traceability Matrix (RTM)

| TR-ID | GDD | Requirement | ADR | Story | Test File | Test Status |
|-------|-----|-------------|-----|-------|-----------|-------------|
| TR-combat-001 | combat.md | Hitbox < 1 frame | ADR-0003 | story-001-hitbox.md | tests/unit/combat/hitbox_test.gd | COVERED |
| TR-combat-002 | combat.md | Combo window | — | story-002-combo.md | — | NONE (Visual/Feel) |
| TR-inventory-001 | inventory.md | Persistent storage | ADR-0005 | — | — | NO STORY |

RTM coverage summary:

  • COVERED: [N] — requirements with ADR + story + passing test
  • MISSING test: [N] — story exists but test file not found
  • NO STORY: [N] — requirements with ADR but no story yet
  • NO ADR: [N] — requirements without architectural coverage (from Phase 3 gaps)
  • Full chain complete (COVERED): [N/total] ([%])