@sandrinio/vbounce 1.3.2 → 1.5.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.
@@ -41,9 +41,9 @@ Every story gets its own worktree. This isolates code changes so a failed fix on
41
41
  ```
42
42
  main ← production
43
43
  └── sprint/S-01 ← sprint branch (cut from main)
44
- ├── story/STORY-001-01 ← story branch (worktree)
45
- ├── story/STORY-001-02 ← story branch (worktree)
46
- └── story/STORY-001-03 ← story branch (worktree)
44
+ ├── story/STORY-001-01-login ← story branch (worktree)
45
+ ├── story/STORY-001-02-auth ← story branch (worktree)
46
+ └── story/STORY-001-03-api ← story branch (worktree)
47
47
  ```
48
48
 
49
49
  ### Directory Layout
@@ -51,12 +51,12 @@ main ← production
51
51
  ```
52
52
  repo/ ← main working directory
53
53
  ├── .worktrees/ ← worktree root (GITIGNORED)
54
- │ ├── STORY-001-01/ ← isolated worktree for story
54
+ │ ├── STORY-001-01-login/ ← isolated worktree for story
55
55
  │ │ ├── (full codebase checkout)
56
56
  │ │ └── .bounce/ ← reports live here during bounce
57
57
  │ │ ├── tasks/
58
58
  │ │ └── reports/
59
- │ └── STORY-001-02/
59
+ │ └── STORY-001-02-auth/
60
60
  │ └── ...
61
61
 
62
62
  └── .bounce/
@@ -74,8 +74,8 @@ repo/ ← main working directory
74
74
  | V-Bounce State | Git Operation |
75
75
  |---------------|---------------|
76
76
  | Sprint starts | `git checkout -b sprint/S-01 main` |
77
- | Ready to Bounce | `git worktree add .worktrees/STORY-{ID} -b story/STORY-{ID} sprint/S-01` |
78
- | Bouncing | All work happens inside `.worktrees/STORY-{ID}/` |
77
+ | Ready to Bounce | `git worktree add .worktrees/STORY-{ID}-{StoryName} -b story/STORY-{ID}-{StoryName} sprint/S-01` |
78
+ | Bouncing | All work happens inside `.worktrees/STORY-{ID}-{StoryName}/` |
79
79
  | Done | Merge story branch → sprint branch, `git worktree remove` |
80
80
  | Sprint Review → Done | Merge sprint branch → main |
81
81
  | Escalated | Worktree kept but frozen (no new commits) |
@@ -88,19 +88,19 @@ repo/ ← main working directory
88
88
  git checkout -b sprint/S-01 main
89
89
 
90
90
  # Create worktree for a story
91
- git worktree add .worktrees/STORY-001-01 -b story/STORY-001-01 sprint/S-01
92
- mkdir -p .worktrees/STORY-001-01/.bounce/{tasks,reports}
91
+ git worktree add .worktrees/STORY-001-01-login -b story/STORY-001-01-login sprint/S-01
92
+ mkdir -p .worktrees/STORY-001-01-login/.bounce/{tasks,reports}
93
93
 
94
94
  # List active worktrees
95
95
  git worktree list
96
96
 
97
97
  # Merge completed story into sprint branch
98
98
  git checkout sprint/S-01
99
- git merge story/STORY-001-01 --no-ff -m "Merge STORY-001-01: {Story Name}"
99
+ git merge story/STORY-001-01-login --no-ff -m "Merge STORY-001-01: {Story Name}"
100
100
 
101
101
  # Remove worktree after merge
102
- git worktree remove .worktrees/STORY-001-01
103
- git branch -d story/STORY-001-01
102
+ git worktree remove .worktrees/STORY-001-01-login
103
+ git branch -d story/STORY-001-01-login
104
104
 
105
105
  # Merge sprint into main
106
106
  git checkout main
@@ -117,16 +117,16 @@ The Team Lead spawns agents using Claude Code's Task tool. Each subagent works i
117
117
 
118
118
  **Critical:** Always set the working directory to the worktree when delegating:
119
119
  ```
120
- Lead: "Use the developer subagent. Working directory: .worktrees/STORY-001-01/
121
- Read the story spec at product_plans/{delivery}/EPIC-001_{name}/STORY-001-01.md
120
+ Lead: "Use the developer subagent. Working directory: .worktrees/STORY-001-01-login/
121
+ Read the story spec at product_plans/sprints/sprint-{XX}/STORY-001-01-login.md
122
122
  and implement it.
123
- Write the implementation report to .bounce/reports/STORY-001-01-dev.md"
123
+ Write the implementation report to .bounce/reports/STORY-001-01-login-dev.md"
124
124
  ```
125
125
 
126
126
  **Parallel delegation (independent stories in separate worktrees):**
127
127
  ```
