wize-sprint-planning · git:20260613.a8c0f41 · 2026-06-13 · sha256 913efbb2382552ad
wize-sprint-planning git:20260613.a8c0f41A
Immutable. This exact content is served forever at /api/v1/blob/913efbb2382552ad.
--- description: "4-implementation: Sprint Planning" globs: alwaysApply: false --- # Sprint Planning # Sprint Planning **Goal.** Pick what enters this sprint. Capacity-honest, priority-honest, risk-honest. The sprint is a commitment about a small slice of the future, not a wish list. Maria Hill chairs. Tony advises on slicing. Hawkeye flags risk on stories. Shuri commits to the load. ## Inputs - Story backlog: `.wize/solutioning/stories/` - Velocity history: `.wize/implementation/sprint-status.md` (previous sprints) — when present. - `.wize/implementation/tea/risk-profile.md` - Open `tea-gate` outcomes from last sprint. - Team availability for the next interval (vacations, on-call rotation, planned meetings). ## Output - New sprint block appended to `.wize/implementation/sprint-status.md`. - Story files updated `priority: 1` for chosen stories. ## Rules 1. **Capacity = min(history velocity, declared availability).** Not the average of optimistic estimates. 2. **High-risk stories** (linked to `R-x` HIGH in risk profile) get TEA design done in the planning meeting, not at story start. 3. **Stretch goals** are explicit, named, not silent. If a stretch ships, great. If not, the sprint isn't a failure. 4. **Don't carry over without reason.** A carried-over story gets a one-line "why" in the sprint log. ## Steps ### 1. Look back (3 min) Last sprint: what shipped, what slipped, what surprised. Don't relitigate; observe. ### 2. Refresh capacity - Person-days available this sprint = sum(working days) × (1 - meetings load). - Subtract on-call burden, oncall handoff time, planned reviews. ### 3. Pull stories (in priority order) Default selection algorithm: - Always pull continuation stories (in-flight from last sprint) first. - Then highest-priority stories that fit the capacity. - Then risk-driven: high-risk stories (R-HIGH) preferred over more low-risk ones when capacity is tight. For each pulled story, confirm INVEST still holds; re-slice if needed. ### 4. Reserve buffer 10–15% buffer for unknowns (bug fixes, support escalations). Don't fill the sprint to 100% — you'll always pay. ### 5. Walk the gate plan For each story pulled, what's the TEA gate cadence? Most stories: design at start, trace + review + gate at end. High-risk: include NFR re-check at epic close. ### 6. Commit (verbal + written) Each engineer reads back the stories they're owning. Hill writes them into the sprint block. Sprint starts. ## Sprint block template (appended to `sprint-status.md`) ```markdown ## Sprint 7 — 2026-06-12 → 2026-06-25 **Capacity:** 24 person-days (3 engineers × 10 days × 0.8 utilization) **Carry-over:** E01-S05 (90% done; Shuri); E03-S01 (TEA review pending) **Pulled:** - E01-S06 — M — owner: Shuri — gate cadence: design+gate - E02-S02 — L — owner: Shuri — gate cadence: design+trace+review+gate (R-3) - E03-S02 — M — owner: Aaliyah — gate cadence: design+trace+review+gate (R-1) - E04-S01 — S — owner: Shuri — gate cadence: smoke (quick-dev pattern) - E02-S03 — S — stretch **Out (deferred to Sprint 8):** - E03-S03 — reason: depends on E03-S02 ADR - E05-S01 — reason: out of NFR-cost budget; revisit **Risks flagged:** - E02-S02 — auth refresh story; high-risk; TEA design done at planning. ``` ## Anti-patterns Hill rejects - **"Optimistic" velocity that ignores history.** Use observed velocity. - **Stories pulled without owners.** Don't aspire; commit. - **Stretch goals so big they're really plan.** Stretch = optional, not "we hope we can." - **Pulling a story when its dependency hasn't shipped.** It will sit blocked. - **No buffer.** Real sprints have surprises. ## Hand-off > Sprint 7 committed at `.wize/implementation/sprint-status.md`. Shuri owns most; Aaliyah picks up E03-S02. Hawkeye, NFR gate due on E03 at sprint end. Wizer, retro on the 25th.