Checkwright v0.28.0

2026-09-28

Checkwright is the verification layer under agent orchestration, and this release adds one command for every queue move, checked before you commit, and publishes a harness plugin that lists Checkwright in Claude Code’s plugin marketplace.

In brief

  • In Claude Code, Checkwright now installs from its own plugin marketplace. The plugin registers the lifecycle stage skills and the tool-call guards, and its install skill runs the installer for you; the plugin itself vendors nothing. The marketplace section of the install page has the two commands.
  • Queue moves no longer need a hand edit. One command promotes, retires, evicts, thaws, splits or stamps an entry, writes it only when the queue stays consistent, and checks the queue before you commit. A second command prints one entry’s history.
  • You may have one step to take after upgrading. A queue whose recurrence dates are space-separated, or are not real calendar dates, now reds. Rewrite each array comma-separated.

Tightened gates

  • check-queue-hygiene — a tag line’s [recurrence:] array must now hold only calendar-valid YYYY-MM-DD dates, comma-separated; a space-separated array, an impossible date or an empty value reds, where the counting readers dropped it silently. Rewrite the array in that form; --queue recur <slug> stamps it so.

Renamed knobs

None.

Behavior changes

  • --queue — new arm: one move or stamp on the queue file — promote, done, clear-done, icebox, recur, demote, thaw or split — written only when its postcondition on the live and done sets holds, then post-checked by every gate coupled to the queue file; exit 0 is written and green, 1 written with a red to fix before you commit, 2 nothing written. --emit queue-history <slug> prints one entry’s section transitions, oldest first. Nothing to do; a narrow allowlist grants one verb as Bash(<door> --queue <verb> *).
  • lifecycle-kit/templates/stages/close.md, spec.md, scope.md and build.md — each queue move they instruct now names its verb in place of the hand edit: --queue recur for a judged recurrence, --queue done for a Done move, --queue clear-done, --queue promote and --queue demote. Act only if your stage bindings restate those moves rather than pointing at the templates: take the verbs.

Upgrading

Replace the vendored kit directories wholesale at v0.28.0, or run checkwright update. Regenerate your generated artifacts; each freshness gate that reds prints its own regen command. Then run the full battery.

The allowed red. check-queue-hygiene reds on a [recurrence:] array that is space-separated or carries an impossible or empty date. Rewrite it comma-separated, or restamp it with --queue recur.

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.