128
- Lead: "Use the developer subagent in .worktrees/STORY-001-01/"
129
- AND "Use the developer subagent in .worktrees/STORY-001-02/"
128
+ Lead: "Use the developer subagent in .worktrees/STORY-001-01-login/"
129
+ AND "Use the developer subagent in .worktrees/STORY-001-02-auth/"
130
130
  (safe — each worktree is fully isolated)
131
131
  ```
132
132
 
@@ -141,7 +141,7 @@ For sustained parallel coordination with inter-agent messaging. Enable with `CLA
141
141
 
142
142
  For tools without native subagent support (Cursor, Codex, Gemini, Antigravity):
143
143
 
144
- 1. Lead writes a task file to `.worktrees/STORY-{ID}/.bounce/tasks/STORY-{ID}-{agent}.md`
144
+ 1. Lead writes a task file to `.worktrees/STORY-{ID}-{StoryName}/.bounce/tasks/STORY-{ID}-{StoryName}-{agent}.md`
145
145
  2. Open the worktree directory in the target tool (Cursor, Antigravity, etc.)
146
146
  3. Agent reads the task file, executes, writes report to `.bounce/reports/`
147
147
  4. Lead monitors reports from the main repo
@@ -150,9 +150,9 @@ For tools without native subagent support (Cursor, Codex, Gemini, Antigravity):
150
150
 
151
151
  ## The Report Buffer (Hybrid Model)
152
152
 
153
- **During bounce:** Reports live INSIDE the story's worktree at `.worktrees/STORY-{ID}/.bounce/reports/`. This keeps reports co-located with the code they describe.
153
+ **During bounce:** Reports live INSIDE the story's worktree at `.worktrees/STORY-{ID}-{StoryName}/.bounce/reports/`. This keeps reports co-located with the code they describe.
154
154
 
155
- **After story completes:** Reports are archived to the shared `.bounce/archive/S-{XX}/STORY-{ID}/` in the main repo before the worktree is removed.
155
+ **After story completes:** Reports are archived to the shared `.bounce/archive/S-{XX}/STORY-{ID}-{StoryName}/` in the main repo before the worktree is removed.
156
156
 
157
157
  **Sprint Report:** Always written to `.bounce/sprint-report.md` in the main repo (not in any worktree).
158
158
 
@@ -161,13 +161,13 @@ For tools without native subagent support (Cursor, Codex, Gemini, Antigravity):
161
161
  `STORY-{EpicID}-{StoryID}-{agent}[-bounce{N}].md`
162
162
 
163
163
  Examples:
164
- - `STORY-001-01-dev.md` — first Dev report
165
- - `STORY-001-01-qa-bounce1.md` — first QA report (found bugs)
166
- - `STORY-001-01-dev-bounce2.md` — Dev's fix after QA bounce
167
- - `STORY-001-01-qa-bounce2.md` — second QA report (passed)
168
- - `STORY-001-01-arch.md` — Architect audit
169
- - `STORY-001-01-devops.md` — DevOps merge report
170
- - `STORY-001-01-conflict.md` — Spec conflict (if any)
164
+ - `STORY-001-01-login-dev.md` — first Dev report
165
+ - `STORY-001-01-login-qa-bounce1.md` — first QA report (found bugs)
166
+ - `STORY-001-01-login-dev-bounce2.md` — Dev's fix after QA bounce
167
+ - `STORY-001-01-login-qa-bounce2.md` — second QA report (passed)
168
+ - `STORY-001-01-login-arch.md` — Architect audit
169
+ - `STORY-001-01-login-devops.md` — DevOps merge report
170
+ - `STORY-001-01-login-conflict.md` — Spec conflict (if any)
171
171
  - `sprint-S-01-devops.md` — Sprint release report
172
172
  - `sprint-S-01-scribe.md` — Documentation generation report
173
173
 
@@ -184,11 +184,11 @@ Examples:
184
184
  2. Read RISK_REGISTRY.md — check for open risks relevant to this sprint's stories.
185
185
  If high-severity risks affect planned stories, flag to human before proceeding.
186
186
 
187
- 3. Read DELIVERY_PLAN.md — check §5 Open Questions.
187
+ 3. Read sprint-{XX}.md — check §2 Sprint Open Questions.
188
188
  If unresolved questions block stories in this sprint, flag to human.
189
189
  Do NOT start bouncing stories with unresolved blocking questions.
190
190
 
191
- 4. If product_documentation/_manifest.json exists, read it.
191
+ 4. If vdocs/_manifest.json exists, read it.
192
192
  Understand what's already documented — this informs which stories
