Build Log
Actually Closing the Procedural Waste Charge
September 11, 2026
Wired the 3 new gate checks into real predeploy enforcement, wrote a real Charge for the concurrency/ownership category, and fixed both spins that were deferred instead of closed.
Timeline
What shipped
check-bare-dotenv-config.mjs and check-raw-insert-missing-id.mjs wired into all 16 apps' predeploy scripts (products/* and experiments/*) — verified end-to-end via a real npm run predeploy invocation
forgekit-os/charges/concurrency-ownership-discipline-bypass-2026-09-11.md — a real Charge built from a fresh corpus re-scan (32 genuine occurrences/25 sessions), grouped into 5 failure shapes by actual mechanism, one ranked intervention, explicit non-goals
forgekit-os/scripts/lib/scanner-fs.mjs — shared self-exclusion helper for repo-wide scanners, migrated both existing scanners onto it, 6 new regression tests
.claude/rules/testing.md — durable rule against inline node -e path/string reproductions, citing a live second occurrence from this same session