Build Log
Two stuck requests, six manual interventions
September 25, 2026
Courtney's change was finished and not live. The fix existed, was correct, and had never once been able to execute.
Timeline
What shipped
forgekit-os/scripts/dispatch-owner-loop-requests.mjs — readPreRunShaFromRunLog(); recovers the authoritative pre-run base from actor-spawn.yml's own pre_run step output instead of guessing at commit shape
forgekit-os/scripts/promote-app.mjs — files the pending-acceptance record BEFORE refusing a Gate A/B deploy, so the recovery command the refusal names has an input to act on
forgekit-os/scripts/foreman/recovery.mjs — new module: Foreman runs existing recovery before escalating, with authority limits encoded as refusals
forgekit-os/scripts/foreman/notify.mjs — narrow high-severity opt-in, scoped to the post-recovery escalate set
forgekit-os/scripts/foreman/sweep.mjs — recovery step wired between persistence and notification
forgekit-os/scripts/foreman/tests/recovery.test.mjs — 11 authority-limit tests
forgekit-os/scripts/foreman/tests/recovery-acceptance.test.mjs — 9 end-to-end acceptance cases
SmithV2/.claude/rules/ignition.md — the missing pointer file five v2 files referenced
forgekit-os/scripts/quota-pressure.mjs — labels corrected to what it measures