193
193
  may require doc updates after the sprint.
194
194
 
@@ -207,27 +207,34 @@ Examples:
207
207
  - Verify `.gitignore` includes `.worktrees/`
208
208
  If any check fails, fix before spawning parallel stories. Intermittent test failures from worktree cross-contamination erode trust in the test suite fast.
209
209
 
210
- 7. Update DELIVERY_PLAN.md: Sprint Status → "Active"
210
+ 7. **Dependency Check & Execution Mode**:
211
+ - For each story, check the `Depends On:` field in its template.
212
+ - If Story B depends on Story A, you MUST execute them sequentially. Do not create Story B's worktree or spawn its Developer until Story A has successfully passed the DevOps merge step.
213
+ - Determine Execution Mode:
214
+ - **Full Bounce (Default)**: Normal L2-L4 stories go through full Dev → QA → Architect → DevOps flow.
215
+ - **Fast Track (L1/L2 Minor)**: For cosmetic UI tweaks or isolated refactors, execute Dev → DevOps only. Skip QA and Architect loops to save overhead. Validate manually during Sprint Review.
216
+
217
+ 8. Update sprint-{XX}.md: Status → "Active"
211
218
  ```
212
219
 
213
220
  ### Step 1: Story Initialization
214
221
  For each story with V-Bounce State "Ready to Bounce":
215
222
  ```bash
216
223
  # Create isolated worktree
217
- git worktree add .worktrees/STORY-{ID} -b story/STORY-{ID} sprint/S-01
218
- mkdir -p .worktrees/STORY-{ID}/.bounce/{tasks,reports}
224
+ git worktree add .worktrees/STORY-{ID}-{StoryName} -b story/STORY-{ID}-{StoryName} sprint/S-01
225
+ mkdir -p .worktrees/STORY-{ID}-{StoryName}/.bounce/{tasks,reports}
219
226
  ```
220
227
  - Read the full Story spec
221
228
  - Read LESSONS.md
222
229
  - Check RISK_REGISTRY.md for risks tagged to this story or its Epic
223
- - If `product_documentation/_manifest.json` exists, identify docs relevant to this story's scope (match against manifest descriptions/tags). Include relevant doc references in the task file so the Developer has product context.
230
+ - If `vdocs/_manifest.json` exists, identify docs relevant to this story's scope (match against manifest descriptions/tags). Include relevant doc references in the task file so the Developer has product context.
224
231
  - **Adjacent implementation check:** For stories that modify or extend modules touched by earlier stories in this sprint, identify existing implementations the Developer should reuse. Add to the task file: `"Reuse these existing modules: {list with file paths and brief description of what each provides}"`. This prevents agents from independently re-implementing logic that already exists — a common source of duplication when stories run in parallel.
225
- - Create task file in `.worktrees/STORY-{ID}/.bounce/tasks/`
226
- - Update DELIVERY_PLAN.md: V-Bounce State → "Bouncing"
232
+ - Create task file in `.worktrees/STORY-{ID}-{StoryName}/.bounce/tasks/`
233
+ - Update sprint-{XX}.md: V-Bounce State → "Bouncing"
227
234
 
228
235
  ### Step 2: Developer Pass
229
236
  ```
230
- 1. Spawn developer subagent in .worktrees/STORY-{ID}/ with:
237
+ 1. Spawn developer subagent in .worktrees/STORY-{ID}-{StoryName}/ with:
231
238
  - Story §1 The Spec + §3 Implementation Guide
232
239
  - LESSONS.md
233
240
  - Relevant react-best-practices rules
@@ -238,13 +245,13 @@ mkdir -p .worktrees/STORY-{ID}/.bounce/{tasks,reports}
238
245
 
239
246
  ### Step 3: QA Pass
240
247
  ```
241
- 1. Spawn qa subagent in .worktrees/STORY-{ID}/ with:
248
+ 1. Spawn qa subagent in .worktrees/STORY-{ID}-{StoryName}/ with:
242
249
  - Developer Implementation Report
243
250
  - Story §2 The Truth (acceptance criteria)
244
251
  - LESSONS.md
245
252
  2. QA validates against Gherkin scenarios, runs vibe-code-review
246
253
  3. If FAIL:
247
- - QA writes Bug Report (STORY-{ID}-qa-bounce{N}.md)
254
+ - QA writes Bug Report (STORY-{ID}-{StoryName}-qa-bounce{N}.md)
248
255
  - Increment bounce counter
249
256
  - If QA bounce count >= 3 → V-Bounce State → "Escalated", STOP
250
257
  - Else → Return to Step 2 with Bug Report as input
@@ -255,7 +262,7 @@ mkdir -p .worktrees/STORY-{ID}/.bounce/{tasks,reports}
255
262
 
256
263
  ### Step 4: Architect Pass
257
264
  ```
