Repository navigation
runner v0.20.0
·
39 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Runner v0.20.0: verify-run keeps the preparation's checked report beside an audit-disposition finding; a record delivery at a full queue is refused for retry instead of recorded as skipped, and the record-delivery contract a desk's collections rely on is written down and held by tests; every release is pinned to declare its audit directory; the private draft-workflow layer gains its inventory, attempt custody and source checkpoints, still without any exposed surface.
What an operator must do
- Nothing for existing runs. Exports, the journal and every published vector are unchanged; all forty-one vectors recompute byte for byte. One vector's expected
verify-runreport changes, as the next point says. - If you read
verify-run's report on anaudit-disposition-mismatch, it now carries the members a verified export's report has (binding,exactBytes,exportVersion,scope,targetsByClass, andunsignedFreshness,unsignedParameters,runChain,signatureandrecordDigestwhere the export has them) besideretainedDisposition; the status, exit code 1, the error text and the refusal flags are unchanged. Where the preparation fails its own verification too, the report is the finding alone and the error carries both refusals. - If your outbox delivers record revisions to
POST /v1/triggers/{trigger}/deliveries, a delivery made while one hundred occurrences are pending is now refused with429 queue_full, retryable, and nothing is admitted; deliver the same bytes again later. v0.19.0 admitted it as skipped, and because the event's identity is the revision's, that revision could never run afterwards. Deliveries through a credential to/v1/triggers/{trigger}/eventsare still recorded as skipped at a full queue, as that route documents.
The disposition finding keeps its checked report (#137, closes #69)
verify-runverifies the preparation independently of the retained disposition, so a changedrun.result.dispositionno longer hides the freshness, binding and chain checks the release notes of v0.9.0 promise on every such export; nothing unverified is reported as verified. Before the preparation is verified, only the export's envelope, the release digest and the record's signature can refuse alone.docs/MAPPING-V2.mdand--helpgive both report forms. Thedisposition-differs-from-auditvector's expected report is the new one; the generator reproduces the manifest byte for byte. The specification stages the same text (judgment-pack-spec#206).
The record-delivery contract (#139, closes #70)
docs/design/record-delivery.mdstates how caller-owned eligibility, the reviewed mapping, the include-existing choice and the outbox use the existing event API: a record and revision identity, a fixed release binding, the same envelope returning the same occurrence, a changed payload refused asevent_conflict, durable queue, overlap and restart recovery, reconciliation of an acknowledged or uncertain delivery throughGET /v1/triggers/{trigger}/deliveries/{event}without a second run, and inputs frozen at admission. Eight of those clauses were already held by the code; eleven tests now hold each, a signed acquisition carried by a delivery among them, checked under the one receipt rule with no request to a Gateway. The ninth, the full queue, needed the refusal above.
Every release declares its audit directory (#138, for #68)
- Two tests pin that the configuration
POST /v1/previewswrites for a release declaresaudit.dir, and that the pinned Runtime takes a cited run of it, so the Runtime's refusal of--citesin a project that keeps no trail (its ADR-0051) cannot be reached through the Runner.docs/MAPPING-V2.mdsays why. Issue #68 is closed as unreachable while that holds.
The private draft-workflow layer (#134, #135, #136, part of #121)
- A reviewed selection reserves every direct consumer's child in one transaction, repeatable and refused when changed; an interrupted attempt keeps its answers and artifacts, with explicit retries and restart recovery that never acquires again; a one-attempt driver checkpoints each acquired source and the prepared input before evaluation, through the existing Gateway acquisition protocol and the pinned Runtime. No API, command or executor is exposed, and the workflow tables are created only by the private store, which no exposed path opens; existing runs are unchanged. No RFC 0020 conformance is claimed.
Verification
CI ran formatting, vet, the race tests and the real-Runtime integration tests on Linux and macOS at each pull request's head and again at the tag, against Runtime 09206e7 (released as v0.34.0).
- Mutation checks: #137's independent verification removed fails five tests, the vector among them; #139 nine of nine caught, three reproduced by the reviewer; #138 the audit member dropped fails both tests.
- Review: #137 and #139 one cross-vendor clean-room round each (OpenAI model over an Anthropic drafter, recorded on the pull requests). #137: one HIGH (a chain-agreement sentence printed after a failed chain check) and three MEDIUM, all fixed. #139: no finding; the two loopback tests the reviewer's sandbox could not run were run by the maintainer at the same head. #138 changes tests and one sentence and had no round. The draft-workflow slices (#134, #135, #136): one clean-room round each by an OpenAI model, the same vendor as the drafter at the maintainer's explicit request, recorded on the pull requests.
See releasing for how a download is verified.