Projects / recap
Aros/Session recap/
Sprint 5 — the meta-story

From Sprints to Runs — the Process Inflection

Sprint 5 stalled for a week. A failure analysis across the full doc corpus found the drift: ceremony had become free to produce and expensive to read, statuses marked themselves, and the only existential risk on a one-human project — operator enthusiasm — was nowhere in the risk register. The fix killed sprint ceremony, ratified six working agreements, and replaced the sprint plan with the run prompt. Two days later the same project that produced zero commits in a week produced 141 contributions.

Process audit + ratification 2026-06-08 → 06-10; validated by the two-day run stretch recapped separately
ADR-0031 ratified-as-amended 9f497b2 (after 11 days Proposed) · working agreements 8–13 in CLAUDE.md 133a269 · the validation evidence is the entire companion recap
process
retrospective
failure-analysis
working-agreements
run-format
adr-discipline
operator-enthusiasm
two-surface-rule
ai-failure-modes
velocity
the hero

The week the project went quiet

Git tells the story bluntly: zero commits across all three Aros repos from June 3rd through June 9th. Sprints 0 through 4 had each closed in days; Sprint 5 sat open past its eleventh day with a maintenance backlog growing faster than it closed. The operator’s own framing — the project felt like a chore, not an exciting endeavour. On a one-human project that is not a mood, it is an outage. The response was not to push harder but to commission a failure analysis of the process itself, and the findings were specific enough to act on.

The numbers

A velocity cliff with a precise edge

Every figure below is verifiable in git history or the doc corpus — the analysis refused vibes and demanded receipts.

Zero-commit days
7

June 3 → June 9, across all three repos

Days ADR-0031 sat Proposed
11

drafted 05-30, ratified 06-10 — the 48-hour rule says 2

ADRs in one 72h burst
7

0024–0030, designing three sprints ahead

Contributions after the fix
141

the two days recapped in the companion piece

The arc

Stall, diagnosis, fix, proof

The analysis ran in the operator’s claude.ai sessions across all 30 ADRs, CLAUDE.md, the ai-context corpus, the build plan, PRD, and TAD. What follows is its trail.

  1. Jun 3–9

    The stall

    No commits in any repo. Sprint 5 open past day 11. The 5B maintenance ledger kept accumulating entries — several of them 300-to-500-word options analyses for fixes that took under an hour to make. The write-ups cost more than the fixes. Nothing in the process flagged any of this; the sprint had no timebox alarm, the backlog had no growth alarm, and the AI never said the quiet part: this refactor sprint is eleven days old.
  2. Jun 8–10

    The failure analysis

    Commissioned across the full doc corpus. Findings with receipts: the velocity cliff (sprints 0–4 closed in roughly a week total; Sprint 5 alone exceeded that); disproportionate forensics on trivial items; the ADR burst (0024–0030 inside ~72 hours in late May, marked Accepted without a ratification trail, designing three sprints ahead of information); ADR-0031 — the one decision explicitly gated on the operator — sitting Proposed for 11 days while code shipped under it; and effort inversion, where AI thoroughness tracked available detail rather than stakes: 650 ADR lines for the inventory data model, 56 for the remediation engine that is the project’s stated end goal.
  3. Jun 10

    The fix, ratified

    Sprint ceremony killed: no premature recaps, no forensic backlogs, no Proposed-status limbo, no multi-sprint pre-planning. The RUN replaces the sprint: one prompt, authored at the last responsible moment, carrying operator ratifications up front, strictly ordered priorities each with a DEMO and a ship-gate (merged, deployed to dev, verified before the next starts), overflow capped at 3-line ledger entries, SESSION.md one-liners as the record. Goal-backwards planning — single VM by tomorrow, templated cluster by Friday — not phase lists. ADR-0031 was ratified-as-amended inside the Run 1 prompt itself, closing its 11-day limbo. Working agreements 8 through 12 entered force the same day.
  4. Jun 10–12

    The proof

    Run 1 (make the platform speak) and Run 2 (Aros deploys) executed as overnight autonomous sessions under the new format — Claude Fable 5 in Claude Code, a permissions allowlist replacing per-action approvals (about ten approvals total across both nights). The same project that produced zero commits in a week produced 141 contributions in two days, every priority ship-gated and live-verified. The full account is the companion recap, The Platform Speaks, Then Deploys.
  5. Jun 12

    The residual gap becomes agreement 13

    The two-day recap, mined faithfully from repo receipts, was structurally blind to everything above — the stall, the audit, the format change — because none of it lived in the repo. Same gap, operationally: field lessons from a live R740XD session existed only in chat while an overnight hardware run was about to fire. The fix became the two-surface rule: decisions made in operator chat sessions are committed to the repo as artifacts BEFORE the next run fires. If it is not in the repo, the run cannot see it. The hardware vision doc, its field addenda, agreements 8–12 themselves, and this very page landed in the same pass.
