8.9 KiB
Step 3c: Requirements Traceability & Coverage Gate (Per-Epic)
Context Isolation
IMPORTANT: This step executes in a fresh Claude context after ALL stories are complete but before UAT generation. It validates that every acceptance criterion across the epic has appropriate test coverage.
Objective
Generate a requirements-to-tests traceability matrix for the entire epic. Identify coverage gaps, and if gaps exist, trigger a self-healing loop to generate missing tests before proceeding to UAT.
Inputs
epic_id: The completed epicepic_file: Path to epic definitioncompleted_stories: List of all story files in the epictest_dir: Project's test directory (auto-discovered)
Integration with testarch-trace
This step applies the full testarch-trace workflow to generate:
- Requirements-to-tests traceability matrix
- Coverage analysis by priority (P0/P1/P2/P3)
- Gap identification with severity
- Quality gate decision (PASS/CONCERNS/FAIL)
Coverage Thresholds
| Priority | Required Coverage | Gate Impact |
|---|---|---|
| P0 (Critical) | 100% | FAIL if not met |
| P1 (High) | ≥90% | CONCERNS if 80-89%, FAIL if <80% |
| P2 (Medium) | ≥80% | Advisory only |
| P3 (Low) | No requirement | Advisory only |
Prompt Template
You are a Test Architect (TEA) executing requirements traceability analysis for a BMAD epic.
## Your Task
Generate a traceability matrix for Epic: {epic_id}
Map ALL acceptance criteria from ALL stories to their implementing tests.
Identify coverage gaps and determine if the epic is ready for UAT.
## Epic Definition
<epic>
{epic_file_contents}
</epic>
## Completed Stories
{for each story}
<story id="{story_id}">
{story_file_contents}
</story>
{end for}
## Phase 1: Discover and Catalog Tests
### 1.1 Find Test Files
```bash
# List all test files in the project
find . -type f \( -name "*.spec.ts" -o -name "*.test.ts" -o -name "*.spec.js" -o -name "*.test.js" \) | head -100
1.2 Extract Test Metadata
For each test file related to this epic:
- Test IDs (e.g.,
{epic_id}-{story_seq}-E2E-001) - Describe blocks
- It blocks (individual test cases)
- Given-When-Then structure
- Priority markers (P0/P1/P2/P3)
Phase 2: Map Criteria to Tests
2.1 For Each Acceptance Criterion
Search for explicit references:
- Test IDs mentioning the criterion
- Describe blocks referencing the requirement
- Given-When-Then narratives that match
2.2 Build Traceability Matrix
## Traceability Matrix - Epic {epic_id}
### Coverage Summary
| Priority | Total Criteria | Covered | Coverage % | Status |
|----------|---------------|---------|------------|--------|
| P0 | {count} | {count} | {%} | ✅/❌ |
| P1 | {count} | {count} | {%} | ✅/⚠️/❌ |
| P2 | {count} | {count} | {%} | ✅/⚠️ |
| P3 | {count} | {count} | {%} | ✅ |
| **Total**| {count} | {count} | {%} | {status} |
### Detailed Mapping
#### Story {story_id}: {story_title}
| AC ID | Description | Priority | Test ID | Test File | Level | Status |
|-------|-------------|----------|---------|-----------|-------|--------|
| AC-1 | User can... | P0 | {id}-E2E-001 | tests/e2e/... | E2E | FULL |
| AC-2 | Error shows...| P1 | {id}-UNIT-001 | tests/unit/... | Unit | PARTIAL |
| AC-3 | Data persists | P1 | - | - | - | NONE |
2.3 Classify Coverage Status
For each criterion:
- FULL: All scenarios tested at appropriate level(s)
- PARTIAL: Some coverage but missing edge cases or levels
- NONE: No test coverage
- UNIT-ONLY: Only unit tests (missing integration/E2E)
- INTEGRATION-ONLY: Only integration tests (missing unit confidence)
Phase 3: Gap Analysis
3.1 Identify Critical Gaps
### Coverage Gaps
#### Critical Gaps (BLOCKING - P0 without coverage)
| Story | AC | Description | Recommended Test |
|-------|-----|-------------|------------------|
| {id} | AC-2 | [desc] | {id}-E2E-002: [Given-When-Then] |
#### High Priority Gaps (P1 coverage <90%)
| Story | AC | Description | Current | Missing |
|-------|-----|-------------|---------|---------|
| {id} | AC-5 | [desc] | UNIT-ONLY | E2E test for integration |
#### Medium Priority Gaps (Advisory)
| Story | AC | Description | Current | Recommendation |
|-------|-----|-------------|---------|----------------|
| {id} | AC-8 | [desc] | PARTIAL | Add edge case tests |
3.2 Gate Decision
Apply decision rules:
PASS if ALL:
- P0 coverage = 100%
- P1 coverage ≥ 90%
- Overall coverage ≥ 80%
- No critical gaps
CONCERNS if ANY:
- P1 coverage 80-89%
- P2 coverage <50%
- Minor gaps in edge case coverage
FAIL if ANY:
- P0 coverage < 100%
- P1 coverage < 80%
- Critical acceptance criteria without tests
Phase 4: Self-Healing (If Gaps Found)
If FAIL or CONCERNS with P0/P1 gaps:
Generate specific test recommendations:
### Tests to Generate
For each gap, provide:
#### Gap 1: {story_id} AC-{n} - {description}
**Priority**: P0/P1
**Recommended Test ID**: {story_id}-E2E-{seq}
**Test Level**: E2E/Integration/Unit
**File Location**: tests/{level}/{feature}.spec.ts
**Test Specification**:
```gherkin
Feature: {feature name}
Scenario: {scenario name}
Given {precondition}
When {action}
Then {expected result}
Implementation Guidance:
- Setup: {what data/state to prepare}
- Action: {what to test}
- Assertions: {what to verify}
- Cleanup: {what to clean up}
### 4.1 Output for Fix Loop
If gaps need fixing, output:
TRACEABILITY GAPS START GAP: {story_id}|AC-{n}|{priority}|{description}|{recommended_test_id}|{test_level} SPEC: Given: {precondition} When: {action} Then: {expected result} GAP: {next gap...} TRACEABILITY GAPS END
## Deliverables
### 1. Traceability Matrix Document
Save to: `docs/sprint-artifacts/traceability/epic-{epic_id}-traceability.md`
### 2. Gate Decision Summary
```markdown
## Quality Gate Decision
**Epic**: {epic_id}
**Decision**: PASS / CONCERNS / FAIL
**Date**: {date}
### Evidence Summary
| Metric | Threshold | Actual | Status |
|--------|-----------|--------|--------|
| P0 Coverage | 100% | {%} | ✅/❌ |
| P1 Coverage | ≥90% | {%} | ✅/⚠️/❌ |
| Overall Coverage | ≥80% | {%} | ✅/⚠️/❌ |
| Critical Gaps | 0 | {count} | ✅/❌ |
### Recommendation
{PASS: Proceed to UAT generation}
{CONCERNS: Proceed with noted gaps, create follow-up stories}
{FAIL: Generate missing tests before UAT}
3. Gate YAML Snippet
traceability:
epic_id: "{epic_id}"
coverage:
overall: {%}
p0: {%}
p1: {%}
p2: {%}
gaps:
critical: {count}
high: {count}
medium: {count}
status: "PASS|CONCERNS|FAIL"
timestamp: "{timestamp}"
Completion Signals
TRACEABILITY PASS if:
- P0 coverage = 100%
- P1 coverage ≥ 90%
- No critical gaps
Output: TRACEABILITY PASS: {epic_id} - P0: 100%, P1: {p1}%, Overall: {overall}%
TRACEABILITY CONCERNS if:
- P0 coverage = 100%
- P1 coverage 80-89%
Output: TRACEABILITY CONCERNS: {epic_id} - P1 at {p1}% (below 90%)
TRACEABILITY FAIL if:
- P0 coverage < 100%
- P1 coverage < 80%
First output gaps block (for self-healing):
TRACEABILITY GAPS START
GAP: ...
TRACEABILITY GAPS END
Then: TRACEABILITY FAIL: {epic_id} - P0: {p0}%, P1: {p1}%, {n} critical gaps
## Self-Healing Fix Loop
When TRACEABILITY FAIL is signaled with gaps:
1. **Gap Extraction**: Shell script extracts gaps from output
2. **Test Generation Phase**: New Claude context generates missing tests
3. **Re-run Traceability**: Verify gaps are closed
4. **Max Attempts**: 3 attempts before proceeding with CONCERNS and follow-up stories
### Test Generation Prompt (for fix loop)
You are a Test Architect generating tests to close coverage gaps.
Gaps to Address
{gaps_from_traceability}
Instructions
For each gap:
- Create the test file if it doesn't exist
- Implement the test following the Given-When-Then specification
- Use existing test patterns from the codebase
- Run the test to verify it passes
- Stage changes: git add -A
Completion
Output: TEST GENERATION COMPLETE: Generated {n} tests Or: TEST GENERATION PARTIAL: Generated {n} of {m} tests - {reason for gaps}
## Notes
- This step runs ONCE per epic, not per story
- It catches acceptance criteria that slipped through without tests
- Self-healing generates tests automatically rather than just reporting gaps
- The traceability matrix becomes documentation for UAT and compliance
- Follow-up stories are created for gaps that can't be auto-generated
Orchestration Integration
# Fresh context - comprehensive traceability analysis
claude -p "$(cat step-03c-traceability.md | envsubst)"
Success Criteria
Phase complete when:
- Traceability matrix generated
- Gate decision made (PASS/CONCERNS/FAIL)
- If FAIL: Self-healing loop attempted (max 3 times)
- TRACEABILITY PASS or CONCERNS signal output
- Ready for UAT generation