Gate Signal Repair — cumulative execution record
One anchor per landed node. Each entry records the commit, the gate measure as executed, the tests, and anything negative found on the way. The evergreen plan holds the design; this record holds what actually happened.
Competence gate (shared units, cache lifecycle, surfaced verdicts)
Commit c7a372e (2026-08-17, worker codex-d, wall 448 s,
303 insertions / 44 deletions over reckon/capabilities.py,
reckon/calibration.py, reckon/crew.py, reckon/cli.py
and three test files; fast-forwarded).
- Units. Speed is defined once as neutral estimated hours per actual worker-hour (above one is faster); the gate compares node neutral hours directly with a neutral-size horizon. Measure: a 2.5 h threshold stays 2.5 h under speed factors 0.5 and 2.0 — the refusal threshold equals the horizon it names in both calibration directions. Verdicts carry node or plan-fallback estimate provenance, target size, comparison unit, speed direction, and cache status.
- Cache lifecycle. Staleness keys on per-project ledger versions: one
ledger append invalidates; a missing cache never rebuilds synchronously on dispatch;
reckon capabilitiesinspects all ledger keys and--rebuildrefreshes explicitly off the dispatch path. - Verdict surfacing. A competence refusal exits with documented code 5
carrying the structured verdict;
--dry-runand real dispatch return payload-identical verdicts under test.
Tests: 5 gate cases added; focused suites 152 passed, 0 failed; ruff clean. Wave-2
integration gate: full suite 1921 passed, 0 failed, 0 skipped at 749cf4f in
96.72 s. Logs:
~/.config/reckon/crew/runs/r-20260817T142253360728-gsr-competence/ and
~/.config/reckon/crew/runs/r-20260817T144659856102-w2-verify/.
Budget gate (honest readings, probe-once-per-wave, policy on every path)
Commit d074d3f (2026-08-17, worker codex-d, 262 insertions / 25 deletions over
reckon/budget.py, reckon/crew.py, reckon/cli.py,
reckon/_backends.py and four test files; merged at e91eaa1).
- Honest readings. A headroom block claims
knownonly with a numeric utilisation, so an empty rate-limit mapping can no longer displace a real reading; the rate-limit type and period survive normalization, so a monthly reading cannot silently pin a five-hour decision. The stream-evidence attribution fallback was moved to a numeric template in the same change, since it keyed on the previous lax signature. - Codex headroom, host opt-in. The account-limits probe path works behind
the
budget_checkflag resolved from the host layer, per the locked decision. Measure: one preflight probe state is reused by 3 dispatch admission checks — 1 probe total for the wave rather than one per dispatch. - Policy reaches every path. CLI resume now resolves flight config as
observe does — measured receiving ceiling 83, reserve 17 and exhausted status
spent, and holding on that policy. A ledger bookkeeping failure while recording a budget check degrades to a payload warning instead of aborting a dispatch whose budget was fine.
Tests: 7 added; focused suites 219 passed, 0 failed; ruff clean on all 8 changed paths.
Logs: ~/.config/reckon/crew/runs/r-20260817T145523349721-gsr-budget/.
Measurement note. This run's wall clock reads 4288 s because it stopped on a false scope fence and waited for an orchestrator answer; its stream duration is absent and it exceeds twice its 25 m budget, so the ledger classifies it stalled and excludes it from effort calibration. The exclusion is correct — the figure measures orchestrator latency, not the work.
Negative finding: a per-worktree artifact named as an exclusive path stops a healthy
worker. The node was dispatched with a peer owning .venv/, which
uv creates inside every worktree. The worker correctly refused to proceed under
parallel-safety rule 7 against a conflict that could not exist across detached worktrees. Its
diff and 7 passing tests survived intact and the same session finished the work after the
fence was corrected. Exclusive write scopes must name tracked repository paths only; an
ignored, per-worktree build or environment directory is never shared and must never appear in
a scope fence.