258
- 1. Spawn architect subagent in .worktrees/STORY-{ID}/ with:
265
+ 1. Spawn architect subagent in .worktrees/STORY-{ID}-{StoryName}/ with:
259
266
  - All reports for this story
260
267
  - Full Story spec + Roadmap §3 ADRs
261
268
  - LESSONS.md
@@ -265,6 +272,8 @@ mkdir -p .worktrees/STORY-{ID}/.bounce/{tasks,reports}
265
272
  - Else → Return to Step 2 with Architect feedback as input
266
273
  3. If PASS:
267
274
  - V-Bounce State → "Architect Passed"
275
+
276
+ *(Note: If the Team Lead assigned this story to the "Fast Track" execution mode, skip Steps 3 and 4 entirely. The Developer passes directly to Step 5: DevOps Story Merge.)*
268
277
  ```
269
278
 
270
279
  ### Step 5: Story Merge (DevOps)
@@ -275,17 +284,17 @@ mkdir -p .worktrees/STORY-{ID}/.bounce/{tasks,reports}
275
284
  - LESSONS.md
276
285
  2. DevOps performs:
277
286
  - Pre-merge checks (worktree clean, gate reports verified)
278
- - Archive reports to .bounce/archive/S-{XX}/STORY-{ID}/
287
+ - Archive reports to .bounce/archive/S-{XX}/STORY-{ID}-{StoryName}/
279
288
  - Merge story branch into sprint branch (--no-ff)
280
289
  - Post-merge validation (tests + build on sprint branch)
281
290
  - Worktree removal and story branch cleanup
282
- 3. DevOps writes Merge Report to .bounce/archive/S-{XX}/STORY-{ID}/STORY-{ID}-devops.md
291
+ 3. DevOps writes Merge Report to .bounce/archive/S-{XX}/STORY-{ID}-{StoryName}/STORY-{ID}-{StoryName}-devops.md
283
292
  4. If merge conflicts:
284
293
  - Simple (imports, whitespace): DevOps resolves directly
285
294
  - Complex (logic): DevOps writes Conflict Report, Lead creates fix story
286
295
  5. If post-merge tests fail: DevOps reverts merge, reports failure to Lead
287
296
  ```
288
- Update DELIVERY_PLAN.md: V-Bounce State → "Done"
297
+ Update sprint-{XX}.md: V-Bounce State → "Done"
289
298
 
290
299
  ### Step 6: Sprint Integration Audit
291
300
  After ALL stories are merged into `sprint/S-01`:
@@ -300,8 +309,15 @@ After ALL stories are merged into `sprint/S-01`:
300
309
  ### Step 7: Sprint Consolidation
301
310
  ```
302
311
  1. Read all archived reports in .bounce/archive/S-{XX}/
303
- 2. Generate Sprint Report to .bounce/sprint-report.md
304
- 3. V-Bounce State → "Sprint Review" for all stories
312
+ 2. **Sum the `tokens_used` field** from every agent report to calculate the sprint's total resource cost.
313
+ 3. Generate Sprint Report to .bounce/sprint-report.md:
314
+ - Ensure the Sprint Report starts with a YAML frontmatter block containing:
315
+ ```yaml
316
+ ---
317
+ total_tokens_used: {sum of all agent tokens}
318
+ ---
319
+ ```
320
+ 4. V-Bounce State → "Sprint Review" for all stories
305
321
  4. Present Sprint Report to human
306
322
  5. **BLOCKING STEP — Lesson Approval:**
307
323
  Review and approve/reject ALL flagged lessons from §4 of the Sprint Report.
@@ -318,11 +334,17 @@ After ALL stories are merged into `sprint/S-01`:
318
334
  6. Lead finalizes:
319
335
  - Move sprint-report.md to .bounce/archive/S-{XX}/
320
336
  - Record lessons (with user approval)
321
- - Update DELIVERY_PLAN.md
322
- 7. Product Documentation check (runs on `main` after sprint merge):
337
+ - Update delivery_plan.md to reflect the completed sprint.
338
+ 7. **Framework Self-Assessment** (aggregated from agent reports):
339
+ - Collect all `## Process Feedback` sections from agent reports in `.bounce/archive/S-{XX}/`
340
+ - Populate §5 Framework Self-Assessment tables in the Sprint Report by category
341
+ - If this is the 2nd or 3rd consecutive sprint, or if any Blocker-severity findings exist:
342
+ - Offer to run the `improve` skill to propose framework changes
343
+ - If user approves → read `skills/improve/SKILL.md` and execute the improvement process
344
+ 8. Product Documentation check (runs on `main` after sprint merge):
323
345
  - If sprint delivered 3+ features, or if any Developer report flagged
