Skip to content

Pages: Prepare runtime from sealed inputs - #1258

Open
brandonpayton wants to merge 2 commits into
mainfrom
emdash/pages-runtime-input-sequence
Open

Pages: Prepare runtime from sealed inputs#1258
brandonpayton wants to merge 2 commits into
mainfrom
emdash/pages-runtime-input-sequence

Conversation

@brandonpayton

@brandonpayton brandonpayton commented Aug 12, 2026

Copy link
Copy Markdown
Member

Why

The protected Pages canary builds an exact browser runtime from the
current protected main commit. That build imports the canonical shell
and support programs, but the workflow attempted it before those sealed
inputs existed in its isolated package cache. Clean hosted runners
therefore failed on missing shell.vfs.zst and curl.wasm paths before
they could prove the assembled Pages site.

This blocks the protected hosted canary required before activating ABI
staging and testing the ABI 43 batch. The runtime must consume the same
exact inputs that later product recomposition uses, without falling back
to ambient files or exposing write credentials.

Protected merge rehearsal also revealed that reading more than seventy
immutable GitHub Release assets can outlast the resolver's old ten-second
retry window during a content-delivery-network outage. Those failures
must remain bounded and retryable without weakening byte or provenance
validation.

What changed

  • Materialize and seal current product inputs before runtime preparation.
  • Pass the one isolated package cache through both clean dev-shell
    boundaries.
  • Require an absolute real cache directory outside the exact source tree
    and reject symlinked ancestors.
  • Add workflow mutations for reversed ordering and both missing cache
    handoff edges.
  • Rotate the protected request-policy identity from version 11 to 12.
  • Give archive bodies eight attempts with capped exponential backoff,
    while keeping metadata reads on their smaller retry budget.
  • Preserve the one-hour archive deadline, resumable transfers, digest
    checks, provenance validation, and fail-closed protocol handling.

Validation

  • scripts/dev-shell.sh bash scripts/test-abi-staging-prepare-runtime.sh
  • scripts/dev-shell.sh bash scripts/test-pages-deployment-contract.sh
  • request-policy and evidence-definition freshness checks
  • 17/17 focused remote_fetch Rust tests
  • full xtask: 754/763 passed; all downloader and build-deps tests passed.
    Eight unrelated check-projection fixtures use a pre-existing empty
    component inventory, and one product-manifest test needs the absent
    local musl submodule file.
  • rustfmt --edition 2024 --check tools/xtask/src/remote_fetch.rs
  • git diff --check

Hosted staging for exact head
b5c4fb7e9c393463e9de1dd18128fe33559b105e is running. Its first
preflight attempt failed before compiling xtask because GitHub returned
503 for Nix's pinned flake-utils tarball across every built-in and
workflow retry. Independent test jobs continue, and the failed job will
be rerun on this same immutable head after the upstream endpoint
recovers.

Rollout

This remains an inert, read-only protected-main canary. It does not
deploy Pages, publish packages, mutate the tap, or enable ABI staging.
After merge, the protected-main canary will supply the hosted evidence
needed for the separate activation step.

The protected Pages canary built its browser runtime before the
canonical shell and support programs existed in its isolated package
cache. Vite therefore fell back to missing source-worktree program
paths on clean hosted runners.

Materialize the exact current product inputs first, require the runtime
preparer to receive that explicit real cache root through both clean
environment boundaries, and fail closed on relative, symlinked, or
source-contained cache paths. Bind the behavior in request policy
version 12 and add executable workflow mutations for the ordering and
cache handoff.
@brandonpayton brandonpayton added ready-to-ship Maintainer attests the exact tested head and requests merge preparation. and removed ready-to-ship Maintainer attests the exact tested head and requests merge preparation. labels Aug 12, 2026
Exact merge preparation can materialize more than seventy immutable GitHub Release assets. The existing three fixed retries covered only ten seconds of content-delivery-network failure and twice stranded an otherwise-green synthetic merge.

Give archive bodies eight attempts with capped exponential backoff while preserving the existing one-hour download deadline, digest checks, provenance validation, resumable transfer, and short retry budget for metadata documents. Cover recovery after four transient failures and bind the 155-second maximum wait in tests and documentation.
@brandonpayton brandonpayton added the ready-to-ship Maintainer attests the exact tested head and requests merge preparation. label Aug 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-ship Maintainer attests the exact tested head and requests merge preparation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant