Proof, validator, course, and publish gates close every Alembic run.
@alembic/coda implements the four gates that must clear before a run is considered done:
proof[] command exited 0.If any gate fails, the run fails closed and evidence is written to the run directory.
Think of it like… airport security: each checkpoint must pass before you board, and any failure sends you back for inspection.
runProofGate reads TaskState events from the store and writes units/<unitId>/proof-results.jsonl. runValidatorGateForSpec converts proof results into BusinessSignal evidence and runs a council verifier panel. generateCourse emits self-contained EN + PT-BR HTML. runPublishGate requires approved: true and a gist publisher; unapproved artifacts are parked.
# a Forge-scope run with --yes clears the publish gate
alembic run --goal GOAL.md --plan alembic.plan.ts --yes --offlineThe CLI passes injected publishers in tests so the publish gate can clear even offline. In production, the loop-engineering publish scripts create a private gist and optionally a Cloudflare Pages site. The course directory becomes the artifact published by the gate.
Run a Forge-scope command with --yes and look for publish gate: published in the output. Find the gist URL in the run directory.