324
346
  stale product docs → offer to run vdoc to generate/update
325
- product_documentation/
347
+ vdocs/
326
348
  - If user approves → spawn scribe subagent on `main` branch with:
327
349
  - Sprint Report (what was built)
328
350
  - Dev reports that flagged affected product docs
@@ -338,11 +360,11 @@ After ALL stories are merged into `sprint/S-01`:
338
360
  ## Cleanup Process
339
361
 
340
362
  ### After Each Story Completes (DevOps handles via Step 5)
341
- 1. Archive reports to `.bounce/archive/S-{XX}/STORY-{ID}/`
363
+ 1. Archive reports to `.bounce/archive/S-{XX}/STORY-{ID}-{StoryName}/`
342
364
  2. Merge story branch into sprint branch (--no-ff)
343
365
  3. Validate tests/build on sprint branch
344
- 4. Remove worktree: `git worktree remove .worktrees/STORY-{ID}`
345
- 5. Delete story branch: `git branch -d story/STORY-{ID}`
366
+ 4. Remove worktree: `git worktree remove .worktrees/STORY-{ID}-{StoryName}`
367
+ 5. Delete story branch: `git branch -d story/STORY-{ID}-{StoryName}`
346
368
  6. Write DevOps Merge Report
347
369
 
348
370
  ### After Sprint Completes (DevOps handles via Step 7)
@@ -352,7 +374,7 @@ After ALL stories are merged into `sprint/S-01`:
352
374
  4. Delete sprint branch: `git branch -d sprint/S-{XX}`
353
375
  5. Verify `.worktrees/` is empty (all worktrees removed)
354
376
  6. Write Sprint Release Report
355
- 7. Lead updates DELIVERY_PLAN.md: move sprint to §6 Completed Sprints
377
+ 7. Lead archives the sprint folder to `archive/` according to doc-manager physical move rules.
356
378
 
357
379
  ### After Delivery Completes (Team Lead handles)
358
380
  When ALL sprints in a delivery (release) are done:
@@ -377,19 +399,19 @@ When ALL sprints in a delivery (release) are done:
377
399
 
378
400
  ---
379
401
 
380
- ## Delivery Plan Sync
402
+ ## Sprint Plan Sync
381
403
 
382
- The Team Lead MUST update DELIVERY_PLAN.md at every state transition. This is the source of truth.
404
+ The Team Lead MUST update the active `sprint-{XX}.md` at every state transition. This is the source of truth for execution.
383
405
 
384
- | Action | Delivery Plan Update |
406
+ | Action | Sprint Plan Update |
385
407
  |--------|---------------------|
386
- | Worktree created | §3 Active Sprint: V-Bounce State → "Bouncing" |
408
+ | Worktree created | §1 Active Scope: V-Bounce State → "Bouncing" |
387
409
  | Dev report written | No update (still "Bouncing") |
388
- | QA passes | §3 Active Sprint: V-Bounce State → "QA Passed" |
389
- | Architect passes | §3 Active Sprint: V-Bounce State → "Architect Passed" |
390
- | DevOps merges story | §3 Active Sprint: V-Bounce State → "Done" |
391
- | Escalated | §4 Backlog → Escalated table |
392
- | DevOps merges sprint | §6 Completed Sprints: add summary row |
410
+ | QA passes | §1 Active Scope: V-Bounce State → "QA Passed" |
411
+ | Architect passes | §1 Active Scope: V-Bounce State → "Architect Passed" |
412
+ | DevOps merges story | §1 Active Scope: V-Bounce State → "Done" |
413
+ | Escalated | §1 Escalated table |
414
+ | DevOps merges sprint | Update `delivery_plan.md` to flag sprint delivered |
393
415
 
394
416
  ---
395
417
 
@@ -398,19 +420,23 @@ The Team Lead MUST update DELIVERY_PLAN.md at every state transition. This is th
398
420
  ### Spec Conflict
399
421
  Developer writes a Spec Conflict Report. Lead pauses the bounce:
400
422
  - Remove worktree (preserve branch for reference)
401
- - Return story to Refinement in DELIVERY_PLAN.md
423
+ - Return story to Refinement in sprint-{XX}.md and copy it back to backlog/
402
424
  - After spec is fixed, recreate worktree and restart bounce
403
425
 
404
426
  ### Escalated Stories
405
427
  When QA bounce count >= 3 OR Architect bounce count >= 3:
406
428
  - Worktree is kept but frozen (no new work)
