Build Log
Engine Prevention Loop
June 20, 2026
Closed the gap between observing repeated spin and enforcing prevention — ForgeKit now detects threshold-crossed categories, recommends specific gates, requires proof they fired, and validates at retro time.
Timeline
What shipped
.claude/rules/gates.md — triggered prevention checklists, one per spin class (Environment & Config Gate, Deploy Gate, Visual Debug Gate, Spin Triage)
ignition.md §7 SPIN TRIAGE — named step between QUENCH and HARVEST; threshold rule defined (3+ sessions or 30+ min = gate required)
ignition.md §3 ORIENTATION — gates referenced at trigger moments (before dep/env/config, before deploy)
Session schema: gate_checks[] — proof a gate fired before the risky action (gate, trigger, checked_before_action, result, notes)
Session schema: spin_triage{} — cross-session signal check (repeated_categories_checked, new_prevention_artifacts, classified_one_off, deferred_prevention)
build-trends.mjs CATEGORY_GATE_MAP — each threshold category maps to a specific gate, destination, triggers, and checklist summary
build-trends.mjs: THRESHOLD UNHANDLED signal — names the gate + destination when a category has no spin_triage entry
build-session.mjs: spin_triage validation — warns at step 1 of retro if session has spins but no triage block
engine-health.md: Threshold-Crossed Categories section — shows UNHANDLED vs accounted-for, plus recommended gate for each
“A prevention method is not real because it exists in a file. It is real when the correct trigger fires before the risky action.”