Skip to content

runner v0.21.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 19:57
· 37 commits to main since this release
Immutable release. Only release title and notes can be modified.
e742a6b

Runner v0.21.0: an input profile may hold its page receipts to an endpoint scope instead of one exact endpoint (RFC 0018 round 15), so one reviewed page profile verifies a research source's reads of more than one URL; verify-run names profile-mismatch when a release's frozen profile is not among the profiles it is given.

What an operator must do

  • Nothing for existing profiles and runs. A profile without endpointScope keeps its form, its digest and its exact endpoint check; exports, the journal and the forty-one earlier vectors are byte-identical.
  • To let one page profile verify several URLs, register it with endpoint null and endpointScope, an array of 1 to 32 prefixes in the constrained page form (https://, a DNS name, nothing, :443 or : for the port, an optional path), or https://* on a profile of class generated. The profile must be of shape http with the adapter adapter-web, and a generated one declares research with the capability page alone. It binds to a research source's page assignment; bound to an operation or a selected file it is profile-mismatch.
  • If you acquire pages for a research source, hold every requested URL, discovered ones included, to the scope before sending it, as docs/MAPPING-V2.md ("Admission before acquisition is the caller's") states; the Runner itself sends no page request, and refuses a receipt outside the scope at verification. (These notes first said the Desk already does so; it does not yet, judgment-pack-desk#423.)
  • If you read verify-run's refusal of a release whose frozen profile is not among those given, it now ends "(profile-mismatch). No decision was requested." as other coded refusals do; the exit code is unchanged.

An endpoint scope (#142, closes #141)

  • endpointScope is admitted on every path that takes profiles (start, POST /v1/input-profiles, verify-run --profiles, and the offline verify-preparation, digested over canon bytes), with RFC 0018 §5.1's refusals: input-over-bound for its bounds, counted first; input-malformed for its form, the shape and adapter, a non-null endpoint, or the wildcard on a record profile.
  • Check 3 under a scope: the receipt's acquisition.endpoint, the final URL after followed redirects with its query removed, must be in the constrained form and match an entry (hosts equal with ASCII case folded, the three spellings of port 443 equal, the path a prefix at a literal / boundary, no decoding). Without a scope the comparison is byte for byte as before. One matcher, written from the text, serves every path.
  • Six new preparation vectors record judgment-pack-spec#199's evidence over synthetic pages a stand-in served: two paths of one origin and two origins under the wildcard, read and verified; an endpoint outside the scope, a redirect target outside it and a changed request, each acquisition-invalid; a changed scope, profile-mismatch. The specification stages them (judgment-pack-spec#208).

Verification

CI ran formatting, vet, the race tests and the real-Runtime integration tests on Linux and macOS at the pull request's head and again at the tag, against Runtime 09206e7 (released as v0.34.0).

  • Agreement: the specification's Python reader answers the six vectors and all 100 of its endpoint-scope probes exactly as verify-preparation does.
  • Mutation checks: the scope match, the segment boundary, the wildcard's class rule and the empty-port spelling each removed and caught.
  • Review: one clean-room round by Claude Opus over a Claude Opus build, recorded on the pull request; the same vendor at the maintainer's direction while the OpenAI reviewer was unavailable, so not a cross-vendor review. One MEDIUM (the uncoded verify-run refusal above) and three LOW, all fixed before merge.

See releasing for how a download is verified.