v0.22.0
v0.22.0
Minor release prepared 2026-09-06, landing the Run Operator Continuation
Pack (ADR-0043): a read-only
capability/readiness projection, an explicit open-console continuation from
run-status, a derived Repair Packet in the local Run Console, and the
seventh command run-handoff — plus the status/documentation alignment pass.
Capability & readiness receipt
scripts/capability_receipt.py projects one capability into an immutable
read-time receipt (capability / structured status / entrypoint /
prerequisites / fallback / publicClaim). Implementation, validation,
availability, and public claim stay separate dimensions, so a locally
implemented and tested capability can still carry an experimental or
blocked-by-gate public claim. Unknown or missing facts are never upgraded
to pass or stable; when no safe fallback exists the receipt names the
evidence gap instead.
The current production receipt is for Run Console only. Its inputs are
package inventory, test-file presence, and the existing trial record. Test
presence is not a passing gate result; gate outcomes and adapter capability
facts are not yet wired into this consumer. Receipts for other capabilities
remain follow-on work rather than implied coverage.
run-status continuation
run-status now names the concrete selected run, its current phase and
blocker, and one next valid action. When the run and the Console
prerequisites are eligible it emits an explicit open-console command — it
never starts a server, daemon, or background process silently. Ineligible
runs report the blocking reason and a safe fallback instead of a command
known to fail. Stale, partial, hash-mismatched, malformed, and inconsistent
runs remain visible as those states.
Derived Repair Packet (Run Console)
The local Run Console gains a read-only continuation view connecting an
existing point-back finding and verdict to the user intent, blocker source,
owning route, repair intent, invalidated Evidence, resume stage, next Agent
command, and any required re-capture. Missing, stale, or conflicting facts
are shown honestly rather than filled by inference. An owner-produced next
command is copyable when present; otherwise the packet reports
unknown/not-produced. The Console cannot execute it: the packet is a derived
view only, and the loopback security, closed action allowlist, source
locators, and side-effect-free GET/HEAD behavior are unchanged.
The status_projection owner now emits one exact Agent command for the
Recirculate repair path. The Console copies that command verbatim; it
does not infer a command from a label or execute it. Actions without an
owner-defined command still report not-produced. The automated extra-project
replay verifies copy → external repair → re-capture → refresh → handoff for
this path; its simulated review inputs are not new human approval or external
trial evidence.
Known limitations: Snapshot v1 does not carry owner-produced invalidated
Evidence details, a resume-stage fact, or a re-capture requirement. Those
Repair Packet fields remain not-produced, not empty or satisfied. The
top-level run-status --json invalidation flag is not a detailed invalidated
Evidence set. Completing those operator outcomes requires a separately scoped
owner/snapshot change; this release does not claim them delivered.
run-handoff command
A discoverable entrypoint (python <pkg>/scripts/run_handoff.py <run>)
wraps the existing static handoff builder. It reads fill: declarations
from the run's plan.md: a unique declared Fill is used automatically,
multiple declarations require an explicit selection, and none fails with a
repair instruction — it never scans the project to guess a Fill surface or
substitutes preview/reference assets. verdict, authority, and
confirmationSource are reported verbatim, including Pending, blocked,
not-applicable, and unsubstantiated; handoff never writes acceptance or
converts a non-Pass state into Pass.
Status and documentation alignment
README, package README, roadmap, phase pointer, command docs, and the
command inventory now share one capability vocabulary — stable,
experimental, blocked-by-gate, not-shipped, unsupported keep
distinct meanings, and the Command Inventory (ADR-0015 stable main) admits
run-handoff under the 0.22 version line. Run Console-related claims stay
local, experimental, and trial-gated in every current surface until
separately authorized external read-only evidence satisfies the trial gate;
historical trial, dogfood, release, and intervention records are preserved
as written. validate.py gains a capability-claim alignment gate so stale
public claims (command-count badges disagreeing with the shipped inventory,
the Run Console described as planned/not-shipped on current surfaces, or its
claim promoted to stable/public-ready on current surfaces) fail the
structure check, while historical records stay excluded from the rewrite
check.
Verification
Prepared-state verification uses the complete local Python and Chromium
matrix from CI, including the required host
prompt-contract regressions and extra-project operator journey. The replay
asserts Pending / Recirculate / Pass, real clipboard content, no read-side
writes, five real captures, strict validation, and delivered Fill/archive
identity. One Windows loopback transport abort required an isolated and then
full-gate retry; the original failure remains recorded, with no transport fix
claimed. These are local engineering checks, not hosted CI results, model
quality evaluation, or an authorized external trial. Execution and evidence
boundaries are documented in automated acceptance.