Repository navigation
runner v0.21.0
·
37 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
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
endpointScopekeeps 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
endpointnullandendpointScope, an array of 1 to 32 prefixes in the constrained page form (https://, a DNS name, nothing,:443or:for the port, an optional path), orhttps://*on a profile of classgenerated. The profile must be of shapehttpwith the adapteradapter-web, and ageneratedone declaresresearchwith the capabilitypagealone. It binds to a research source'spageassignment; bound to an operation or a selected file it isprofile-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)
endpointScopeis admitted on every path that takes profiles (start,POST /v1/input-profiles,verify-run --profiles, and the offlineverify-preparation, digested over canon bytes), with RFC 0018 §5.1's refusals:input-over-boundfor its bounds, counted first;input-malformedfor its form, the shape and adapter, a non-nullendpoint, or the wildcard on arecordprofile.- 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-preparationdoes. - 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-runrefusal above) and three LOW, all fixed before merge.
See releasing for how a download is verified.