Task: Health review 1 — sprint 22 mid-sprint analysis

Table of Contents

This page documents a task in the Open sprint 22 story. It captures the goal, current status, acceptance, and any notes or results.

Goal

Produce a System 2 mid-sprint health check for Sprint 22: assess goal alignment, sprint load, PR velocity, story/task balance, and focus, then record a critical, evidence-based verdict so drift is caught before sprint close.

Status

Field Value
State DONE
Parent story Open sprint 22
Now Complete.
Waiting on Nothing.
Next None — see Result for follow-ups.
Last touched 2026-07-04

Acceptance

  • Six-dimension System 2 analysis performed against sprint.org, story/task files, git log, and PR data.
  • A critical, non-reassuring overall verdict recorded with named concerns.
  • Summary row appended to sprint.org's * Health Review table.

Plan

(Implementation strategy. Written when work starts; key decisions are distilled into the parent story's * Decisions at close, but the plan itself stays — it is the historical record of what we did.)

Notes

PRs

PR Title
#1432 [agile] Sprint 22 health review 1 + state drift fixes

Review

Comment summary File Decision Notes
       

Result

Review on 2026-07-04 (day 3 of 7)

Goal alignment

The mission states two goals: (A) continue commissioning ores.refdata entities, and (B) correct codegen C++ generation drift, carrying postponed sprint 21 stories. Of the 49 stories in sprint.org's tables, 17 map cleanly to Goal A (the per-entity commissioning stories: currency and its aux types, party and its aux types, book/book_status, business_unit/centre, portfolio, purpose_type, contact_type, counterparty, plus the currency/Qt reconciliation story). 12 map to Goal B (the Codegen epic stories plus the two explicitly "carried from sprint 21" stories — Resolve codegen model unification blockers, Compass quality of life). The remaining 20 stories (41% of the sprint) — the entire Market data generation epic (8), most of Compass (4), all of Infrastructure (5), Documentation (1), Hotfixes (1), and sprint-admin (1) — do not serve either stated goal. None of this is wasted work, but it means the mission statement undersells what the sprint is actually doing; calling this "a commissioning + codegen-drift sprint" is a wishful simplification of a sprint that is really running four workstreams at once. Neither goal is uncovered — both have substantial, active work — but Goal A in particular is thin on completions relative to its size (see below).

Goal Coverage Stories (DONE/STARTED/BACKLOG) Verdict
A — refdata commissioning 17 stories 1 / 2 / 14 AMBER
B — codegen drift + carried 12 stories 5 / 0 / 7 GREEN
Other (market data/compass/infra/doc/hotfix/admin) 20 stories 6 / 3 / 11 (unmapped)

Sprint load

193 commits landed by mid-day-3 (37 on 07-02, 114 on 07-03, 42 partial on 07-04) against a 7-day, ≤300-commit target. The day-2 spike of 114 is more than half the entire sprint budget in a single day — either a burst of genuinely productive parallel work (36 PRs merged in the same window supports this) or a sign that review depth is being sacrificed for throughput. Projecting from the two complete days (75.5 commits/day average) across the remaining ~4.5 days gives a projected total in the 520-580 range — well past the 400-commit RED line, even allowing for the pace to cool. Even a conservative reading (193 commits in under 3 days, needing to hold under ~27/day for the remaining 4 days to land at 300) requires a sharp, unobserved slowdown that hasn't shown up yet.

Metric Value Target Status
Commits so far (day 3) 193
Elapsed days 2.x (day 3 partial) 7
Commits/day (full days) 75.5
Projected total at close ~520-580 ≤300 RED

PR velocity

36 PRs merged since sprint start against 0 currently open — by the mechanical PR metric this is excellent: roughly 14 PRs/day, no long-open review bottleneck, and no visible WIP pileup. But the gh pr view is misleadingly clean: the fleet shows 8 active worktrees with in-progress branches that haven't yet become PRs, and three of them are already dangerously stale — 35, 51, and 117 commits behind main respectively. That is WIP accumulation the PR metric cannot see: those branches will face brutal rebases (or silent abandonment) the longer they sit, and the 117-behind branch (commission_purpose_type) is functionally orphaned at this point. The mechanical PR-velocity verdict is GREEN, but it is hiding a real integration-debt problem outside its own field of view.

Metric Value Notes
PRs merged since sprint start 36 ~14/day
PRs currently open 0
Stale non-PR branches (>30 behind) 2 51 behind (book), 117 behind (purpose_type)
Stale non-PR branches (>1 day WIP) 1 35 behind (currency)

Story and task balance

175 tasks exist across the sprint's 49 stories: 96 DONE, 69 BACKLOG, 7 ABANDONED, 2 BLOCKED, 1 STARTED. At the story level, 12 stories are DONE against 37 BACKLOG+STARTED, a DONE ratio of 0.324 — inside the skill's 0.3-0.5 AMBER band, not the failing zone, but close to the floor for day 3 of 7. Fifteen stories (31% of the sprint) have zero tasks filed at all — entirely undecomposed. Encouragingly, none of the five currently-STARTED stories are among them (each STARTED story has at least 2 tasks), so there is no active black-box story right now. But undecomposed BACKLOG is still a planning risk: with 4 days left, several zero-task commission_* stories (book, business_centre, business_unit, contact_type, party, party_id_scheme, portfolio, purpose_type) will need decomposition before any visible progress can be tracked on them, and that hasn't started.

Separately: commission_counterparty's own story.org shows State: STARTED with all three of its tasks DONE — the story was never closed even though the work is finished. Worse, sprint.org's Stories table for this same story still shows BACKLOG, a state that matches neither the story file nor reality. This is a live example of the paperwork drifting behind actual work, not a one-off: two other fleet-active stories (commission_book, commission_purpose_type, commission_party) show BACKLOG/zero-tasks in the docs while their worktrees have accumulated dozens to well over a hundred commits of in-progress work.

Story State (story.org) State (sprint.org) Tasks Notes
commission_counterparty STARTED BACKLOG 3 (3 DONE) Work finished, story never closed; sprint.org also stale
commission_currency STARTED BACKLOG 18 Active (brave_hopper), 35 commits behind main
commission_book BACKLOG BACKLOG 0 Fleet shows active work (clever_dijkstra), 51 behind — docs blind to it
commission_purpose_type BACKLOG BACKLOG 0 Fleet shows active work (eager_maxwell), 117 behind — near-abandoned
commission_party BACKLOG BACKLOG 0 Fleet shows active work (solid_dirac), 5 behind

Focus signal

sprint.org tracks 5 STARTED stories: commission_counterparty, commission_currency, compass_github_actions_support, open_sprint_22, and synthetic-data-collections — spanning three themes (refdata commissioning, Compass tooling, market data) plus sprint admin. That alone lands in the 4-5-stories / mixed-themes AMBER band. But the paperwork undercounts actual concurrency: the fleet shows 8 worktrees with active branches, three of which (commission_book, commission_purpose_type, macos_ci relevance-guard hotfix — the last already closed as DONE) are not reflected as STARTED in the docs at all. Real concurrent work in flight is closer to 6-8 threads across commissioning, codegen/hotfix, market data, and Compass — squarely in the "6+ or wildly divergent themes" RED band once fleet reality is counted instead of the docs. open_sprint_22 itself is also still STARTED on day 3 despite its own tasks being effectively wrapped up (2 of 3 DONE), which should have been closed already and is itself a small focus/paperwork leak.

Metric Value Verdict
STARTED stories (per sprint.org) 5 AMBER
Active branches (per fleet) 8 RED
Distinct themes in flight (fleet-adjusted) 4+ RED

Velocity

Metric Value Notes
Stories DONE so far 12 / 49 24% of sprint scope closed by day 3
Tasks DONE so far 96 / 175 55% — high because several fully-scoped stories (currency, party_type, compass QoL) closed out task-by-task
Days elapsed / remaining ~3 / 4 Roughly half the calendar, under a quarter of story scope closed

The task-completion rate looks strong in isolation, but it is concentrated in a handful of stories that were already well-decomposed and largely finished before the sprint's stated commissioning goal (17 stories, 1 DONE) made real progress. Goal A specifically is behind pace for the calendar elapsed.

Overall verdict

Dimension Verdict
Goal alignment AMBER
Sprint load RED
PR velocity GREEN (with hidden WIP risk)
Story and task balance AMBER
Focus signal RED

Overall: RED. Two dimensions land RED — sprint load (commit pace projects to nearly double the 300-commit target even on a conservative reading) and focus (five stories are tracked as STARTED, but the real fleet picture shows 6-8 concurrent threads spanning four unrelated themes, with two branches (51 and 117 commits behind main) at real risk of becoming unmergeable or abandoned). The single most important concern is that the paperwork is actively lying about the sprint's true state: commission_counterparty is finished but still shows STARTED/BACKLOG in two different places, commission_book and commission_purpose_type show zero tasks and BACKLOG while their worktrees have been running for dozens to well over a hundred commits. If sprint.org and story.org are not trusted as ground truth, every other metric in this review is built on sand. The one fix that would most improve sprint health: stop new work, spend an hour reconciling every fleet-active branch against its story.org state (closing commission_counterparty, correcting book/purpose_type/party to STARTED with real task breakdowns), and force a decision on the two most-stale branches (51 and 117 commits behind) — rebase now or abandon, before they get further from main.

Emacs 29.3 (Org mode 9.6.15)