Build Log
OS Gate Cleanup
June 22, 2026
The Session-Close Gate was real. The 'pin' gremlin was not. Both now resolved.
Timeline
What shipped
Session-Close Gate added to gates.md with escape hatch documented
Escape hatch upgraded: session_close_gate_exempt (bare boolean, deprecated) → session_close_gate.human_accepted + reason (leaves fingerprints)
Deploy Gate trigger narrowed to first deploy / env+config+schema+integration changes only
AI Route Gate trigger clarified: content-based (SDK imports, model/prompt/streaming), not path-based
KNOWN TRAPS Session arc row updated to point to the new gate
ignition.md Deploy orientation line updated to match narrowed trigger
Trigger Map wired: 'Close the session' now routes through Session-Close Gate first
SPIN_CATEGORIES 'Demo & Narration' replaced with 'Session Closure Integrity' and precision keywords
CATEGORY_GATE_MAP entry added for 'Session Closure Integrity' → Session-Close Gate
Two phantom 'Demo & Narration' deferrals (both spin_ids: []) discharged via LEGACY_DISCHARGED_KEYS with audit trail
build:trends runs clean — Demo & Narration gone, Session Closure Integrity shows the one real spin
“The 'pin' gremlin hid in 'mapping.' A substring gremlin is the most polite kind of data corruption — it never crashes, it just quietly lies.”