valent-pipeline 0.2.23 → 0.2.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valent-pipeline",
3
- "version": "0.2.23",
3
+ "version": "0.2.24",
4
4
  "description": "v3 multi-agent AI pipeline for software development lifecycle",
5
5
  "type": "module",
6
6
  "bin": {
@@ -28,10 +28,30 @@ Also file bugs for:
28
28
 
29
29
  Write to `{story_output_dir}/bugs.md`.
30
30
 
31
- ## Step 8: Check for Regressions
31
+ ## Step 8: Check for Regressions and Pre-Existing Failures
32
+
33
+ ### 8a: Regressions (previously passing, now failing)
32
34
 
33
35
  Compare current test results against any previously passing tests. Flag any test that:
34
36
  - Previously passed (in prior story executions) and now fails
35
37
  - Was not modified as part of this story
36
38
 
37
- Regressions are **always P1 or P2** -- they indicate the story broke existing functionality.
39
+ Regressions are **always P1 or P2** they indicate the story broke existing functionality.
40
+
41
+ ### 8b: Pre-existing failures
42
+
43
+ Every failing test in the full suite is a bug — regardless of whether it was already failing before this story. There is no "pre-existing" exemption.
44
+
45
+ For each failure in the full test suite that was NOT already filed as a bug in Step 7 (story-specific) or Step 8a (regression):
46
+
47
+ 1. File a bug in `bugs.md` with category `pre-existing`
48
+ 2. Priority: **P3** (Major) — these are not attributable to the current story but they are real failures that degrade the test suite
49
+ 3. Route to BEND (default) or the agent whose code owns the failing test
50
+ 4. Include in the execution report under a **Pre-Existing Failures** section:
51
+ - Total count
52
+ - Per-file breakdown
53
+ - Whether the count grew, shrank, or stayed the same compared to the prior story's execution report
54
+
55
+ **These bugs do NOT block the current story's ship decision.** They are filed for the retrospective to surface and for PM to consider when reprioritizing the backlog. JUDGE evaluates ship readiness based on story-specific bugs (Step 7) and regressions (Step 8a) only.
56
+
57
+ **But the count matters.** If pre-existing failure count grew since the last shipped story, flag this in the execution report summary as: `⚠ Pre-existing failures grew from {N} to {M} (+{delta})`. This signal feeds into PM's sprint analysis and the retrospective's pattern detection.
@@ -1,132 +0,0 @@
1
- # Design: Post-Implementation PRD Completion Audit
2
-
3
- **Status:** Proposal
4
- **Scope:** Both epic and project mode
5
- **Where it runs:** After all stories ship (Step 5 in valent-run-epic and valent-run-project), before writing the epic/project report.
6
-
7
- ## Problem
8
-
9
- The epics-and-stories breakdown is done once, early, and may miss PRD requirements. Stories can also be cancelled or blocked during execution. There is currently no post-implementation check that verifies the full PRD was actually delivered. The existing pre-implementation readiness check (bmad-check-implementation-readiness) runs before any code is written and only validates that epics *claim* to cover FRs — it doesn't verify that shipped code actually delivers them.
10
-
11
- ## Proposed Solution
12
-
13
- A new orchestration step (`sprint-prd-audit.md`) that runs at epic/project completion. It re-reads the PRD, extracts all functional requirements, and checks each against what was actually shipped — generating gap stories for anything missed.
14
-
15
- ### Trigger Point
16
-
17
- Insert between the sprint loop exit and the report generation:
18
-
19
- - **valent-run-epic SKILL.md:** After Step 4 loop exits, before Step 5a (Write Epic Report)
20
- - **valent-run-project SKILL.md:** After Step 4 loop exits, before Step 5a (Write Project Report)
21
-
22
- ### Step-by-Step Flow
23
-
24
- #### Step 1: Extract PRD Functional Requirements
25
-
26
- Read the PRD from `{prd_path}` (already a pipeline config variable). Extract every functional requirement (FR), keyed by FR number or section heading. Build a checklist:
27
-
28
- ```
29
- FR1: [requirement text] → status: unchecked
30
- FR2: [requirement text] → status: unchecked
31
- ...
32
- ```
33
-
34
- Also extract non-functional requirements (NFRs) that have testable acceptance criteria.
35
-
36
- #### Step 2: Map Shipped Stories to FRs
37
-
38
- For each shipped story (from `{epic_progress_path}` or `{backlog_path}` where status = `shipped`):
39
-
40
- 1. Read the story's `reqs-brief.md` from its output directory
41
- 2. Extract which FRs the story claims to address (REQS agent already tags these during grooming)
42
- 3. Mark those FRs as `covered` in the checklist
43
-
44
- For cancelled or blocked stories:
45
- - Extract their claimed FRs
46
- - Mark as `gap-cancelled` or `gap-blocked`
47
-
48
- #### Step 3: Cross-Reference with Test Evidence
49
-
50
- For each `covered` FR, verify that shipped test evidence exists:
51
-
52
- 1. Query the calibration table for the covering story's test results
53
- 2. Check that the story's QA-B test spec includes tests traceable to the FR
54
- 3. If a FR is "covered" by a story but that story had no tests touching the FR, downgrade to `weak-coverage`
55
-
56
- #### Step 4: Generate Gap Report
57
-
58
- Produce `prd-audit-report.md` in the epic/project output directory:
59
-
60
- ```markdown
61
- # PRD Completion Audit
62
-
63
- ## Coverage Summary
64
- - Total FRs: {count}
65
- - Covered (with tests): {count}
66
- - Weak coverage (no direct tests): {count}
67
- - Gaps (cancelled/blocked story): {count}
68
- - Gaps (never mapped to a story): {count}
69
- - Coverage: {percentage}%
70
-
71
- ## Gap Details
72
-
73
- ### Never Mapped to a Story
74
- | FR | Requirement | Recommendation |
75
- |----|------------|----------------|
76
- | FR7 | [text] | Create story in epic {X} |
77
-
78
- ### Lost to Cancelled/Blocked Stories
79
- | FR | Requirement | Original Story | Status | Recommendation |
80
- |----|------------|---------------|--------|----------------|
81
- | FR3 | [text] | KANBAN-005 | cancelled | Re-scope into new story |
82
-
83
- ### Weak Coverage (no direct test evidence)
84
- | FR | Requirement | Covering Story | Recommendation |
85
- |----|------------|---------------|----------------|
86
- | FR9 | [text] | KANBAN-012 | Add targeted tests |
87
- ```
88
-
89
- #### Step 5: Generate Gap Stories (Optional, User-Confirmed)
90
-
91
- If gaps exist:
92
-
93
- 1. Present the gap report to the user
94
- 2. Ask: "Generate backlog stories for {N} uncovered requirements?"
95
- 3. If confirmed:
96
- - For each gap FR, create a new story in `{backlog_path}` with:
97
- - `type: story`
98
- - `status: pending`
99
- - `epic: {epic_id}` (or assign to most relevant epic in project mode)
100
- - `title: "Implement FR{N}: {short description}"`
101
- - `priority: {next available}`
102
- - `source: prd-audit`
103
- - Report the new story IDs
104
- - These stories are available for the next epic/project run
105
-
106
- ### Agent Usage
107
-
108
- This step is executed by Lead directly — no new agents needed. Lead already has access to read the PRD, backlog, story output directories, and the calibration DB. The step is read-heavy and analytical, not generative.
109
-
110
- If the PRD is large (sharded across multiple files), Lead reads all shards. Context pressure is manageable because this runs after all story agents are torn down.
111
-
112
- ### Configuration
113
-
114
- Add to `pipeline-config.yaml` under `sprint:`:
115
-
116
- ```yaml
117
- sprint:
118
- prd_audit: true # enable post-implementation PRD audit (default: true)
119
- prd_audit_auto_stories: false # auto-generate gap stories without user confirmation (default: false)
120
- ```
121
-
122
- ### Dependencies
123
-
124
- - REQS agent must tag FRs in `reqs-brief.md` during grooming (already does this)
125
- - PRD must use numbered/identifiable FR format (standard PRD template already requires this)
126
- - Calibration table must have test result data per story (already recorded during sprint review)
127
-
128
- ### Open Questions
129
-
130
- 1. Should the audit run per-sprint as well, or only at epic/project completion? Per-sprint would catch drift earlier but adds overhead.
131
- 2. For project mode with multiple PRDs (one per epic), should the audit cross-reference all PRDs or just the one matching each epic?
132
- 3. Should `weak-coverage` FRs block the epic/project completion report, or just be informational?