Skip to content

runner v0.20.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 12:32
· 39 commits to main since this release
Immutable release. Only release title and notes can be modified.
8462044

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-run report changes, as the next point says.
  • If you read verify-run's report on an audit-disposition-mismatch, it now carries the members a verified export's report has (binding, exactBytes, exportVersion, scope, targetsByClass, and unsignedFreshness, unsignedParameters, runChain, signature and recordDigest where the export has them) beside retainedDisposition; 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 with 429 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}/events are still recorded as skipped at a full queue, as that route documents.

The disposition finding keeps its checked report (#137, closes #69)

  • verify-run verifies the preparation independently of the retained disposition, so a changed run.result.disposition no 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.md and --help give both report forms. The disposition-differs-from-audit vector'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.md states 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 as event_conflict, durable queue, overlap and restart recovery, reconciliation of an acknowledged or uncertain delivery through GET /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/previews writes for a release declares audit.dir, and that the pinned Runtime takes a cited run of it, so the Runtime's refusal of --cites in a project that keeps no trail (its ADR-0051) cannot be reached through the Runner. docs/MAPPING-V2.md says 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.