Task: Health review 1 — sprint 28 close analysis

Table of Contents

This page documents a task in the Sprint health review — System 2 analysis story. It captures the goal, current status, acceptance, and any notes or results.

1. Goal

Measure sprint 28 at its close, repair the bookkeeping the audit names, and record one verdict with its evidence.

2. Status

Field Value
State DONE
Parent story Sprint health review — System 2 analysis
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-24

3. Acceptance

  • Every dimension has a measurement with its source.
  • The sprint table carries the review's summary row.

4. 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.)

5. Measurements

Every number this task claims about a tree, with the command that produced it and the commit it was measured at. A number without both is not a measurement, because a clean-up record describes a tree and trunk moves under a branch: a consumer count, a gate's component count and a suite's size all change with no code changing, and the reader of a bare number cannot tell which tree it came from. Where the raw output matters, put it in an evidence/ file beside the task and name that file in the Command column.

What Value Command Commit
Commits since the sprint start 2615 in 12 days (344, 199, 227, 185, 471, 334, 132, 87, 154, 150, 245, 87 for 10-13 to 10-24) compass sprint charts --sprint 28 --end-date 2026-10-24: committer date, --since-as-filter from 2026-10-13T00:00:00 15d810796b
Pull requests merged since the sprint start 496 (67, 40, 50, 39, 81, 64, 23, 11, 21, 28, 53, 19) gh pr list --state merged bucketed by local merge day, from the same command 15d810796b
Merge cycle of those 496 median 0.14 h, upper quartile 1.3 h, p90 5.2 h, max 48.1 h the same list, createdAt to mergedAt 15d810796b
Open pull requests 1 (#3705, opened 2026-10-24, a design document) gh pr list --state open b99ecf86a4
Stories 126: 60 DONE, 27 STARTED, 39 BACKLOG the State of every story.org under the sprint this branch
Stories before this review's repairs 125: 57 DONE, 29 STARTED, 39 BACKLOG the same read before the edits b99ecf86a4
Tasks 534: 309 DONE, 173 BACKLOG, 46 STARTED, 6 ABANDONED the State of every task_*.org this branch
Stories created on or after 2026-10-13 101 of 126 (58 DONE, 25 STARTED, 18 BACKLOG) the #+created: of every story.org this branch
Added stories that are CI or hotfix work 34 an estimate: titles matching hotfix, cache, CI, build-time and warning words this branch
Undecomposed stories 8, all BACKLOG story.org with no task_*.org beside it this branch
Stories with ten or more tasks, still STARTED 10 the same read this branch
Audit findings 95 before the repairs, 26 after, 0 after the sprint close compass sprint audit b99ecf86a4 and this branch
Stories after the sprint close 125: 84 DONE, 41 ABANDONED (37 carried to the inbox, 4 closed with nothing shipped) the State of every row of the sprint table this branch
Tasks after the sprint close 323: 315 DONE, 8 ABANDONED the State of every task_*.org under the sprint this branch
DONE tasks with no PR or no branch recorded 88 and 45 before; 100 tasks changed a script over the Task-ID trailers, then the branch name b99ecf86a4
Charts window 2026-10-13 to 2026-10-24: 12 days of activity, 2615 commits, 496 merged PRs, 84 stories done. The default window stops at 2026-10-21, the sprint's end date plus one day. compass sprint charts --sprint 28 --end-date 2026-10-24 b99ecf86a4

6. Notes

7. Test Scenarios

Manual QA scenarios (scaffolded via compass add test_scenario) that verify this task. Link new ones here as they're created; the scenario doc itself links back via its "Verifies task" field.

Scenario State Notes
     

8. PRs

PR Title
#3715 [compass] Count every commit and PR in the sprint charts
#3709 [agile] Close sprint 28: health review, story splits and release notes

9. Review

Comment summary File Decision Notes
       

10. Result

10.1. Review on 2026-10-24 (day 12 of 7)

Sprint 28 was scheduled from 2026-10-13 to 2026-10-20. This review runs on 2026-10-24, twelve days in and four days past the planned close. Every number below is a measurement at b99ecf86a4 plus this branch's own document changes. The command that produced each one is in * Measurements.

Concerns written down before the data was read: the sprint's mission promises no new scope, and a sprint that opens with 41 carried stories should not carry a hundred more; the charts and the review stop at the planned end date while the work did not; and the bookkeeping of a sprint this size drifts first.

10.1.1. Goal alignment

The mission has one goal: finish the work carried out of sprint 27 (the record screens, the remaining journeys and the rest of its remainders) before drawing anything new from the product backlog. It names nine themes.

Theme of the mission Coverage Verdict
Record screens and the web UX standard The engine settings, the grid job screens, the reports a party runs, the bindings screen and the history and refresh rules all landed. The list sort order, the live updates and the existing-screens sweep are still open. AMBER
Journeys in ores.web The conventions prototypes and their journeys are DONE. The conventions list screens, the tenor journey and the node heatmap are STARTED with no task done. AMBER
Market data feeds and bindings The adapter rework (20 of 36 tasks) and the tick-lag investigation (9 of 31) are the largest stories of the sprint. Neither is close. AMBER
Reporting and ACME data The report trigger is DONE, the engine settings arc is DONE, and the ACME population is 18 of 24. The report page itself and the report configurations on guided screens are not started. AMBER
Trading-model integrity The FX audit and rework and the equity rework are DONE. The credit, rates and bonds stories are open. AMBER
Codegen and data-quality debt The lookup artefact tables are DONE. The entity-groups story is 2 of 13. AMBER
Four-eyes approvals, security and tenancy, grid and telemetry Advanced by several stories, none finished. AMBER

The check against the mission fails in a different place. Of the 126 stories, 101 were created on or after the sprint opened, and 34 of those are CI and hotfix work. By #+created: date only 25 stories pre-date the sprint, and 21 of those are still BACKLOG. The mission says the sprint commits to finishing the carried stories rather than adding scope. The sprint did the opposite. The creation date is an approximation, because a carried story keeps its old date only when its author did not rewrite it, so the 25 is a floor. The conclusion holds either way: most of the sprint is new work.

Verdict AMBER: every theme advanced and none closed, but the mission does not describe what the sprint spent its capacity on.

10.1.2. Sprint load

Metric Value Target Status
Commits since 2026-10-13 2615 ≤ 1000 RED
Commits per day 344, 199, 227, 185, 471, 334, 132, 87, 154, 150, 245, 87 — —
Average ≈ 218 per day over 12 days ≤ 143 per day RED
Window day 12 of a planned 7 7 days RED

The tree carries about two and a half times the commit ceiling. The rate is neither a stall nor a spike. Two peaks stand out, 471 on 10-17 and 334 on 10-18, and the sprint then slows to 87 and 154 on the days after its planned close. That slowdown is the planned close arriving while stories were still open: the work did not stop, it thinned out. The commits after 10-20 total 636, and 10-24 was a part day when the count was taken.

Verdict RED.

Correction on 2026-10-24. The first version of this review counted commits with a bare --since=2026-10-13. Git reads a bare date as that date at the current time of day, so the early hours of 10-13 were lost, and plain --since stops at the first old commit of a rebased history. The first version said 2518 commits and a first day of 282. The full count is 2615 and 344. The same two faults hit the charts, which also counted merge commits as PRs and plotted only the twenty slowest PRs. compass sprint charts is fixed, and the verdicts do not change.

10.1.3. PR velocity

Metric Value Notes
Merged PRs in the sprint 496 (67, 40, 50, 39, 81, 64, 23, 11, 21, 28, 53, 19) The target band is 100–120: four times it.
Merge cycle median 0.14 h, upper quartile 1.3 h, p90 5.2 h, max 48.1 h A census of all 496. The cycle chart now plots every PR.
Open PRs 1 #3705, opened today, a design document.
Long-open WIP none No PR waited more than a day for a merge.
Days with no merge 0 The slowest day merged 7, and it is a part day.

A merge cycle of six minutes at the median says the work is merged as soon as the checks allow. It also says that most review is after the merge or by the author alone. That is a property of the process and not a defect of this sprint, but it means PR count measures commit grouping and not reviewed change.

Verdict RED on the count, GREEN on flow. The skill's rule is that a total over about 150 is red.

10.1.4. Story and task balance

Metric Value Notes
Stories 126: 60 DONE, 27 STARTED, 39 BACKLOG After this review's close of three stories and its reconciliation.
DONE : open 60 : 66 ≈ 0.91 The skill's green line is 0.5.
Tasks 534: 309 DONE, 173 BACKLOG, 46 STARTED, 6 ABANDONED 58% DONE.
Undecomposed stories 8 All BACKLOG, no task files.

The eight undecomposed stories:

Stories with ten or more tasks that are still STARTED, with the shape the skill calls sprawling. The owners should apply the split test (read each remaining task against the story's own acceptance) before the next sprint opens:

Story Tasks DONE Remainder
Build the bindings screen and clear the oresmd snags 16 15 1 BACKLOG
Browse and follow the grid's jobs 24 19 5 BACKLOG
Populate the ACME books with a realistic trade population 24 18 6 BACKLOG
Rework the market data feeds into a market data service with adapters 36 20 16 BACKLOG
Find why market data ticks lag the wall clock 31 9 16 BACKLOG, 5 STARTED
Refactor conventions onto families and bundles 10 7 3 BACKLOG
Close the tenor journey and the remaining refdata gaps 10 3 6 BACKLOG, 1 STARTED
Add entity groups and finish the remaining codegen work 13 2 11 BACKLOG
Trade Blotter 13 5 7 BACKLOG, 1 ABANDONED
See and change everything a report runs 19 18 1 BACKLOG

The owner then asked for the close of the sprint: every story ends with only closed tasks, or close to it. The section "Sprint close: closes, splits and carries" below records what that did to these numbers. The table above is the state before the close.

Verdict AMBER: the ratio is green, but eight stories are opaque and ten large stories hold most of the open task count.

10.1.5. Focus signal

Metric Value Verdict
STARTED stories 27 RED: the skill's red line is 6.
Oldest STARTED stories Trade Blotter (81 days, 5 of 13), the equity rework (closed here), the grid usage story (17 days, 1 of 3) —
Themes web and UX, market data, reporting, conventions and tenor, trading instruments, codegen, workflow and shell Mixed.

Twenty-seven stories are in flight across at least seven themes, and nine other worktrees hold their own branches at the same time. The count fell from 29 because this review closed three stories. It is not a deliberate WIP limit. The sprint's retrospective asked for fewer stories in flight, and the sprint's own mission repeated the request, and the count did not move.

Verdict RED.

10.1.6. Velocity

Metric Value Notes
Stories closed 60 of 126 48%.
Tasks closed 309 of 534 58%.
Stories done in the chart 61 at review time, 84 after the close The cumulative chart counts DONE rows only. The first version also counted ABANDONED rows, so a close that carries stories out looked like delivery.
Window day 12 of 7 Four days over.

The default chart window is the sprint's end date plus one day, so a plain run shows work to 2026-10-21 only and leaves out the 100 PRs and 482 commits of 10-22 to 10-24. The committed charts were rendered with --end-date 2026-10-24, so they cover the whole overrun. A sprint that runs past its end date needs that flag or an updated end date, or the charts under-report its close. The first version of the commits chart showed two stray points before the sprint, on 2026-09-27 and 2026-10-10. It bucketed by author date and filtered by committer date. It now uses the committer date for both, and the points are gone.

Verdict AMBER.

10.1.7. Bookkeeping repaired by this review

The audit reported 95 findings. After the repairs below it reported 26. After the sprint close it reports none.

Repair Count Evidence
Stories closed DONE 3 The table that follows.
Sprint table rows reconciled with their story files 17 The audit named 15; two more disagreed on state and end date once those were set.
Story moved from BACKLOG to STARTED in its file 1 Run a report end to end on a synthetic bond population has 4 of 5 tasks done.
#+pr: and #+branch: filled on DONE tasks 100 tasks 49 resolved to a merged PR through the Task-ID trailer or the branch name. 51 carry none (no commit carries the task id): scaffold tasks and tasks whose PR names another id.
Now, Waiting on and Next cleared on closed documents 68 documents Every DONE or ABANDONED story and task whose cells were not Nothing..
Duplicate stories 0 See below.

The three stories closed, each read against its own acceptance:

Story Tasks Decision Evidence
Audit the FX instrument family against the data-oriented design guidelines 1/1 DONE Closed DONE Its acceptance is the review itself. PR #3387 merged, and the follow-up rework story carried the findings.
Rework the equity instruments to the instrument table rule 13/13 DONE Closed DONE PRs #3405 to #3503 merged. The header, the composite key and the routing have their own tasks. No task states the round trip; the standing gate ore-xml-roundtrip passed on the branch that merged #3691.
Prototype the management of conventions 5/5 DONE Closed DONE PRs #3581 and #3621 merged. The prototypes, the journeys and the checklist pass are written. The owner's agreement on the catalogue is not recorded in a task.

The audit named a fourth story and this review rejects it.

Story Tasks Decision Evidence
Seed a relative-time trade population with the market data it needs 1/1 DONE Left BACKLOG here, then carried to the inbox at the sprint close Its only task is "Describe the story and its open decisions" (PR #3043). It writes the story and builds nothing the acceptance names. Closing would record undelivered work as delivered. The same story was rejected in the sprint 27 review.

Duplicates resolved: none. The title comparison found two families of near matches, the three instrument-family audits (FX, rates, bonds) and the equity and FX reworks. Each pair covers a different family, and the two hotfixes for the debug builds cover different platforms. None overlaps.

What remains for the owners, not decided here:

  • The 51 DONE tasks with no PR recorded. Most are scaffold tasks.
  • The eight undecomposed stories, now in the product backlog inbox.

10.1.8. Sprint close: closes, splits and carries

The owner asked for two things: close every open task and story that is done, and split each story that holds many closed tasks into a closed story and a backlog story. After the work, the sprint table holds 84 stories DONE and 41 ABANDONED, and no story STARTED or BACKLOG, except one that opened during the close (see below). Of the 41, 37 moved to the inbox and 4 closed with nothing shipped. The sprint holds 315 DONE tasks and 8 ABANDONED tasks, and no open task. The audit reports no finding.

Open tasks closed DONE. Each has a written * Result and every pull request it names merged.

Task Pull requests
Store the inflation swap and return its index #3546
Keep a floor a floor and hold the whole collar #3553
Build the list of kinds and the list of documents #3620
Run a quiet loop in one thread #3628
Build the reports a party runs screen and its endpoint #3558
Close the gaps the reports a party runs screen records #3484, #3501
Carry an entity-changed time to the browser #3099
Link each convention to its market data series #2922

The other 17 tasks of the audit's list stayed open and moved to the inbox with their stories. Each has no * Result, or its own text says the work is partial (for example "Partly delivered in PR 3128. The task stays STARTED."). A merged pull request did not prove those finished.

Stories closed DONE because every task is done: Carry the rates family's fields across the ORE boundary (3 of 3).

Stories split. Each closed story keeps its done tasks and narrows its Acceptance to them. Its remaining tasks and its original Acceptance moved to a new story, "<title> — the remaining work", in the product backlog inbox. The closed story names the new story in its Decisions. 25 stories were split and 123 tasks moved. The largest splits are Rework the market data feeds (20 done, 16 moved), Find why market data ticks lag the wall clock (10 done, 21 moved), Browse and follow the grid's jobs (20 done, 4 moved), Populate the ACME books (18 done, 6 moved) and Build the bindings screen (15 done, 1 moved).

Stories carried whole. 37 stories had no done task. Each moved by file or by folder into the inbox with its :ID: intact, and its sprint row is ABANDONED with the close date. They include the eight undecomposed stories, "Author the report configurations on guided screens" and "Complete the ACME report inputs and prove they run".

Five closes needed judgment, and the first pass was wrong for them:

  • "See and change everything a report runs" has 18 done tasks that deliver the engine settings arc. Its acceptance names a six-tab report page that nothing built. The story closed DONE with the engine settings arc as its scope, and the report page, with its analysis task, moved to the new story.
  • "Find a trade by its identifiers, state, book and date from one list" has one task, ABANDONED because the Trade Blotter story absorbed it. The story closed ABANDONED, not DONE, since nothing shipped under it.
  • "Raise a notification for a scenario waiting for a tester", "Restore the trading guards the versioned model dropped" and "Trace a process run and the trade groups it creates" had only their scaffold task done. The release notes pass found this. The three stories are ABANDONED, and their real tasks stay in the backlog stories.
  • "Replace the credit fact variant with typed arrays" and "Build the conventions list screens" left only a scaffold task. That is no work, so the split was undone: each story is whole and DONE, with the scaffold task ABANDONED.
  • "Draw every coded value as its badge" was DONE with six open tasks listed as plain rows with no task file, so the first pass did not see them. The PR review found it. The story is split: it keeps its one done task, and the six open rows moved to a new inbox story.

The closed stories "Decide the XML strategy" and "Trade Blotter" keep ABANDONED tasks in their tables. Their Acceptance lists only the DONE tasks.

One story is outside the close. "Add a Hawkes tick arrival process to analytics.quant" was scaffolded on main by another environment (prime_origin) while this close was in review. It is STARTED with 2 tasks done and 4 open, and its branch is live, so moving it would pull the story from under that branch. It stays in sprint 28 and needs its own decision. A task "Subscribe every Acme party to market data" also arrived on main under the ticks story, with PR #3710 merged and no Result, and moved to that story's remaining-work story. Another environment finished "Record when a run starts and how long it took" (PR #3707) during the same window. It is DONE and stays in its closed story.

10.1.9. What this review did not check

It did not read the acceptance of the 10 sprawling stories before the owner asked for the close. It did not verify that the equity round trip is lossless: it relied on the standing gate. The audit's 25 task files were read for their * Result and their Now cell only, not for the code. The "CI or hotfix" count is an estimate by title. The number of carried stories is the sprint's own claim of 41, and the creation-date count of 25 is a floor. The narrowed Acceptance of each closed story lists its done tasks by title. It does not restate each task's result, so the owner may refine it.

10.1.10. Overall verdict

Dimension Verdict
Goal alignment AMBER
Sprint load RED
PR velocity RED (flow GREEN)
Story and task balance AMBER
Focus signal RED
Velocity AMBER
Overall RED

The sprint is RED. It carries two and a half times the commit ceiling and four times the PR count over twelve days, with twenty-seven stories in flight, and its mission promised no new scope while four in five of its stories are new. Flow is healthy: PRs merge within minutes, nothing waits, and every day merges. The bookkeeping was the weakest part, and this review repairs the part that has an unambiguous answer. The one change that would improve the next sprint most is a limit on stories in flight, enforced when a story starts, because the load, the focus and the open-task count all follow from starting more than the sprint can finish.

Emacs 29.3 (Org mode 9.6.15)