fix(publication): isolate offline release builds - #50
Open
rynfar wants to merge 1 commit into
Open
Conversation
rynfar
force-pushed
the
fix/preview-pack-sandbox-ownership
branch
2 times, most recently
from
September 3, 2026 04:13
e48c3d8 to
330587c
Compare
rynfar
force-pushed
the
fix/preview-pack-sandbox-ownership
branch
from
September 3, 2026 19:16
330587c to
64f0a13
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Preview Pack B failed with
EACCESwhen Docker left root-owned output, and the old boundary could execute downloaded or repository code as root. The release path needed to fail closed without exposing the original checkout, runner control state, credentials, or the real publication candidate to dependency-backed processes.Fix
Use one trusted host orchestrator with an exact pinned Linux/amd64 Node image and pinned npm archive. It separates dependency, pack, contract, candidate-preparation, final-verification, cache, and smoke work into disposable least-privilege phases. The real candidate is frozen, verified read-only, bound to a canonical receipt, and copied through bounded no-follow file descriptors into an output directory that containers never mount.
Keep install gates pinned and tokenless across Linux and macOS, including complete historical subject verification. Publication policy revision 3 is append-only and binds the exact final preview and stable workflow bytes.
Verification
68603ed89bb597cd715fd6a77bc1c39d7e110298(merged fix(publication): authenticate stable checkpoint retirement #52). Exact rebased head:64f0a13585aa1a8be5ae4403dcb6339360e59eb0; tree:4d11f900675f32a8edcdf8d41306627ab2146a48.git range-diffreports the old330587ca241bdd045ec6f11299e5ece133350ad7patch as exact=. A clean base/head merge-tree equals the rebased tree.f43bc3292d84d4fa779c035667387e15b832f126and consumer-lock blobeaf377c474efab6533b0bd98d6bb1b2a6cde1aa5are byte-identical at the head. Every non-overlapping sandbox/workflow/policy blob is byte-identical to the reviewed old head. The shared publication test file retains the merged fix(publication): authenticate stable checkpoint retirement #52 cases plus the unchanged sandbox patch.node@sha256:87a4f951f28b85d189df365d24c479d3bdb70be77c1ff5c9029db2ef67e251ac, and configsha256:6622b5ce13429346f91fcdb936ec2e026ccc28465409fd25b7f79c623e7a20af. Dependency, offline pack, 10/10 release contract, 39/39 publication contract, candidate preparation, canonical final receipt, and frozen final copy all passed in both modes. The five common CI/preview subjects were byte-identical.npm run test:pylon-release: 10/10 passed.npm run test:pylon-ruleset-auditor-app: 6/6 passed.actionlint,npm run check, andgit diff --check 68603ed89bb597cd715fd6a77bc1c39d7e110298..HEADpassed.Fresh CI run https://github.com/pylon-code/prime-agent/actions/runs/33795426695 completed at the exact head. Thirteen checks passed. Both artifact-pack replicas reached 38/39 and failed the preserved merged-base consumer test 29 with
Consumer high-water journal root changed without one exact current or immediate-successor authority.Reproducibility and install were skipped, and the aggregate failed as a consequence. No manual rerun was requested. The same combined suite passed twice sequentially, in two concurrent local processes, and in both exact local Docker contract phases; this remains a load-sensitive merged-base consumer race outside this sandbox-only commit.The prior independent security and workflow reviews remain patch-applicable because the sandbox commit is range-diff identical; no new review was performed for this rebase.
Built with OpenAI Codex GPT-5.6 using Prime Agent.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.