Skip to content

runner v0.27.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Oct 12:23
· 2 commits to main since this release
Immutable release. Only release title and notes can be modified.
1164d78

v0.27.0

Runner v0.27.0 is the cross-repo release of the v0.27.0 milestone. Ordinary runs may now
declare Spec Core 0.3.0 beside 0.2.0-draft, and the declared version chooses the
evaluator (#188). The Runner's durable Gateway contract moves to
Gateway v0.23.0
(#192). A preparation-only selected-profile namespace serves Desk #599 (#191). The
producer of the genuine Core 0.3.0 recording set ships (#174), and its set is published
in the Spec. The Spec's maturity remains draft. This release claims no Extended Runner
support.

What an operator must do

  • Run Core 0.3.0 packs with a Runtime that evaluates Core 0.3.0, such as
    Runtime v0.39.0.
    A pack that declares 0.2.0-draft is evaluated as before; nothing is upgraded.
  • Expect the new refusals named below if a caller names a selected profile on an
    ordinary route, or sends descriptorProvenance on a non-MCP acquisition.
  • The usual care applies before any upgrade: stop Desk and Runner and back up the Jobs
    workspace, including SQLite/WAL, as
    State and backups describes. The store schema is
    unchanged and there is no migration. Selected profiles are kept under a new key of the
    existing metadata table; a store without one opens as before. A store written by
    v0.26.0 opens with no migration: its queued runs run under 0.2.0-draft, its exports
    verify, and re-exporting gives identical bytes.

Core 0.3.0 on ordinary runs (#188)

  • Ordinary preview admits packs that declare specVersion 0.3.0 beside
    0.2.0-draft. The declared version selects the evaluator. The manual profile stays on
    0.2.0-draft.
  • invalid_pack now names what the pack declares: This runner evaluates packs that declare specVersion 0.2.0-draft or 0.3.0; this pack declares "<v>", or "none" or
    "another version" when the value is empty or longer than 64 characters.
  • The Runner holds the Runtime's existing evaluatorSpecVersion member, in run.result
    and in the audit record, to the release pack's declared specVersion. This adds no new
    record member.
  • verify-run refuses evaluator-spec-mismatch when either member, where present,
    differs from the declared version. The check comes after the signature checks and
    before the preparation, and the refusal reports alone (exit 1, stderr). It also
    refuses member-name when a run result or audit member equals evaluatorSpecVersion
    except for case. Records made before this release keep their findings.

The selected-profile namespace (#191, #194)

Three preparation-only routes, each behind the exact installed JPack-Conversion-Contract
selector with the roles document-validation, preview, preparation and producer-carrier:

  • GET /v1/retained-column/1/selected-profiles
  • POST /v1/retained-column/1/selected-profiles: 201 when new, 200 when identical
  • POST /v1/retained-column/1/selected-inputs/next

Without the prefix the same paths answer 422 selected_preparation_unselected.
GET /v1/status reports the capability selected-profile-preparation, contract
selected-profile-preparation/1. Its bound is 16 profiles and 81,920 bytes, separate
from the ordinary bound of 16. Planning persists nothing.

New refusal codes:

  • selected_profile_unsupported (422), selected_profile_limit (422) and
    selected_profile_conflict (409).
  • selected_profile_ordinary: 409 on admission, 422 on selected planning.
  • input_profile_selected: 422 on ordinary bindings, planning, preview, import, release,
    job and job upgrade, and on a run's submission whose mapping names a selected profile.
    The submission is refused before the job, its release or the mapping comparison is
    read; an identical retry is answered first. 409 on ordinary registration of a selected
    id.

A selected profile never reaches ordinary evaluation. openapi.json carries the routes
and schemas. The new vector is vectors/selected-profile-preparation.json.

The durable Gateway contract (#192, #194)

The durable Gateway contract moves from Gateway v0.9.1 (5b49e1e) to v0.23.0
(82d4f8a). A receipt's acquisition.descriptorProvenance is accepted as a signed
member on an MCP acquisition, and refused acquisition-invalid on any other. The
Runner's acceptance does not establish the Gateway's own descriptor checks; see
durable sources.

The Core 0.3.0 recording set (#174)

scripts/recording-set.sh OUT and tools/preparation-vectors -core 0.3.0 produce the
genuine Core 0.3.0 recording set. Its manifest gains core, producer, signing,
notFixed, recordings, notRecorded, and recorded on each vector. The set of 46
recordings, made at Runner 275b5ce, is published in the Spec (Spec #281) beside the
unchanged historical set. vectors/preparation here is unchanged.

Verified with

Companion Commit Release
Tested Runtime 09206e7 main at runtime #291, contained in v0.38.0
Retained-column Runtime 12793d2 v0.39.0
Earlier Runtime 7a2fcfe v0.27.1
Durable Gateway contract 82d4f8a v0.23.0
Old Runner 1cc6b29 test-only

Desk is not pinned by this release; Desk adopts it in its own lane.

Known and not fixed

  • A Core evaluation error on a 0.3.0 release under the private workflow host is
    recorded as interrupted, not as an evaluation error. No route reaches that host.
  • No test pins that the non-MCP descriptorProvenance refusal comes before the
    signature check; the code is acquisition-invalid either way.
  • An MCP descriptorProvenance is accepted in any form once signed by the trusted
    Gateway key; the Gateway's own verifier is stricter.
  • CI does not run scripts/recording-set.sh. The published set was checked against this
    commit independently.

Review: the pre-release review of v0.26.0..44f0385 is on this pull request (a Claude
Opus review of a Claude Opus build; not a cross-vendor claim). It found 0 HIGH,
0 MEDIUM and 5 LOW.