Docs
Open Babbit

Reference

Change and release states

Every record in Babbit moves through stages by events, looked up in one table. Nothing moves on a schedule. The stages, and the events that move each kind of record.

How states work

A record moves from one stage to the next only when an event arrives that a row of Babbit's state table allows for its current stage. Each row can also check a condition against the record before it moves, and can name the job that runs next. Nothing moves on a timer.

  • An event that doesn't fit where the record is gets refused, in one sentence.
  • The same event twice does nothing the second time.
  • Every event applied is kept on the record, with what moved it, such as a pull request head or a merge.

The screens show friendlier names. The change screen's five steps group these stages: Asked covers brief, needs-you and propose; Approved is review; Built covers implement, writing and publish; Verified covers verify, capture and ready; Live covers landing, done and the release; the step lights only when the release reaches shipped.

Change

Stages

StageMeaning
briefBabbit is writing the brief.
needs-youWaiting on a person: a key, a sign-in, an answer or an "already does this" decision.
proposeThe Product agent is proposing spec lines.
reviewWaiting for a person to approve the proposed lines.
implementApproved; Code Writing's work is queued or being prepared.
writingThe Code Writing agent is working in its workspace.
publishThe work was handed off; Babbit is checking it and opening pull requests.
verifyBabbit is running each scenario's test at its pull request head.
captureThe Verify agent is capturing the app before and after.
readyEvery scenario has its evidence. Waiting for Merge & release or Apply change.
landingBabbit is merging the spec, then the code.
stalledThe workspace stopped answering or the session ended without a handoff. Resume continues it.
doneEvery pull request merged. Terminal.
landed-partialThe spec merged but a code pull request was refused. Terminal.
cancelledSomeone cancelled the change. Terminal.

Events that move a change

FromEventTo
briefbriefedpropose
briefgates-askedneeds-you
needs-yougates-answeredpropose
proposeproposedreview
reviewapprovedimplement
implementsession-startedwriting
writinghanded-offpublish
writinginput-requiredneeds-you
writingsession-ended or two-heartbeats-missedstalled
publishprs-openedverify
publishpublication-refusedimplement
verifyevidence-at-headcapture
verifytests-failed or conflictedimplement
verifyidentity-required or already-askedneeds-you
needs-youalready-answered or identity-answeredverify
needs-younot-yet or input-answeredimplement
captureall-greenready
readyland-confirmed or manage-confirmedlanding
ready, capture, landinghead-movedverify
ready, landingmain-movedverify
landingall-mergeddone
landingmember-refusedlanded-partial
landingconflictedimplement
stalledresumedimplement
Any open stage after briefrequest-changespropose
Any open stagecancelledcancelled

Every working stage also takes job-failed, which keeps the change where it is and offers Retry, and retry, which runs the stage's job again.

Release

StageMeaning
cutThe release records a commit per repository and deploys.
preprodDeployed to preprod; smoke scenarios run.
replayingLast week's prod traffic is replaying against preprod.
heldThe replay couldn't cover a call. Waiting for a person allowed to promote to production.
replayedThe replay was clean, or a person approved; deploying to prod.
prodDeployed to production; smoke scenarios run.
shippedProduction passed its smoke scenarios. Terminal.
rolled-backA smoke run or the replay failed, and every service went back. Terminal.
supersededA newer release was cut first. Terminal.
FromEventTo
cutdeployed-preprodpreprod
preprodsmoke-passedreplaying
preprodsmoke-failedrolled-back
replayingreplay-cleanreplayed
replayingreplay-uncoveredheld
replayingreplay-brokerolled-back
heldapprovedreplayed
replayeddeployed-prodprod
prodsmoke-passedshipped
prodsmoke-failedrolled-back
cutsupersededsuperseded
cutnothing-deployedshipped

Base snapshot

Every workspace starts from the project's base snapshot. It's rebuilt because main moved, never on a schedule.

StageMeaning
unbuiltNo snapshot yet.
buildingA build is running.
staleMain moved during the build; the next build starts when this one finishes.
readyThe snapshot is current. When QA is on, a finished build starts it, so QA runs on the new main.
failedThe build failed. The next move of main, or a rebuild request, starts another.

Other records

RecordStagesMoves on
Onboardingqueued → running → drafted → approvedstarted, drafted, approved; failed with continue or refresh back to queued
Sessionqueued → running → handed-off, stopped or failedThe agent's session starting, handing off, stopping or failing
Workspacerunning ⇄ stopped → ended or expiredStopping for a gate, resuming, ending with the change, or its snapshot expiring
Pushreceived → readBabbit reading a push for drift
Budgetwithin ⇄ overA budget alert, or the budget being raised