25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

10KB

Sprint Retrospective

Sprint: 2 Date: 2026-09-18 Facilitated by: scrum-master, per process/05_sprint_retrospective.md Inputs used: backlog/sprints/sprint-2.md (Daily Scrum Log + Sprint Review Outcome), code/BENCHMARK.md, logs/technical_debt_log.md, logs/impediment_log.md, backlog/sprints/sprint-1-retrospective.md (for follow-through check). No live human team to poll in real time this sprint; subjective signals are synthesized from dev-team's own daily-scrum notes and self-reported gaps rather than invented.

Signals

Objective:

  • 5/5 committed stories Done (19 points), sprint goal assessed “met” at Sprint Review (backlog/sprints/sprint-2.md, Sprint Review Outcome).
  • Test suite grew from 111 (Sprint 1 end) to a final verified 195/195 (143 Desktop.Tests + 52 Cli.Tests), cross-checked against the completion report's project-level split.
  • 0 new impediments logged; the two pre-existing open impediments (template path strategy, UNC timeout) remained non-blocking and untouched, as expected.
  • 1 technical debt item logged this sprint (render throughput degradation, Impact: High, Open) — a real, previously-unknown product risk surfaced deliberately by design, not an accident.
  • 1 self-caught, same-batch-fixed issue (a WinForms TableLayoutPanel layout bug in Batch 4) — resolved within scope, not carried as debt.

