Build Log
Alloy Production Outage — Three Root Causes, One Bad Afternoon
August 16, 2026
A day of real Alloy Workbench feature work went live and 500'd the entire product for 15+ minutes — three independent, unrelated root causes, none caught by any existing check, all fixed forward and mechanized so they can't recur silently again.
Timeline
What shipped
products/alloy/components/WorkbenchNavItems.tsx — extracted NAV_ITEMS + icon functions into a boundary-safe shared file (no 'use client', no server-only APIs), fixing the real RSC violation
products/alloy/components/Sidebar.tsx and WorkbenchMobileNav.tsx — both now import from WorkbenchNavItems.tsx instead of from each other
Railway variables: ALLOY_OWNER_USER_ID set on the live alloy service via railway variables --set, followed by railway redeploy
forgekit-os/scripts/deploy-alloy.mjs — extended from a 5-step branch-merge script to a 7-step deploy mechanism: added a real `npm run build` step, a live Railway env-var verification step (railway variables), and a live production HTTP check
docs/platform/alloy-production-outage-2026-08-16.md — full incident writeup: all 3 root causes, why each wasn't caught, the structural fix, and what's still explicitly not fixed
.claude/rules/ignition-core.md §KNOWN TRAPS — 2 new Active rows (RSC boundary violation; live env-var verification across deploy targets), 2 rows archived to make room, Archived table cap raised 10→20
.claude/rules/gates.md — Environment & Config Gate checklist gained a non-Vercel live-target verification line; Deploy Gate's 'what this prevents' list gained this incident as its most severe confirming instance
“it is fine now. ok. write this all up and deal with it so it doesnt happen again.”