Build Log · October 10, 2026
ForgeKit Command, and a Foreman That Can Close What Is Already Live
Alloy now has a cockpit that shows what ForgeKit is made of and what is actually happening in it, and it says plainly where it cannot see. Getting there exposed three places the system had been quietly wrong: discarded reviews, requests counted as closed, and a deploy that never built.
- Alloy
- ForgeKit Command
- Owner Loop
- Foreman
- Witness
- Deploy
- risks in the register, each with what is still to prove
- 13
- Witness reviews that had been discarded over missing brackets
- 266 of 383
- Witness review attempts now stored and readable in Command
- 515
- test:os commands passing on a clean tree (the 1 is a pre-existing Alloy test)
- 105 of 106
- deploy Railway skipped while the script reported success
- 1
risks in the register, each with what is still to prove
Witness reviews that had been discarded over missing brackets
Witness review attempts now stored and readable in Command
test:os commands passing on a clean tree (the 1 is a pre-existing Alloy test)
deploy Railway skipped while the script reported success
Timeline
Night
Clear the stuck owner requests
MedinaCHF 521651e3 and the canvas-1 requests, through three real failures in the approval path
Charge 1
Foreman, narrowed
One recipe: close a request production already serves, deploy nothing
Charge 2
ForgeKit Command
Council said cut scope; Zeb: 'Full initial charge. Proceed.'
Build
Registry, events, cockpit
Health only from recorded outcomes; the rest shown as unobserved
Audit
Independent audit, then Zeb's read of the page
'I don't see any action to take' became a next step on every gap
Witness
Reviews get a home
Classifier fixed, INSERT-only store, 515 rows backfilled
Deploy
Live, then the skipped build
Railway ignored a forgekit-os-only merge; script now forces it
Close
Zeb checked production
'it looks good in production. deploy is good'
What shipped
forgekit-os/command/ — components.json (hand-declared components and integrations), registry.json (generated from git-tracked files only), risk-register.json (R1-R13), test-evidence.json
forgekit-os/scripts/command/build-registry.mjs with a --check mode, wired into test:os
products/alloy/lib/command/ — events, projection, outcomes, steward (rules S1-S8, reports only), sources for Owner Loop, Vercel, Scout, Witness and Resend
products/alloy/components/command/ and the owner-only /command page: eight perspectives, layered architecture graph, replay, risks, tests, Steward
products/alloy/app/api/webhooks/resend/route.ts + products/alloy/lib/webhooks/resend.ts — signed delivery webhook that stores a domain and a hash, never an address (not yet enabled: no secret set)
products/alloy/lib/db/schema.ts — witness_reviews and resend_events tables
forgekit-os/scripts/witness/ — classifier fix (witness.mjs), mirror.mjs, provision-witness-store.mjs; .claude/hooks/witness-stop.mjs kicks the mirror
forgekit-os/scripts/lib/railway-watch.mjs + forgekit-os/scripts/deploy-alloy.mjs — force a Railway build when a merge changes only files Alloy reads at runtime; two post-deploy checks repaired on Windows
docs/command/ — foreman-role.md, steward-operating-model.md, gaps-and-limitations.md, reliability-assessment.md, witness-and-sterling-records.md
Foreman CLOSE_ALREADY_LIVE recipe, granted to MedinaCHF only; owner-loop-coordinator-resolve and owner-loop-backfill-canonical workflows
Owner Loop fixes: candidate fetch before promotion, no re-dispatch while a human decision is pending, a resolved block's reason cleared on every success close
products/medinaCHF production: foreman_recovery_attempts table provisioned (Zeb approved)
experiments/FretHero/frontend/vite.config.js — dev server stops watching 4.6 GB it never imports
“I assume some of this is accounted for on the what command cannot see section, but I don't see any action to take”