Subjective (from dev-team's daily-scrum notes):

  • Dependency-ordered batch swarming (Sprint 1's named strength) was reused again this sprint, unprompted deviation-free.
  • Every GUI-facing story this sprint carried live, actual-built-.exe verification (screenshots, real click/drag/type sequences) — a direct, demonstrated answer to Sprint 1 retrospective's “thin GUI evidence” finding, not just a stated intention.
  • Consistent honest self-reporting continued: the benchmark's bad news was reported plainly and in detail rather than softened; a small-element click-target UX friction point was named even though it wasn't a defect; the color-not-yet-rendered scope boundary was called out explicitly rather than left implicit.
  • One internal inconsistency noticed while reviewing the daily log: the running test-count arithmetic across Batches 3-4 doesn't add up (Batch 3 reported a 216 total, Batch 4 then reported 153 — a total can't shrink). The final verified count (195/195) is independently cross-checked against the completion report's project-level split (143+52) and is trustworthy; this looks like a one-off transcription slip in an intermediate log line, not a real regression or a DoD problem.

What went well

  • Full follow-through on all four Sprint 1 retrospective action items (see “Follow-up on previous retro's actions” below) — the batch-table pattern was reused, the DoD's new verification bullet was treated as binding, the benchmark was pulled first instead of sliding a third time, and honest gap-reporting continued.
  • The Sprint 1 retrospective's single named weakness (thin, prose-only GUI evidence) was concretely fixed, not just acknowledged — every one of this sprint's four GUI stories has multi-step, screenshotted, real-.exe verification evidence in backlog/epics/02_template_designer_gui_foundation.md.
  • The benchmark spike delivered exactly the value spikes are for: cheap, real information that changed what the team now knows, surfacing a serious 5x-10x+ performance gap against a hard product constraint five sprints before it would otherwise have been found — a clean example of “value of information gained” reasoning, not a sunk-cost benchmark nobody acted on.
  • “Leave it better than you found it” continued: the TableLayoutPanel bug was caught and fixed inline, same batch, no deferral.

What didn't go well

  • The render path is now confirmed to badly miss the 100k-record/10-minute target. This isn't a process failure (surfacing it early via a spike is exactly correct), but it's a serious, previously-latent product risk that now demands urgent Sprint 3 attention.
  • A small, self-contained inconsistency in the daily scrum log's running test-count figures (Batch 3 to Batch 4 shows a total decreasing, which isn't possible) — never affected any DoD sign-off or the final verified count, but is worth a light process-hygiene note.
  • The color property is modeled and persists through save/reopen but still doesn't affect actual rendered PDF output — an intentional, explicitly tracked scope boundary rather than a defect, but worth watching so it doesn't quietly become forgotten debt once epic 2's remaining (image/shape) stories are further out.

Patterns / Insights (prioritized)

  1. (Team-level) Dependency-ordered swarming plus honest gap self-reporting are now confirmed strengths across two sprints in a row, not a one-off — worth continuing to treat as the default operating mode, not something to re-justify each sprint.
  2. (Team-level) Retrospective actions here demonstrably change behavior: a specifically named weakness (thin GUI evidence) was concretely absent this sprint. This is direct evidence the retro loop is working, not producing “feel-good talk but no decisions” (the anti-pattern explicitly checked below).
  3. (Product-level, urgent but not a process/kit matter) The render throughput finding is this sprint's most consequential signal, but it's a backlog-prioritization decision, not a team-process or kit issue — routed to backlog/backlog.md's Sprint 2 Review outcome and Sprint 3 planning, not to a retro action here.
  4. (Process-level, low severity) The daily log's test-count arithmetic slip is real but minor, self-contained, and did not survive into anything load-bearing (the final DoD-relevant number was independently correct). Per AGENTS.md's bar for a kit-level change (a recurring pattern of 2+ occurrences, or one severe occurrence), this single low-severity slip does not qualify — no kit edit proposed. Logged as a deferred watch item instead.

Kit-level decision

No kit edit proposed this retrospective. The only candidate (test-count arithmetic slip) is a single, low-severity, self-contained occurrence that never affected a DoD gate, a Done decision, or state.md — it does not meet AGENTS.md's “recurring pattern (2+) or one severe occurrence” bar for editing templates/, process/, or .claude/agents/ files. Kept as a deferred watch item (below); revisit only if it recurs.

Action Items (added to Sprint 3's plan)

  • Prioritize “Investigate and address high-volume render throughput degradation” (backlog/epics/05_cli_rendering_engine_and_debenu_integration.md) at or near the top of Sprint 3 planning, given its High technical-debt impact and direct threat to a hard product constraint — owner: product-owner (facilitated by scrum-master) — due: Sprint 3 planning.
  • Continue requiring live, actual-built-artifact verification (not just an in-process harness) for every GUI-facing story, now that it's been demonstrated twice — owner: dev-team — due: ongoing.
  • Double-check running test-count totals before writing them into the daily scrum log (a light process-hygiene habit, not a new DoD gate) — owner: dev-team — due: ongoing.
  • Continue “leave it better than you found it” and honest gap self-reporting — no process change needed, named as an expectation carried forward — owner: dev-team — due: ongoing.

Deferred / lower-priority ideas (kept, not discarded)

  • Whether the small-canvas-element click-target friction (self-reported in the “Place and move text elements” story) warrants a dedicated UX-polish story — revisit if an operator reports the same friction in practice, not preemptively.
  • Whether the color-modeled-but-not-rendered gap needs its own story now or can ride along with a future epic 2 image/shape story — revisit when epic 2's remaining scope is next picked up.
  • The test-count arithmetic slip noted above — watch for a second occurrence; if it recurs, it would then meet the bar for a small process note (e.g., “recompute, don't hand-carry, the running total”) in process/03_sprint_execution.md.

Follow-up on previous retro's actions

All four of Sprint 1's retrospective action items were carried into Sprint 2's plan and applied, confirmed via backlog/sprints/sprint-2.md's Notes section and Daily Scrum Log:

  1. Reuse the dependency-ordered “Execution Order” batch table — Applied (Batches 1-5 sequenced explicitly by dependency, benchmark pulled out of epic order deliberately).
  2. Treat the (now-applied) DoD verification bullet as binding for launch/packaging/config-resolution changes — Applied as a standing check; correctly did not fire this sprint since no committed story touched launch/packaging/config resolution.
  3. Pull the high-volume benchmark early in Sprint 2 and re-trigger it if a later batch touches the render/progress hot path — Applied: pulled first (Batch 1), and no later Sprint 2 batch touched the render hot path (all four remaining batches were GUI-designer-only), so no re-trigger was needed.
  4. Continue “leave it better than you found it” and honest gap self-reporting — Applied throughout (see Signals above).

No drops. This is a clean full-follow-through sprint.

Anti-patterns checked

  • No follow-through on prior retro actions: Ruled out — all four Sprint 1 actions were applied, not just referenced (see above).
  • Blame-focused discussion: Ruled out. All findings (the throughput degradation, the test-count slip, the click-target friction) are described in terms of the system, the vendor library, or a documentation habit — never attributed to an individual.
  • Hidden mini-waterfall within the sprint: Ruled out. The daily log shows each batch designed, built, tested, and verified together in one pass, same as Sprint 1 — no evidence of splitting design/build/test across separate sequential phases.
  • Avoiding an obvious known problem: Ruled out, and worth calling out as a positive example — the render throughput risk could easily have been softened or buried given it contradicts a hard product constraint, but it was investigated to a documented root-cause hypothesis, escalated to both the backlog and the tech debt log, and named explicitly in the Sprint Review rather than minimized.
  • Status-theater (a near-miss named explicitly in Sprint 1): Ruled out and improved — this sprint's GUI evidence is stronger (live, multi-step, screenshotted) than Sprint 1's, directly closing the near-miss named last retro rather than repeating it.

Powered by TurnKey Linux.