407
- - Lead writes Escalation Report to `.bounce/archive/S-{XX}/STORY-{ID}/escalation.md`
429
+ - Lead writes Escalation Report to `.bounce/archive/S-{XX}/STORY-{ID}-{StoryName}/escalation.md`
408
430
  - Human decides: rewrite spec → Refinement, descope → split, kill → Parking Lot
409
431
  - **If returned to Refinement:** The spec has been rewritten. You MUST reset the QA and Architect bounce counters to 0 for this story.
410
432
  - If killed: `git worktree remove`, branch preserved unmerged
411
433
 
412
- ### Mid-Sprint Charter Changes
413
- Charter and Roadmap are **frozen** during active sprints. Changes queued in `CHANGE_QUEUE.md`, applied at sprint boundaries. Critical risks trigger Emergency Sprint Review.
434
+ ### Mid-Sprint Strategic Changes
435
+ Charter and Roadmap are typically **frozen** during active sprints. However, if an emergency requires modifying them:
436
+ 1. You MUST pause active bouncing across all stories.
437
+ 2. Delegate to doc-manager to run the **Sprint Impact Analysis Protocol**.
438
+ 3. Evaluate the active stories in `sprint-{XX}.md` against the new strategy to determine if they are: Unaffected, Require Scope Adjustment, or Invalidated.
439
+ 4. Only abort stories that are explicitly Invalidated by the human. Unaffected stories may resume bouncing.
414
440
 
415
441
  ### Merge Conflicts
416
442
  If merging story branch into sprint branch creates conflicts:
@@ -422,6 +448,7 @@ If merging story branch into sprint branch creates conflicts:
422
448
  ## Critical Rules
423
449
 
424
450
  - **The Lead never writes code.** It plans, delegates, monitors, and consolidates.
451
+ - **Enforce Sequential Dependencies.** Never parallelize stories where one depends on the other. Wait for merge.
425
452
  - **One story = one worktree.** Never mix stories in a single worktree.
426
453
  - **Reports are the only handoff.** No agent communicates with another directly.
427
454
  - **One bounce = one report.** Every agent pass produces exactly one report file.
@@ -430,8 +457,8 @@ If merging story branch into sprint branch creates conflicts:
430
457
  - **Track bounce counts.** QA and Architect bounces are tracked separately per story.
431
458
  - **Git tracking rules.** `.worktrees/`, `.bounce/reports/`, and `.bounce/sprint-report.md` are gitignored (ephemeral). `.bounce/archive/` is **committed to git** (permanent audit trail).
432
459
  - **Check risks before bouncing.** Read RISK_REGISTRY.md at sprint start. Flag high-severity risks that affect planned stories.
433
- - **Resolve open questions first.** Read DELIVERY_PLAN.md §5 Open Questions at sprint start. Do not bounce stories with unresolved blocking questions.
434
- - **Know what's documented.** If `product_documentation/_manifest.json` exists, read it at sprint start. Pass relevant doc references to agents. Offer documentation updates after sprints that deliver new features.
460
+ - **Resolve open questions first.** Read the active `sprint-{XX}.md` §2 Sprint Open Questions at sprint start. Do not bounce stories with unresolved blocking questions.
461
+ - **Know what's documented.** If `vdocs/_manifest.json` exists, read it at sprint start. Pass relevant doc references to agents. Offer documentation updates after sprints that deliver new features.
435
462
 
436
463
  ## Keywords
437
464
 
@@ -69,48 +69,55 @@ Risk Registry ←── ALL levels (cross-cutting input)
69
69
 
70
70
  | Document | Template Path | Output Location |
71
71
  |----------|---------------|-----------------|
