Build Log
Prove the Acceptance Boundary Is Real
August 29, 2026
Traced the actual authority sequence for an Owner Loop candidate, found and closed the one gap that mattered (production deploy could happen before acceptance), and stopped there.
Timeline
What shipped
forgekit-os/scripts/acceptance-signals.mjs — extracted the independent consequentiality-signal derivation (DERIVED_SIGNAL_PATTERNS, computeDerivedSignals) out of derive-and-accept-candidate.mjs into its own shared module, so a second caller (promote-medinachf.mjs) reuses the exact same logic instead of a divergent copy
forgekit-os/scripts/promote-medinachf.mjs — added Precondition 3: refuses to deploy a commit carrying a consequential derived signal unless a prior human-acceptance record exists for that exact commit SHA (resolved to the full 40-char SHA, not the literal argument text — a real bug found and fixed during live proof)
.github/workflows/actor-spawn.yml — writes a new, non-secret pre-run-sha reference file (same directory as the existing credential files) so promote-medinachf.mjs can diff against the correct base
forgekit-os/scripts/dispatch-owner-loop-requests.mjs — Charge template's Authority section now tells the Actor what a consequential-refusal from promote-medinachf.mjs means and what to do (write terminal result, stop — do not retry the deploy)
forgekit-os/scripts/derive-and-accept-candidate.mjs — refactored to import from acceptance-signals.mjs; no behavior change
forgekit-os/observations/pending-acceptance/ (ephemeral, not committed) — two real, live proof records generated and read this session against actual specimens (f0398ffc, fe93be33), preserved to scratchpad for the record, removed from the tracked path as ephemeral runtime state, same as last session's disposition