ForgeKitFORGEKIT

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.

ForgeKit OSGatesConcurrency
16
apps wired with predeploy checks
1
new Charge document
2
deferred spins actually fixed

Timeline

Start
Correction received
"wire #1, build the charge for #2, and do your job for #3" — closing 3 items the prior session's retro had left as deferrals instead of completions
Task 1
Predeploy wiring
check-bare-dotenv-config.mjs and check-raw-insert-missing-id.mjs wired into all 16 apps' real predeploy scripts
Task 2
Concurrency Charge
Real corpus re-scan, grouped by failure shape, one ranked intervention
Task 3
Spins s2/s3 fixed
Shared scanner-fs.mjs helper; durable testing.md rule against inline node -e reproductions
Close
Committed and retro'd
9363a04a

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