72
- | Charter | `templates/charter.md` | `product_plans/{project}_charter.md` |
73
- | Roadmap | `templates/roadmap.md` | `product_plans/{project}_roadmap.md` |
74
- | Risk Registry | `templates/risk_registry.md` | `product_plans/RISK_REGISTRY.md` |
75
- | Delivery Plan | `templates/delivery_plan.md` | `product_plans/{delivery}/DELIVERY_PLAN.md` |
76
- | Epic | `templates/epic.md` | `product_plans/{delivery}/EPIC-{NNN}_{name}/EPIC-{NNN}.md` |
77
- | Story | `templates/story.md` | `product_plans/{delivery}/EPIC-{NNN}_{name}/STORY-{EpicID}-{StoryID}.md` |
78
- | Hotfix | `templates/hotfix.md` | `product_plans/{delivery}/HOTFIX-{Date}-{Name}.md` |
79
- | Sprint Report | `templates/sprint_report.md` | `.bounce/sprint-report.md` (archived after sprint) |
80
-
81
- ### Product Plans Folder Structure
72
+ | Charter | `templates/charter.md` | `product_plans/strategy/{project}_charter.md` |
73
+ | Roadmap | `templates/roadmap.md` | `product_plans/strategy/{project}_roadmap.md` |
74
+ | Risk Registry | `templates/risk_registry.md` | `product_plans/strategy/RISK_REGISTRY.md` |
75
+ | Delivery Plan | `templates/delivery_plan.md` | `product_plans/strategy/{delivery}_delivery_plan.md` |
76
+ | Sprint Plan | `templates/sprint.md` | `product_plans/sprints/sprint-{XX}/sprint-{XX}.md` |
77
+ | Epic | `templates/epic.md` | `product_plans/backlog/EPIC-{NNN}_{name}/EPIC-{NNN}_{name}.md` |
78
+ | Story | `templates/story.md` | `product_plans/backlog/EPIC-{NNN}_{name}/STORY-{EpicID}-{StoryID}-{StoryName}.md` |
79
+ | Hotfix | `templates/hotfix.md` | `product_plans/hotfixes/HOTFIX-{Date}-{Name}.md` |
80
+ | Sprint Report | `templates/sprint_report.md` | `product_plans/sprints/sprint-{XX}/sprint-report.md` |
81
+
82
+ ### Product Plans Folder Structure (State-Based)
82
83
 
83
84
  ```
84
85
  product_plans/
85
- ├── {project}_charter.md project-level (root)
86
- ├── {project}_roadmap.md ← project-level (root)
87
- ├── RISK_REGISTRY.md ← project-level (root)
86
+ ├── strategy/ high-level, frozen during sprints
87
+ ├── charter.md
88
+ ├── roadmap.md
89
+ │ ├── delivery_plan.md ← release timelines
90
+ │ └── risk_registry.md
91
+
92
+ ├── backlog/ ← planned but NOT active
93
+ │ ├── EPIC-001_authentication/
94
+ │ │ ├── EPIC-001_authentication.md
95
+ │ │ ├── STORY-001-01-login_ui.md
96
+ │ │ └── STORY-001-02-auth_api.md
88
97
 
89
- ├── D-01_{release_name}/ delivery folder (1 per release)
90
- │ ├── DELIVERY_PLAN.mdat delivery root
91
- │ ├── EPIC-001_{epic_name}/ epic folder
92
- │ │ ├── EPIC-001.md epic document
93
- │ │ ├── STORY-001-01.md ← stories live with their epic
94
- │ │ └── STORY-001-02.md
95
- │ └── EPIC-002_{epic_name}/
96
- │ ├── EPIC-002.md
97
- │ └── STORY-002-01.md
98
+ ├── sprints/ active execution workspace
99
+ │ ├── sprint-01/active sprint boundary
100
+ ├── sprint-01.md Sprint Plan
101
+ │ │ └── STORY-001-01-login_ui.md (moved here during sprint setup)
98
102
 
99
- ├── D-02_{release_name}/ next delivery
100
- ├── DELIVERY_PLAN.md
101
- │ └── ...
103
+ ├── hotfixes/ emergency tasks bypassing sprints
104
+ └── HOTFIX-20260306-db_crash.md
102
105
 
103
- └── archive/ completed deliveries
104
- └── D-01_{release_name}/ ← whole folder moved here
106
+ └── archive/ immutable history
107
+ ├── sprints/
108
+ │ └── sprint-01/ ← (whole sprint folder moved here when closed)
109
+ │ ├── sprint-01.md
110
+ │ ├── STORY-001-01-login_ui.md
111
+ │ └── sprint-report.md
112
+ └── epics/
113
+ └── EPIC-001_authentication/ ← (moved here only when 100% complete)
105
114
  ```
106
115
 
107
116
  **Key rules:**
108
- - Charter, Roadmap, Risk Registry live at `product_plans/` root (project-level, shared across deliveries)
109
- - Each delivery (= Roadmap Release) gets a folder: `D-{NN}_{release_name}/`
110
- - Each Epic gets a subfolder named `EPIC-{NNN}_{epic_name}/`
111
- - Stories live inside their parent Epic's folder a Story never exists without an Epic
112
- - Delivery Plan lives at the root of its delivery folder
113
- - When a delivery completes: Team Lead moves the entire delivery folder to `product_plans/archive/` and adds a Delivery Log entry to the Roadmap (§7)
117
+ - `strategy/` documents are project-level and frozen while a sprint is active.
118
+ - `backlog/` contains Epics and their unassigned child Stories.
119
+ - `sprints/` contains active 1-week execution boundaries. A Story file physically moves here when a sprint begins.
120
+ - `archive/` is where finished Sprints and finished Epics are moved for permanent record keeping.
114
121
 