The failure modes

Named, owned, and split honestly between human and machine

The analysis named failure modes on both sides of the keyboard. Cards below per house style — the troubleshooting is the load-bearing part.

Ceremony amplification: ADRs became free to write and expensive to read

ai-failure-modeadr-disciplinecost-asymmetry Major
Symptom

Seven ADRs (0024–0030) produced inside roughly 72 hours in late May, designing three sprints ahead, all marked Accepted. Meanwhile trivial backlog items received forensic 500-word options analyses.

Root cause

AI assistance inverted the cost asymmetry that makes ceremony self-limiting for humans: producing an ADR became nearly free, so production scaled with available detail rather than decision stakes — 650 lines for the inventory data model, 56 for the remediation engine the whole project aims at. Nobody noticed the inversion because the artifacts looked like diligence. And the statuses marked themselves: Accepted appeared without any ratification trail.

Resolution

Working agreement 8: analysis depth scales with reversal cost — sub-30-minute fixes are done, not analysed; ADRs only for decisions costing more than a day to reverse. Agreement 9: backlog entries are 3 lines, max. Agreement 10: no ADR is Accepted without explicit in-session operator ratification, and Proposed ADRs do not authorise code.

ADR-0031: eleven days Proposed while code shipped under it

status-discipline48-hour-ruleratification Major
Symptom

The one ADR explicitly gated on operator sign-off — Sprint 5 scope — sat Proposed from May 30th to June 10th while implementation proceeded as if it were settled. The build plan’s own decision rule allows 48 hours.

Root cause

The gate had no alarm. Eleven days of violation were visible to anyone who looked at the status line, but looking was nobody’s job — the AI treated flagging process drift as out of scope, and the operator was the person the gate was waiting on.

Resolution

Ratified-as-amended inside the Run 1 prompt (two scope cuts: session-pages-only, four contract tests), so ratification and dispatch became one artifact. Agreement 11 makes drift-flagging the AI’s job, unprompted, at session start: sprint past its timebox, backlog growing faster than closing, ratification pending past 48 hours.

The risk register had no line for the only existential risk

operator-failure-modeenthusiasmone-human-project Major
Symptom

The build plan carried risk management for slipping sprints, failing hardware, and data loss — and nothing for the operator not wanting to open the project. Which is the only failure mode that actually kills a one-human project.

Root cause

Operator-owned, by his own audit: he ran an unratified sprint, let pre-planning reach three sprints ahead of information, and never treated his own enthusiasm as a depletable, trackable resource. An eleven-day refactor sprint with no visible wins is exactly the shape that drains it.

Resolution

Agreement 12: operator enthusiasm is a tracked resource — every session ends with something visible; two consecutive invisible sessions is a planning failure, not a scheduling accident. The run format enforces it structurally: every priority carries a DEMO, and the ship-gate means nothing sits 90% done and invisible.

Two surfaces, one light cone

two-surface-rulecontext-transferautonomous-runs Moderate
Symptom

The two-day recap was accurate and complete against every repo artifact — and silent on the most important Sprint 5 story, because the stall, the audit, and the ratifications happened in claude.ai sessions the repo never saw. The same week, ratified field constraints for the upcoming hardware run existed only in chat hours before that run was due to fire autonomously.

Root cause

The project now runs on two collaboration surfaces: chat for thinking, scoping, and ratification; Claude Code for building. Only one of them is inside the repo’s light cone, and autonomous overnight runs read nothing else. Anything decided chat-side that does not become an artifact is invisible precisely when it matters most.

Resolution

Agreement 13, the two-surface rule: chat-side decisions land in the repo as artifacts — ratification blocks, vision docs, prompt addenda — BEFORE the next run fires. Applied the same day it was ratified: the hardware platform vision doc, its live-session field addenda, working agreements 8–12 themselves (previously chat-side only), and this companion page all landed in one commit pass ahead of the overnight hardware run.

The new mechanics

What a run actually is

Not a renamed sprint — a different unit of work with different physics. The two-day stretch recapped separately is the reference implementation.

The run promptShip-gatesDEMO per priority3-line overflow ledgerSESSION.md one-linersAutonomy envelope
Receipts

Before and after, same project, nine days apart

The format change is the only variable. Model upgrade (Fable 5, released June 9) and permissions tuning are confounders worth naming — but neither writes a run prompt.

Sprint 5 day 11
0

commits that day, like the 6 days before it

Run-format day 1
60

commits on 2026-06-11 across the three repos

Working agreements added
6

agreements 8–13 in CLAUDE.md

Ceremony artifacts killed
4

premature recaps · forensic backlogs · status limbo · multi-sprint pre-planning