@sandrinio/vbounce 2.0.0 → 2.1.0
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/README.md +19 -7
- package/bin/vbounce.mjs +23 -0
- package/brains/AGENTS.md +44 -151
- package/brains/CHANGELOG.md +113 -0
- package/brains/CLAUDE.md +50 -219
- package/brains/GEMINI.md +63 -181
- package/package.json +1 -1
- package/scripts/close_sprint.mjs +9 -0
- package/scripts/complete_story.mjs +8 -0
- package/scripts/init_sprint.mjs +8 -0
- package/scripts/product_graph.mjs +387 -0
- package/scripts/product_impact.mjs +167 -0
- package/skills/agent-team/SKILL.md +15 -3
- package/skills/agent-team/references/mid-sprint-triage.md +40 -26
- package/skills/doc-manager/SKILL.md +30 -1
- package/skills/improve/SKILL.md +4 -4
- package/skills/product-graph/SKILL.md +102 -0
- package/templates/bug.md +90 -0
- package/templates/change_request.md +105 -0
- package/templates/sprint.md +19 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Mid-Sprint
|
|
1
|
+
# Mid-Sprint Triage
|
|
2
2
|
|
|
3
3
|
> On-demand reference from agent-team/SKILL.md. How the Team Lead handles user interruptions during an active sprint.
|
|
4
4
|
|
|
@@ -15,57 +15,71 @@ Any time the user provides input mid-bounce that is **not** a direct answer to a
|
|
|
15
15
|
|
|
16
16
|
The Team Lead MUST classify the request before acting:
|
|
17
17
|
|
|
18
|
-
| Category | Definition | Example |
|
|
19
|
-
|
|
20
|
-
| **Bug** | Something built (or pre-existing) is broken | "Login crashes when email has a plus sign" |
|
|
21
|
-
| **Spec Clarification** | The spec was ambiguous; user is clarifying intent, not changing scope | "By 'admin' I meant workspace admin, not super admin" |
|
|
22
|
-
| **Scope Change** | User wants to add, remove, or modify requirements for the current story | "Also add a forgot-password flow to the login story" |
|
|
23
|
-
| **Approach Change** | Implementation strategy is wrong; needs a different technical path | "Don't use REST for this — wire it through WebSockets instead" |
|
|
18
|
+
| Category | Definition | Example | Template |
|
|
19
|
+
|----------|-----------|---------|----------|
|
|
20
|
+
| **Bug** | Something built (or pre-existing) is broken | "Login crashes when email has a plus sign" | `templates/bug.md` (or `templates/hotfix.md` if L1) |
|
|
21
|
+
| **Spec Clarification** | The spec was ambiguous; user is clarifying intent, not changing scope | "By 'admin' I meant workspace admin, not super admin" | No template — update story spec inline |
|
|
22
|
+
| **Scope Change** | User wants to add, remove, or modify requirements for the current story | "Also add a forgot-password flow to the login story" | `templates/change_request.md` |
|
|
23
|
+
| **Approach Change** | Implementation strategy is wrong; needs a different technical path | "Don't use REST for this — wire it through WebSockets instead" | `templates/change_request.md` |
|
|
24
24
|
|
|
25
25
|
### How to Decide
|
|
26
26
|
|
|
27
27
|
```
|
|
28
28
|
Is existing behavior broken?
|
|
29
29
|
YES → Bug
|
|
30
|
+
Is it L1 (1-2 files, trivial)? → Hotfix Path (templates/hotfix.md)
|
|
31
|
+
Is it larger? → Bug Report (templates/bug.md) → fix task in current sprint
|
|
30
32
|
NO → Is the user adding/removing/changing a requirement?
|
|
31
|
-
YES → Scope Change
|
|
33
|
+
YES → Scope Change (templates/change_request.md)
|
|
32
34
|
NO → Is the user correcting an ambiguity in the spec?
|
|
33
|
-
YES → Spec Clarification
|
|
34
|
-
NO → Approach Change (
|
|
35
|
+
YES → Spec Clarification (update story inline, no template)
|
|
36
|
+
NO → Approach Change (templates/change_request.md)
|
|
35
37
|
```
|
|
36
38
|
|
|
37
39
|
## Step 2 — Route
|
|
38
40
|
|
|
39
|
-
| Category | Action | Bounce Impact |
|
|
40
|
-
|
|
41
|
-
| **Bug** |
|
|
42
|
-
| **
|
|
43
|
-
| **
|
|
44
|
-
| **
|
|
41
|
+
| Category | Action | Bounce Impact | Document Created |
|
|
42
|
+
|----------|--------|---------------|------------------|
|
|
43
|
+
| **Bug (L1)** | Hotfix Path: Dev fixes, human verifies, merge directly | None — does NOT increment bounce count | `product_plans/hotfixes/HOTFIX-{Date}-{Name}.md` |
|
|
44
|
+
| **Bug (L2+)** | Create bug report, add as fix task within current story bounce | None — does NOT increment bounce count | `product_plans/sprints/sprint-{XX}/BUG-{Date}-{Name}.md` |
|
|
45
|
+
| **Spec Clarification** | Update Story spec inline (§1 or §2). Add a note in the Change Log. Continue current bounce. | None | No separate document |
|
|
46
|
+
| **Scope Change** | **Pause bounce.** Create CR document. Present impact to human. Wait for decision. If approved: update Story spec, reset Dev pass. If rejected: continue as-is. If deferred: add to backlog. | Resets Dev pass. Prior QA/Arch invalidated if change affects tested areas. | `product_plans/sprints/sprint-{XX}/CR-{Date}-{Name}.md` |
|
|
47
|
+
| **Approach Change** | Create CR document. Update Story §3 Implementation Guide. Re-delegate to Developer with updated context. | Resets Dev pass. Prior QA/Arch invalidated. | `product_plans/sprints/sprint-{XX}/CR-{Date}-{Name}.md` |
|
|
45
48
|
|
|
46
49
|
## Step 3 — Log
|
|
47
50
|
|
|
48
|
-
Every
|
|
51
|
+
Every triage event MUST be logged in the Sprint Plan `sprint-{XX}.md` §4 Execution Log:
|
|
49
52
|
|
|
50
53
|
```
|
|
51
|
-
| {
|
|
54
|
+
| {Story or N/A} | {Category} | 0 | 0 | — | CR: {One-line description} |
|
|
52
55
|
```
|
|
53
56
|
|
|
54
|
-
Use
|
|
57
|
+
Use the Notes column with `CR:` prefix to distinguish from regular story completions.
|
|
58
|
+
|
|
59
|
+
## Step 4 — Present to Human
|
|
60
|
+
|
|
61
|
+
After categorizing, the Team Lead MUST present the triage decision to the human:
|
|
62
|
+
|
|
63
|
+
1. State the category: "This is a **{Bug / Scope Change / Approach Change / Spec Clarification}**."
|
|
64
|
+
2. For Bugs: state severity and whether it blocks the current story
|
|
65
|
+
3. For Scope/Approach Changes: present the impact assessment from the CR document and ask for decision (Approve / Reject / Defer)
|
|
66
|
+
4. For Spec Clarifications: state what was clarified and confirm with human before updating
|
|
55
67
|
|
|
56
68
|
## Sprint Report Tracking
|
|
57
69
|
|
|
58
|
-
At sprint consolidation (Step 7), the Team Lead includes a **§2.1 Change Requests** section in the Sprint Report summarizing all mid-sprint
|
|
70
|
+
At sprint consolidation (Step 7), the Team Lead includes a **§2.1 Change Requests** section in the Sprint Report summarizing all mid-sprint triage events:
|
|
59
71
|
|
|
60
|
-
| Story | Category | Description | Impact |
|
|
61
|
-
|
|
62
|
-
| STORY-{ID} |
|
|
63
|
-
| STORY-{ID} | Scope Change | Added forgot-password flow | Dev pass reset, +1 session |
|
|
72
|
+
| Story | Category | Description | Impact | Document |
|
|
73
|
+
|-------|----------|-------------|--------|----------|
|
|
74
|
+
| STORY-{ID} | Bug | Login crash on plus-sign emails | Fixed via hotfix, no bounce reset | HOTFIX-2026-03-22-login-plus |
|
|
75
|
+
| STORY-{ID} | Scope Change | Added forgot-password flow | Dev pass reset, +1 session | CR-2026-03-22-forgot-password |
|
|
64
76
|
|
|
65
77
|
## Key Rules
|
|
66
78
|
|
|
67
|
-
- **Never silently absorb a user change.** Always categorize and log it.
|
|
79
|
+
- **Never silently absorb a user change.** Always categorize, document, and log it.
|
|
68
80
|
- **Bugs don't penalize the bounce count.** They are defects, not process failures.
|
|
69
81
|
- **Spec clarifications are cheap.** Update the spec and move on — no ceremony needed.
|
|
70
|
-
- **Scope changes
|
|
82
|
+
- **Scope changes require a CR document and human approval.** Always pause, assess impact, and confirm before resuming.
|
|
83
|
+
- **Approach changes require a CR document.** The technical pivot must be recorded for audit trail.
|
|
71
84
|
- **Correction Tax still applies.** Human intervention is tracked, but the category explains *why*.
|
|
85
|
+
- **Everything gets a document or an inline update.** No change goes unrecorded.
|
|
@@ -85,6 +85,8 @@ Spike §6 (Residual Risk) ──→ Risk Registry §1 (Active Risks)
|
|
|
85
85
|
| Story | `templates/story.md` | `product_plans/backlog/EPIC-{NNN}_{name}/STORY-{EpicID}-{StoryID}-{StoryName}.md` |
|
|
86
86
|
| Spike | `templates/spike.md` | `product_plans/backlog/EPIC-{NNN}_{name}/SPIKE-{EpicID}-{NNN}-{topic}.md` |
|
|
87
87
|
| Hotfix | `templates/hotfix.md` | `product_plans/hotfixes/HOTFIX-{Date}-{Name}.md` |
|
|
88
|
+
| Bug Report | `templates/bug.md` | `product_plans/sprints/sprint-{XX}/BUG-{Date}-{Name}.md` |
|
|
89
|
+
| Change Request | `templates/change_request.md` | `product_plans/sprints/sprint-{XX}/CR-{Date}-{Name}.md` |
|
|
88
90
|
| Sprint Report | `templates/sprint_report.md` | `product_plans/sprints/sprint-{XX}/sprint-report.md` |
|
|
89
91
|
|
|
90
92
|
### Product Plans Folder Structure (State-Based)
|
|
@@ -200,6 +202,24 @@ Before creating any document, YOU MUST:
|
|
|
200
202
|
4. Fill sections by pulling from upstream sources (see Information Flow above)
|
|
201
203
|
5. Set the Ambiguity Score based on completeness
|
|
202
204
|
6. Verify all cross-references are valid
|
|
205
|
+
7. **Present edge cases and open questions to the human** (see below)
|
|
206
|
+
|
|
207
|
+
**After creating an Epic — mandatory discussion step:**
|
|
208
|
+
|
|
209
|
+
After writing the Epic document, you MUST present §6 (Risks & Edge Cases) and §8 (Open Questions) to the human in chat. Do not silently file them — the human needs to see what's uncertain to make good decisions.
|
|
210
|
+
|
|
211
|
+
Format your presentation like this:
|
|
212
|
+
1. Summarize the epic in 1-2 sentences
|
|
213
|
+
2. List each edge case from §6 with its proposed mitigation — ask the human if the mitigation is adequate or if they see other risks
|
|
214
|
+
3. List each open question from §8 — present the options, explain the impact, and ask the human to decide or delegate
|
|
215
|
+
4. State the current ambiguity score and what must be resolved before decomposition into stories
|
|
216
|
+
|
|
217
|
+
The epic is NOT ready for decomposition until:
|
|
218
|
+
- All **blocking** questions in §8 are resolved (status = "Decided")
|
|
219
|
+
- All edge cases in §6 have either a decided mitigation or are explicitly accepted as known risk by the human
|
|
220
|
+
- Ambiguity is 🟡 or 🟢
|
|
221
|
+
|
|
222
|
+
If the human resolves questions during discussion, update the epic document immediately (change §8 status to "Decided", update §6 mitigations, adjust ambiguity score).
|
|
203
223
|
|
|
204
224
|
**Pre-read requirements by document type:**
|
|
205
225
|
|
|
@@ -242,6 +262,8 @@ When modifying a document:
|
|
|
242
262
|
| Spike §4/§5 (Findings/Decision) | Epic §4 Technical Context, Epic §8 Open Questions, Risk Registry §1 |
|
|
243
263
|
| Spike §5 (Decision — architectural) | Roadmap §3 ADRs (new row) |
|
|
244
264
|
|
|
265
|
+
**After any cascade:** Run `vbounce graph` to regenerate the product graph so downstream consumers have current state.
|
|
266
|
+
|
|
245
267
|
### DECOMPOSE — Breaking Down Documents
|
|
246
268
|
|
|
247
269
|
**Epic → Stories:**
|
|
@@ -341,7 +363,7 @@ Sprint Planning is a collaborative process between AI and human. No sprint start
|
|
|
341
363
|
|------------|------|
|
|
342
364
|
| Charter → Ready for Roadmap | Ambiguity 🟡 or 🟢 (§1 and §5 filled) |
|
|
343
365
|
| Roadmap → Ready for Epics | Charter Ambiguity 🟢 + Roadmap §2 and §3 filled |
|
|
344
|
-
| Epic → Ready for Stories | Ambiguity 🟡 or 🟢
|
|
366
|
+
| Epic → Ready for Stories | Ambiguity 🟡 or 🟢 + §2 Scope filled + §4 Tech Context filled + §8 all blocking questions Decided + §6 each edge case has a decided mitigation OR is explicitly accepted as known risk |
|
|
345
367
|
| Story → Ready to Bounce | Ambiguity 🟢 + ALL Context Pack items checked (Sprint Plan §1) |
|
|
346
368
|
| Sprint Plan → Confirmed | §0 Readiness Gate checklist complete + Human explicitly confirms |
|
|
347
369
|
| Sprint Plan → Active | Status is Confirmed (human approval obtained) |
|
|
@@ -356,6 +378,13 @@ Sprint Planning is a collaborative process between AI and human. No sprint start
|
|
|
356
378
|
- **Sprint Closure Phase**: The Team Lead physically MOVES the entire sprint folder (`sprints/sprint-{XX}/`) to `product_plans/archive/sprints/sprint-{XX}/`.
|
|
357
379
|
- **Epic Closure**: Once every story attached to an Epic has been archived, the Epic folder itself is moved from `backlog/` to `archive/epics/`.
|
|
358
380
|
|
|
381
|
+
**Complexity Labels:**
|
|
382
|
+
|
|
383
|
+
- **L1**: Trivial — Single file, <1hr, known pattern. → Hotfix Path
|
|
384
|
+
- **L2**: Standard — 2-3 files, known pattern, ~2-4hr. *(default)* → Full Bounce
|
|
385
|
+
- **L3**: Complex — Cross-cutting, spike may be needed, ~1-2 days. → Full Bounce
|
|
386
|
+
- **L4**: Uncertain — Requires spikes before Bounce, >2 days. → Discovery first
|
|
387
|
+
|
|
359
388
|
**V-Bounce State transitions for Stories:**
|
|
360
389
|
|
|
361
390
|
```
|
package/skills/improve/SKILL.md
CHANGED
|
@@ -39,9 +39,9 @@ Every improvement proposal is classified by impact to help the human prioritize:
|
|
|
39
39
|
|
|
40
40
|
## When to Use
|
|
41
41
|
|
|
42
|
-
- **Automatically** — `vbounce sprint close S-XX` runs the improvement pipeline and
|
|
42
|
+
- **Automatically** — `vbounce sprint close S-XX` runs the improvement pipeline and regenerates `.bounce/improvement-suggestions.md` (overwrites previous — always reflects latest data)
|
|
43
43
|
- **On demand** — `vbounce improve S-XX` runs the full pipeline (trends + analyzer + suggestions)
|
|
44
|
-
- After every
|
|
44
|
+
- **Applying changes:** After every 1-3 sprints, human reviews suggestions and runs `/improve` to apply approved ones. The analysis runs every sprint; applying changes is the human's call.
|
|
45
45
|
- When the same Process Feedback appears across multiple sprint reports
|
|
46
46
|
- When the user explicitly asks to improve templates, skills, or process
|
|
47
47
|
- When a sprint's Framework Self-Assessment reveals Blocker-severity findings
|
|
@@ -239,7 +239,7 @@ For each approved proposal:
|
|
|
239
239
|
|
|
240
240
|
### Step 7: Validate
|
|
241
241
|
After all changes are applied:
|
|
242
|
-
1. Run
|
|
242
|
+
1. Run `vbounce doctor` to verify framework integrity
|
|
243
243
|
2. Verify no cross-references are broken (template paths, skill names, report field names)
|
|
244
244
|
3. Confirm brain file consistency — all surfaces should describe the same process
|
|
245
245
|
|
|
@@ -284,7 +284,7 @@ The Team Lead should note in the Sprint Report whether the previous improvement
|
|
|
284
284
|
- **Never change the framework without human approval.** Propose, don't impose.
|
|
285
285
|
- **Keep all brain surfaces in sync.** A change to CLAUDE.md must be reflected in GEMINI.md, AGENTS.md, and cursor-rules/.
|
|
286
286
|
- **Log everything.** Every change goes in `brains/CHANGELOG.md` with the finding that motivated it.
|
|
287
|
-
- **Run
|
|
287
|
+
- **Run `vbounce doctor` after changes.** Verify framework integrity after applying improvements.
|
|
288
288
|
- **Don't over-engineer.** Fix the actual problem reported by agents. Don't add speculative improvements.
|
|
289
289
|
- **Respect the hierarchy.** Template changes are low-risk. Process flow changes are high-risk. Scope accordingly.
|
|
290
290
|
- **Skills are living documents.** If a skill's instructions consistently confuse agents, rewrite the confusing section — don't add workarounds elsewhere.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: product-graph
|
|
3
|
+
description: "Use when you need to understand document relationships, check what's affected by a change, find blocked documents, or assess the state of planning documents. Provides structured awareness of the full product document graph without reading every file. Auto-loaded during planning sessions."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Product Graph — Document Relationship Intelligence
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
This skill gives you instant awareness of all product planning documents and their relationships. Instead of globbing and reading every file in `product_plans/`, you read a single JSON graph that maps every document, its status, and how it connects to other documents.
|
|
11
|
+
|
|
12
|
+
## Three-Tier Loading Protocol
|
|
13
|
+
|
|
14
|
+
When you need to understand the product document landscape, load information in tiers — stop at the tier that answers your question:
|
|
15
|
+
|
|
16
|
+
### Tier 1: Graph JSON (~400-1000 tokens)
|
|
17
|
+
Read `.bounce/product-graph.json` for a bird's-eye view.
|
|
18
|
+
- All document IDs, types, statuses, and paths
|
|
19
|
+
- All edges (dependencies, parent relationships, feeds)
|
|
20
|
+
- **Use when:** answering "what exists?", "what's blocked?", "what depends on X?"
|
|
21
|
+
|
|
22
|
+
### Tier 2: Specific Frontmatter (~200-500 tokens per doc)
|
|
23
|
+
Read the YAML frontmatter of specific documents identified in Tier 1.
|
|
24
|
+
- Ambiguity scores, priorities, tags, owners, dates
|
|
25
|
+
- **Use when:** you need details about specific documents (not the full set)
|
|
26
|
+
|
|
27
|
+
### Tier 3: Full Documents (~500-3000 tokens per doc)
|
|
28
|
+
Read the complete document body.
|
|
29
|
+
- Full specs, scope boundaries, acceptance criteria, open questions
|
|
30
|
+
- **Use when:** creating or modifying documents, decomposing epics, or resolving ambiguity
|
|
31
|
+
|
|
32
|
+
## Edge Type Semantics
|
|
33
|
+
|
|
34
|
+
| Edge Type | Meaning | Direction |
|
|
35
|
+
|-----------|---------|-----------|
|
|
36
|
+
| `parent` | Document is a child of another (Story → Epic) | parent → child |
|
|
37
|
+
| `depends-on` | Document cannot proceed until dependency is done | dependency → dependent |
|
|
38
|
+
| `unlocks` | Completing this document enables another | source → unlocked |
|
|
39
|
+
| `context-source` | Document draws context from another | source → consumer |
|
|
40
|
+
| `feeds` | Document contributes to a delivery/release | document → delivery |
|
|
41
|
+
|
|
42
|
+
## When to Regenerate the Graph
|
|
43
|
+
|
|
44
|
+
Run `vbounce graph` (or `node scripts/product_graph.mjs`) after:
|
|
45
|
+
- **Any document edit** that changes status, dependencies, or relationships
|
|
46
|
+
- **Sprint lifecycle events** (sprint init, story complete, sprint close)
|
|
47
|
+
- **Planning session start** — ensure graph reflects current state
|
|
48
|
+
- **Document creation or archival** — new nodes or removed nodes
|
|
49
|
+
|
|
50
|
+
The graph is a cache — it's cheap to regenerate and stale data is worse than no data.
|
|
51
|
+
|
|
52
|
+
## Blocked Document Detection
|
|
53
|
+
|
|
54
|
+
A document is **blocked** when:
|
|
55
|
+
1. It has incoming `depends-on` edges from documents with status != "Done"/"Implemented"/"Completed"
|
|
56
|
+
2. It has `ambiguity: 🔴 High` and linked spikes are not Validated/Closed
|
|
57
|
+
3. Its parent document has status "Parking Lot" or "Escalated"
|
|
58
|
+
|
|
59
|
+
To find blocked documents:
|
|
60
|
+
1. Read the graph (Tier 1)
|
|
61
|
+
2. For each node, check its incoming `depends-on` edges
|
|
62
|
+
3. Look up the source node's status
|
|
63
|
+
4. If any source is not in a terminal state → document is blocked
|
|
64
|
+
|
|
65
|
+
## Impact Analysis
|
|
66
|
+
|
|
67
|
+
To understand what changes when you modify a document:
|
|
68
|
+
```bash
|
|
69
|
+
vbounce graph impact <DOC-ID> # human-readable
|
|
70
|
+
vbounce graph impact <DOC-ID> --json # machine-readable
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
This runs BFS traversal and returns:
|
|
74
|
+
- **Direct dependents** — documents immediately affected
|
|
75
|
+
- **Transitive dependents** — documents affected through cascading dependencies
|
|
76
|
+
- **Upstream feeders** — documents that feed into the changed document
|
|
77
|
+
|
|
78
|
+
## Graph JSON Schema
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"generated_at": "ISO-8601 timestamp",
|
|
83
|
+
"node_count": 5,
|
|
84
|
+
"edge_count": 12,
|
|
85
|
+
"nodes": {
|
|
86
|
+
"EPIC-002": {
|
|
87
|
+
"type": "epic|story|spike|charter|roadmap|delivery-plan|sprint-plan|risk-registry|hotfix",
|
|
88
|
+
"status": "Draft|Refinement|Ready to Bounce|Bouncing|Done|Implemented|...",
|
|
89
|
+
"ambiguity": "🔴 High|🟡 Medium|🟢 Low|null",
|
|
90
|
+
"path": "product_plans/backlog/EPIC-002_.../EPIC-002_....md",
|
|
91
|
+
"title": "Human-readable title from first heading"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"edges": [
|
|
95
|
+
{ "from": "EPIC-002", "to": "D-02", "type": "feeds" }
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Keywords
|
|
101
|
+
|
|
102
|
+
product graph, document graph, dependency, impact analysis, what's affected, what's blocked, document relationships, planning state
|
package/templates/bug.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<instructions>
|
|
2
|
+
FOLLOW THIS EXACT STRUCTURE. This documents a defect found during or after sprint execution.
|
|
3
|
+
|
|
4
|
+
1. **YAML Frontmatter**: Bug ID, Status, Severity, Found During, Affected Story, Reporter
|
|
5
|
+
2. **§1 The Bug**: What's broken, reproduction steps, expected vs actual
|
|
6
|
+
3. **§2 Impact**: What's affected, is it blocking?
|
|
7
|
+
4. **§3 Fix Approach**: Proposed fix, affected files, estimated complexity
|
|
8
|
+
5. **§4 Verification**: How to verify the fix
|
|
9
|
+
|
|
10
|
+
When to use this template:
|
|
11
|
+
- User reports something is broken mid-sprint
|
|
12
|
+
- QA discovers a defect not covered by acceptance criteria
|
|
13
|
+
- Post-sprint manual review finds an issue
|
|
14
|
+
- A previously working feature regresses
|
|
15
|
+
|
|
16
|
+
Triage rules (from mid-sprint-triage.md):
|
|
17
|
+
- If the bug is L1 (1-2 files, trivial fix) → use templates/hotfix.md instead
|
|
18
|
+
- If the bug is larger → use THIS template, add to current sprint as a fix task
|
|
19
|
+
- Bug fixes do NOT increment QA/Architect bounce counts
|
|
20
|
+
|
|
21
|
+
Output location: `product_plans/sprints/sprint-{XX}/BUG-{Date}-{Name}.md`
|
|
22
|
+
If no sprint is active: `product_plans/backlog/BUG-{Date}-{Name}.md`
|
|
23
|
+
|
|
24
|
+
Do NOT output these instructions.
|
|
25
|
+
</instructions>
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
bug_id: "BUG-{YYYY-MM-DD}-{name}"
|
|
29
|
+
status: "Open / In Progress / Fixed / Wont Fix"
|
|
30
|
+
severity: "Critical / High / Medium / Low"
|
|
31
|
+
found_during: "Sprint S-{XX} / Post-Sprint Review / User Report"
|
|
32
|
+
affected_story: "STORY-{ID} / N/A (pre-existing)"
|
|
33
|
+
reporter: "{human / QA / user}"
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
# BUG: {Short Description}
|
|
37
|
+
|
|
38
|
+
## 1. The Bug
|
|
39
|
+
|
|
40
|
+
**Current Behavior:**
|
|
41
|
+
{What happens — be specific}
|
|
42
|
+
|
|
43
|
+
**Expected Behavior:**
|
|
44
|
+
{What should happen instead}
|
|
45
|
+
|
|
46
|
+
**Reproduction Steps:**
|
|
47
|
+
1. {Step 1}
|
|
48
|
+
2. {Step 2}
|
|
49
|
+
3. {Observe: ...}
|
|
50
|
+
|
|
51
|
+
**Environment:**
|
|
52
|
+
- {Browser/OS/Node version if relevant}
|
|
53
|
+
- {Branch: sprint/S-XX or main}
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. Impact
|
|
58
|
+
|
|
59
|
+
- **Blocking?** {Yes — blocks STORY-{ID} / No — cosmetic / degraded}
|
|
60
|
+
- **Affected Areas:** {Which features, pages, or flows}
|
|
61
|
+
- **Users Affected:** {All users / specific persona / edge case only}
|
|
62
|
+
- **Data Impact:** {None / corrupted data / lost data}
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 3. Fix Approach
|
|
67
|
+
|
|
68
|
+
- **Root Cause:** {Why it's broken — if known}
|
|
69
|
+
- **Proposed Fix:** {What to change}
|
|
70
|
+
- **Files to Modify:** `{filepath1}`, `{filepath2}`
|
|
71
|
+
- **Complexity:** {L1 Trivial / L2 Standard / L3 Complex}
|
|
72
|
+
|
|
73
|
+
> If complexity is L1 → consider using `templates/hotfix.md` instead for faster resolution.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 4. Verification
|
|
78
|
+
|
|
79
|
+
- [ ] {Reproduction steps no longer reproduce the bug}
|
|
80
|
+
- [ ] {Existing tests still pass}
|
|
81
|
+
- [ ] {New test covers the bug scenario — if applicable}
|
|
82
|
+
- [ ] Run `./scripts/hotfix_manager.sh ledger "BUG: {Name}" "{Brief description}"`
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Change Log
|
|
87
|
+
|
|
88
|
+
| Date | Author | Change |
|
|
89
|
+
|------|--------|--------|
|
|
90
|
+
| {YYYY-MM-DD} | {name} | Created |
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
<instructions>
|
|
2
|
+
FOLLOW THIS EXACT STRUCTURE. This documents a scope change or new requirement discovered mid-sprint.
|
|
3
|
+
|
|
4
|
+
1. **YAML Frontmatter**: CR ID, Status, Category, Urgency, Affected Stories, Requestor
|
|
5
|
+
2. **§1 The Change**: What's being requested and why
|
|
6
|
+
3. **§2 Impact Assessment**: What it affects, what breaks, what gets delayed
|
|
7
|
+
4. **§3 Decision**: Approved action with rationale
|
|
8
|
+
5. **§4 Execution Plan**: How the change will be handled
|
|
9
|
+
|
|
10
|
+
When to use this template:
|
|
11
|
+
- User requests a new feature or scope expansion mid-sprint
|
|
12
|
+
- User wants to change the technical approach of an active story
|
|
13
|
+
- External dependency change forces a pivot
|
|
14
|
+
- Requirements discovered during implementation that weren't in the original spec
|
|
15
|
+
|
|
16
|
+
Categories (from mid-sprint-triage.md):
|
|
17
|
+
- **Scope Change**: Adding/removing/modifying requirements → use THIS template
|
|
18
|
+
- **Approach Change**: Different technical path → use THIS template
|
|
19
|
+
- **Spec Clarification**: Just clarifying ambiguity → do NOT use this template (update story spec inline)
|
|
20
|
+
- **Bug**: Something is broken → use templates/bug.md instead
|
|
21
|
+
|
|
22
|
+
Triage rules:
|
|
23
|
+
- Scope changes PAUSE the active bounce until the human approves
|
|
24
|
+
- Approach changes reset the Dev pass
|
|
25
|
+
- All CRs are logged in Sprint Plan §4 Execution Log with event type "CR"
|
|
26
|
+
- CRs that can't fit in the current sprint go to backlog for next sprint planning
|
|
27
|
+
|
|
28
|
+
Output location: `product_plans/sprints/sprint-{XX}/CR-{Date}-{Name}.md`
|
|
29
|
+
If no sprint is active: `product_plans/backlog/CR-{Date}-{Name}.md`
|
|
30
|
+
|
|
31
|
+
Do NOT output these instructions.
|
|
32
|
+
</instructions>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
cr_id: "CR-{YYYY-MM-DD}-{name}"
|
|
36
|
+
status: "Open / Approved / Rejected / Deferred"
|
|
37
|
+
category: "Scope Change / Approach Change"
|
|
38
|
+
urgency: "Blocking / This Sprint / Next Sprint"
|
|
39
|
+
affected_stories: ["STORY-{ID}"]
|
|
40
|
+
requestor: "{human / AI / external}"
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
# CR: {Short Description}
|
|
44
|
+
|
|
45
|
+
## 1. The Change
|
|
46
|
+
|
|
47
|
+
**What is being requested:**
|
|
48
|
+
{Describe the change clearly}
|
|
49
|
+
|
|
50
|
+
**Why:**
|
|
51
|
+
{Business reason, user feedback, technical discovery, external dependency change}
|
|
52
|
+
|
|
53
|
+
**Original vs Proposed:**
|
|
54
|
+
| Aspect | Original | Proposed |
|
|
55
|
+
|--------|----------|----------|
|
|
56
|
+
| {Scope/Approach/Tech} | {What was planned} | {What's now requested} |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 2. Impact Assessment
|
|
61
|
+
|
|
62
|
+
**Affected Stories:**
|
|
63
|
+
| Story | Current State | Impact |
|
|
64
|
+
|-------|--------------|--------|
|
|
65
|
+
| STORY-{ID} | {Bouncing / QA Passed / ...} | {Must restart Dev / Spec update only / Blocked} |
|
|
66
|
+
|
|
67
|
+
**Sprint Impact:**
|
|
68
|
+
- {Does this delay the sprint? By how much?}
|
|
69
|
+
- {Does this invalidate completed work?}
|
|
70
|
+
- {Does this require new stories?}
|
|
71
|
+
|
|
72
|
+
**Risk:**
|
|
73
|
+
- {What could go wrong if we make this change?}
|
|
74
|
+
- {What could go wrong if we DON'T make this change?}
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 3. Decision
|
|
79
|
+
|
|
80
|
+
> Filled by human after reviewing the impact assessment.
|
|
81
|
+
|
|
82
|
+
**Decision:** {Approved / Rejected / Deferred to S-{XX}}
|
|
83
|
+
|
|
84
|
+
**Rationale:** {Why this decision}
|
|
85
|
+
|
|
86
|
+
**Conditions:** {Any constraints on the approved change}
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 4. Execution Plan
|
|
91
|
+
|
|
92
|
+
> Filled after decision is approved.
|
|
93
|
+
|
|
94
|
+
- **Stories affected:** {Which stories need spec updates}
|
|
95
|
+
- **New stories needed:** {If any — add to backlog or current sprint}
|
|
96
|
+
- **Bounce impact:** {Which passes reset — Dev only / Dev + QA / full restart}
|
|
97
|
+
- **Timeline:** {Can it fit in current sprint or deferred?}
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Change Log
|
|
102
|
+
|
|
103
|
+
| Date | Author | Change |
|
|
104
|
+
|------|--------|--------|
|
|
105
|
+
| {YYYY-MM-DD} | {name} | Created |
|
package/templates/sprint.md
CHANGED
|
@@ -86,16 +86,30 @@ V-Bounce State: Draft / Refinement / Ready to Bounce
|
|
|
86
86
|
- **Phase 1 (parallel)**: {Story IDs that can run simultaneously}
|
|
87
87
|
- **Phase 2 (sequential)**: {Story IDs with dependencies — run in order}
|
|
88
88
|
|
|
89
|
-
###
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
### Execution Mode
|
|
90
|
+
> L1 → Fast Track (Dev → DevOps, skip QA/Arch). L2 → Fast Track only with human approval below. L3/L4 → Full Bounce always.
|
|
91
|
+
|
|
92
|
+
| Story | Label | Mode | Human Approved? |
|
|
93
|
+
|-------|-------|------|-----------------|
|
|
94
|
+
| STORY-XXX-YY | L2 | Full Bounce / Fast Track | — / Yes |
|
|
95
|
+
|
|
96
|
+
### Shared File Map
|
|
97
|
+
> Stories touching the same files MUST merge sequentially (first-in wins). Flag these during planning.
|
|
98
|
+
|
|
99
|
+
| File / Module | Stories Touching It | Merge Order |
|
|
100
|
+
|---------------|--------------------:|-------------|
|
|
101
|
+
| `{src/path/file.ts}` | STORY-A, STORY-B | A before B |
|
|
92
102
|
|
|
93
103
|
### Dependency Chain
|
|
94
|
-
> Stories that MUST run sequentially (depends_on
|
|
104
|
+
> Stories that MUST run sequentially (depends_on OR shared files).
|
|
95
105
|
|
|
96
106
|
| Story | Depends On | Reason |
|
|
97
107
|
|-------|-----------|--------|
|
|
98
|
-
| STORY-XXX-YY | STORY-XXX-YY | {
|
|
108
|
+
| STORY-XXX-YY | STORY-XXX-YY | {depends_on / shared file / data dependency} |
|
|
109
|
+
|
|
110
|
+
### Risk Flags
|
|
111
|
+
- {Sprint-specific risks pulled from Risk Registry}
|
|
112
|
+
- {External dependency risks}
|
|
99
113
|
|
|
100
114
|
---
|
|
101
115
|
|