115
122
  ### V-Bounce OS Framework Structure
116
123
 
@@ -170,7 +177,8 @@ Before creating any document, YOU MUST:
170
177
 
171
178
  When modifying a document:
172
179
 
173
- 1. **Sprint Freeze Check:** Read `DELIVERY_PLAN.md`. If a sprint is currently Active, the Charter and Roadmap are **FROZEN**. DO NOT modify them directly. Instead, append the requested change to `CHANGE_QUEUE.md` at the project root.
180
+ 1. **Sprint Freeze Check:** Read `sprint-XX.md` (if one exists in `product_plans/sprints/`). If a sprint is currently Active, the Charter and Roadmap are **FROZEN**. DO NOT modify them directly.
181
+ - ***Emergency Impact Analysis Protocol:*** If a human insists on modifying a frozen strategic document mid-sprint, you MUST pause active bouncing and write a Sprint Impact Analysis Report. Evaluate the active stories in `sprint-{XX}.md` against the new strategy to determine if they are: Unaffected, Require Scope Adjustment, or Invalidated. Only Invalidated stories are aborted. Update the documents only after the human approves the Impact Analysis.
174
182
  2. Read the document being modified
175
183
  3. Read upstream documents if the change affects inherited fields
176
184
  4. Make the change
@@ -203,7 +211,7 @@ When modifying a document:
203
211
  - Pull §3 Implementation Guide from Epic §4 Technical Context
204
212
  - Set Complexity Label (L1-L4) based on file count and pattern familiarity
205
213
  4. Link all created Stories back in Epic §9 Artifact Links
206
- 5. Update Delivery Plan §4 Backlog with new stories
214
+ 5. Update Delivery Plan §3 High-Level Backlog with new stories
207
215
 
208
216
  ### TRANSITION — Moving Documents Between Phases
209
217
 
@@ -217,6 +225,12 @@ When modifying a document:
217
225
  | Story → Ready to Bounce | Ambiguity 🟢 + ALL Context Pack items checked (Delivery Plan §5) |
218
226
  | Hotfix → Bouncing | Complexity strictly L1 + Targets 1-2 files |
219
227
 
228
+ **Physical Move Rules for State Transitions:**
229
+
230
+ - **Sprint Setup Phase**: The Team Lead physically MOVES the `STORY-XXX.md` file from `product_plans/backlog/EPIC-XXX/` to `product_plans/sprints/sprint-{XX}/`.
231
+ - **Sprint Closure Phase**: The Team Lead physically MOVES the entire sprint folder (`sprints/sprint-{XX}/`) to `product_plans/archive/sprints/sprint-{XX}/`.
232
+ - **Epic Closure**: Once every story attached to an Epic has been archived, the Epic folder itself is moved from `backlog/` to `archive/epics/`.
233
+
220
234
  **V-Bounce State transitions for Stories:**
221
235
 
222
236
  ```
@@ -249,19 +263,19 @@ Bouncing → Done: Dev implements + Human manually verifies + DevOps runs `hotfi
249
263
  | **Scribe** | Product documentation, _manifest.json | Sprint Report, Dev Reports, codebase |
250
264
  | **PM/BA (Human)** | Charter, Roadmap, Epic, Story §1 + §2 | Everything |
251
265
 
252
- ## Delivery Archiving
266
+ ## Sprint Archiving
253
267
 
254
- When a delivery (release) is complete:
268
+ When a sprint is complete:
255
269
 
256
- 1. Team Lead moves the entire delivery folder to `product_plans/archive/`:
270
+ 1. Team Lead moves the entire sprint folder to the archive:
271
+ ```bash
272
+ mv product_plans/sprints/sprint-{XX}/ product_plans/archive/sprints/sprint-{XX}/
273
+ ```
274
+ 2. Team Lead checks the parent Epics of the completed stories. If an Epic is now 100% complete (all its stories are in the archive), the Team Lead moves the Epic folder:
257
275
  ```bash
258
- mv product_plans/D-01_foundation/ product_plans/archive/D-01_foundation/
276
+ mv product_plans/backlog/EPIC-{NNN}_{name}/ product_plans/archive/epics/EPIC-{NNN}_{name}/
259
277
  ```
260
- 2. Team Lead adds a **Delivery Log** entry to Roadmap §7 with:
261
- - Delivery ID, date, release tag
262
- - Release Notes (summary of sprint reports from this delivery)
263
- - Key metrics (stories delivered, bounce ratio, correction tax averages)
264
- 3. Update Roadmap §2 Release Plan: set the release status to "Delivered"
278
+ 3. Team Lead updates the Epic tracking checklists to reflect the newly archived states.
265
279
 
266
280
  ## Critical Rules
267
281