Checkwright v0.3.0
2026-07-17
Checkwright is the verification layer under agent orchestration, and this release folds releasing itself into that lifecycle: every iteration close now dispositions the release boundary, and a consumer can make that disposition a mechanical precondition on the next iteration. The work is in lifecycle-kit’s close template and its stage-entry tool — no battery gate moved, so the two gate sections below are None and the changes are declared under Behavior changes.
Tightened gates
None — no gate landed new or got stricter this release.
Renamed knobs
None — nothing was renamed or removed. This release adds one knob,
LIFECYCLE_KIT_BOUNDARY_REQUIRE (array, default empty), inert until you point
it at a boundary-evidence file. There is nothing to re-point.
Behavior changes
Both changes this release carries move no gate — they land here, the fixed section for what shifts outside the battery, reconciled by reading.
- lifecycle-kit close template gains a release-disposition step: every close
now reads a
release-policyslot and either executes the consumer’s release procedure or stamps an explicit no-release line into a disposition-evidence file (<iteration> release <version|none> — <basis>). If you adopt the close template as a shim, your close now owes this disposition each iteration — bind the slot to your release procedure, or to a plainnone-every-iteration line if you have none. The disposition gains teeth through the newLIFECYCLE_KIT_BOUNDARY_REQUIREknob: wire your disposition-evidence file into it andenter-stage.shrefuses the next iteration boundary until the closing iteration carries a disposition line (a missing member, a missing file, and a never-named closing iteration each take their fail-closed branch). Left at its empty default, nothing refuses — the enforcement is opt-in. - lifecycle-kit lead and scope templates gain an Opening-an-iteration contract: a live iteration lead relays the operator’s standing directive (a theme, never a slug list) verbatim into the scope dispatch and routes scope’s proposed unit set back as an ordinary escalation. If you drive iterations with a lead, this settles who owns unit selection — scope proposes, the operator disposes, the lead relays.
Upgrading
Sync the vendored kit directories wholesale at v0.3.0 and regenerate the
generated artifacts, then run the full battery — it stays green on a clean tree,
because the two changes this release carries are not gates. The tightened-gates
bullets stay the mechanical allowed-red set (None this release); the behavior
changes above are declared for reading, not a mechanical scan.
If a gate reds that this note does not name, the upgrade smoke was supposed to catch it first — open an issue, because that is a defect in the release rather than work for you.