ForgeKitFORGEKIT

Build Log

ForgeKit Command, and a Foreman That Can Close What Is Already Live

October 10, 2026

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.

AlloyForgeKit CommandOwner LoopForemanWitnessDeploy
13
risks in the register, each with what is still to prove
266 of 383
Witness reviews that had been discarded over missing brackets
515
Witness review attempts now stored and readable in Command
105 of 106
test:os commands passing on a clean tree (the 1 is a pre-existing Alloy test)
1
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”

— Zeb, on the first version of the Command page