@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.
@@ -1,4 +1,4 @@
1
- # Mid-Sprint Change Request Triage
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 (technical direction shift)
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** | If L1 (1-2 files): Hotfix Path. If larger: add as a bug-fix task within the current story bounce. | Does NOT increment QA/Arch bounce count. |
42
- | **Spec Clarification** | Update Story spec inline (§1 or §2). Add a note in the Change Log. Continue current bounce. | Does NOT reset or increment bounce count. |
43
- | **Scope Change** | Pause bounce. Update Story spec. If scope grew significantly, consider splitting into a new story. Reset Dev pass (QA/Arch counts preserved if prior passes are still valid). | Resets Dev pass only. Prior QA/Arch passes invalidated if the change affects tested areas. |
44
- | **Approach Change** | Update Story §3 Implementation Guide. Re-delegate to Developer with updated context. | Resets Dev pass only. Prior QA/Arch passes invalidated. |
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 change request MUST be logged in the Sprint Plan `sprint-{XX}.md` §4 Execution Log:
51
+ Every triage event MUST be logged in the Sprint Plan `sprint-{XX}.md` §4 Execution Log:
49
52
 
50
53
  ```
51
- | {timestamp} | CR | {Category} | {STORY-ID} | {One-line description} |
54
+ | {Story or N/A} | {Category} | 0 | 0 | — | CR: {One-line description} |
52
55
  ```
53
56
 
54
- Use `CR` as the event type to distinguish from regular bounce events.
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 CRs. This keeps change-request-driven work separate from agent-driven bounces so metrics aren't skewed.
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} | Spec Clarification | Clarified admin role scope | No bounce reset |
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 are expensive.** Always pause, update the spec, and confirm with the user before resuming.
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 🟢 (§2 Scope and §4 Tech Context filled) |
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
  ```
@@ -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 generates `.bounce/improvement-suggestions.md`
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 2-3 sprints (recommended cadence for applying approved changes)
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 `./scripts/pre_bounce_sync.sh` to update RAG embeddings with the new framework content
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 pre_bounce_sync.sh after changes.** Updated skills and rules must be re-indexed for RAG.
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
@@ -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 |
@@ -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
- ### Risk Flags
90
- - {Which stories touch shared modules coordinate access}
91
- - {Sprint-specific risks pulled from Risk Registry}
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 relationships).
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 | {why sequential} |
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