§1 — Why

The ledger exists to calibrate effort and route work, but three of its measurement systems record the wrong quantity (fleet review §4/§8): worker_seconds is orchestrator wall-clock inferred from stream file mtime (nine stalled runs contribute 64 of 130 recorded hours), the per-run token counters are session-cumulative (summing over-reports 4.2×), and 86% of runs — including 21 of 25 non-passing ones — carry no outcome text. Everything downstream (effort calibration, the competence horizon, sprint capacity planning) consumes these numbers, so their repair gates the gate-signal work.

✓ landed 2026-08-17

§2 — Deliverables

All seven deliverables landed in commits fe1497f, 2b1acae and 0d97517: stream-derived durations with stall exclusion and a labelled worker_seconds_source (wall fallback for healthy timestamp-less streams — a negative finding turned corrective node), per-run token/cost deltas that sum to session cumulatives, one completion-source vocabulary including provided, refusal of empty outcomes on non-passing gates, tmpfs-manifest warnings, typed SHA-derived changed-lines, canonical section identifiers and redispatch lineage. 18 tests added; full suite 1903 passed, 0 failed on the integrated tree. Full record: landed record.

§ Followups

Repair the measurement pipeline

All seven deliverables in §2. Historical records stay as they are — the fix is prospective; the effort report may add a schema-version guard when reading old shapes.

/reckon-ship run-measurement-truth

All seven §2 deliverables landed across commits fe1497f, 2b1acae and 0d97517, plus a corrective labelled duration-fallback for the timestamp-less-stream finding: stream-derived durations with stall exclusion and labelled sources, per-run token/cost deltas summing to session cumulatives, one completion-source vocabulary with provided, outcome refusal on non-pass, tmpfs manifest warnings, typed changed-lines, canonical section identifiers and redispatch lineage. Historical records untouched (prospective fix as planned). Sprint gate measures all produced. done — no followup

stream-measures landed — commit fe1497f; gate passed; measures: 2700s stream inside 96120s wall records both durations with stalled=true and aggregation exclusion; per-run token/cost deltas sum to session cumulatives (100+50=150, 10+5=15, 1.25+0.75=2.0); changed_lines SHA-derived with typed absence for unresolvable inputs; 3 tests added, full suite 1889 passed. NEGATIVE FINDING: real codex streams carry no event timestamps, so a healthy 1221s run promoted with worker_seconds=null — corrective node duration-fallback dispatched (wall-duration fallback for unstalled timestamp-less runs). Evidence: docs/evidence/archive/run-measurement-truth-landed.html#stream-measures
duration-fallback landed — commit 2b1acae; gate passed; measures: real codex event shape without timestamps records worker_seconds=wall_seconds with source wall_fallback and reaches effort_report (5.0 min fixture); stalled timestamp-less runs record typed absence and excluded_stalled=1; timestamped streams unchanged (2700s measured against 96120s wall); the fix's own promotion recorded worker_seconds=549 source=wall_fallback where the prior node's was null; 2 tests added, full suite 1890 passed. Evidence: docs/evidence/archive/run-measurement-truth-landed.html#duration-fallback
vocabulary-discipline landed — commit 0d97517; gate passed; measures: a provided-stamp promotion reaches effort_report, derive_capabilities and calibration alike (unusable_completion=0, exclusions centralized in ledger.measurement_exclusion_reason); failed/not-run promotions refuse an empty --outcome before pointer mutation; tmpfs caller manifests draw one warning naming the durable run-dir manifest; five section spellings normalize to one canonical form and redispatch records attempt/previous/root lineage into the ledger; 13 tests added, full suite 1903 passed, ruff clean. Evidence: docs/evidence/archive/run-measurement-truth-landed.html#vocabulary-discipline