Build Log
Engine Self-Improving
June 20, 2026
ForgeKit moved from self-checking to self-improving — the loop now measures whether following the process actually made the engine better, not just whether it was followed.
Timeline
What shipped
gate_checks[].prevented_spin — bool/null: did this gate catch a real spin?
gate_checks[].evidence — string/null: what spin would have occurred without it?
gate_checks[].missed_issue — string/null: what did the gate fail to catch?
promotion_review block — observations[], promoted[] (with destination+type+reason), not_promoted[] (with reason)
build-trends.mjs §Gate Effectiveness — aggregates per-gate: times run, prevented, clean, uncertain, missed issues
build-trends.mjs §Promotion Pipeline — aggregates promoted/not-promoted across sessions, flags repeated non-promotions
Engine health scoring: +3/proven gate (cap 9), -4/theater gate; +5 for promotion rate ≥60%, -6 for 0 promotions after 3+ sessions
engine-health.md §Gate Effectiveness + §Promotion Pipeline sections with tables
Console signals: theater gate warnings, proven gate confirmations, repeated non-promotion flags
_TEMPLATE.json pre-scaffolded with both new blocks
_SCHEMA.md documented with usage guidance, including 'theater vs proven' framing
“From 'did Claude follow the loop?' to 'did following the loop improve the engine?' That's the difference between compliance and compounding.”