Build Log
Owner Loop Hardening §1 Completion, Adversarial Audit, and §2 Evidence-Trail Build
September 2, 2026
Completed and independently audited §1 (canvas schema push, 4 injected-failure tests, 6 real bugs found and fixed), then root-caused and closed 6 of 9 orphaned Owner Loop evidence gaps across MedinaCHF and canvas-2, shipped the evidence-first-then-transition invariant, and built a repeatable consistency-sweep script.
Timeline
What shipped
experiments/canvas-1/lib/db/schema.ts, canvas-2/3/4 — schema push completed (3 new columns, all 4 apps, independently verified live)
forgekit-os/scripts/dispatch-owner-loop-requests.mjs — fixed sendZebEscalationEmail's missing return statements (human_notified_at was never set, ever, for any app); added reconcileStaleClaims() closing the dispatch_status='claimed' black hole; reordered the Charge template so the Actor writes+commits its terminal-result file BEFORE calling resolve-owner-intent.mjs for a completed-work disposition
forgekit-os/scripts/record-promotion-outcome.mjs — fixed the guard that silently refused to record promotion_blocked for the most common real path (a BUILD Charge whose Actor already nulled dispatch_status before promotion then failed)
forgekit-os/scripts/resolve-owner-intent.mjs — new evidence-first-then-transition check: refuses resolved/applied/rejected unless a contract-valid terminal-result file already exists locally
forgekit-os/scripts/sweep-owner-loop-evidence-gaps.mjs — new, read-only consistency-sweep script; turns this session's own manual forensic process into a repeatable, on-demand check for any app
experiments/canvas-1/components/RequestPanel.tsx, canvas-2/lib/{owner-loop-stage.ts,request-display.ts}, canvas-3/4/lib/request-display.ts — added the missing promotion_blocked UI case (was falling into default, telling participants "In the queue" for a genuinely blocked row); removed the dead 'failed' case (never written by any code path)
experiments/canvas-1/package.json, scripts/gate-typecheck.mjs — added the missing Deploy Gate transcript script (canvas-2/3/4 already had it from 2026-08-31)
6 orphaned Owner Loop terminal-result files cherry-picked onto master (3 MedinaCHF: 8b902329, 7da2ae29, 2e44ac4b; 3 canvas-2: 13a58515, 8c1e8a98, b218aa1a) — real, verified, evidence-backed Actor work that had been sitting unreachable on orphaned refs/actor-candidates/* refs for 2-4 days
“address the 4 new gaps and continue”