Skip to content

Preserve public Git snapshot access for fixed nonroot P2 execution - #1036

Merged
EHotwagner merged 3 commits into
mainfrom
routine/fourd-p2-snapshot-access-20261021
Oct 21, 2026
Merged

EHotwagner merged 3 commits into
mainfrom
routine/fourd-p2-snapshot-access-20261021

Conversation

@EHotwagner

Copy link
Copy Markdown
Contributor

A Git snapshot extracted under caller umask 077 can be inaccessible to the fixed non-root P2 container. Normalize only the validated public snapshot to directories 0755 and files 0644/0755 according to Git executable bits. Keep private parents, output ownership, readonly binds and the runtime isolation contract unchanged; refuse links, special files and changed extraction populations before launch.

The existing RunAsync fixture now uses real tar under a child-local restrictive mask and checks bytes, executable classes and private ancestors at an inert Podman port. It also covers symlink/FIFO, extra/missing and escaped-tree refusals. Both focused runner tests passed after a warning-as-error ABI declaration correction; the original FS0009 build failure is retained. Source review accepted both the implementation and that narrow correction. Atlas captures the source boundary without claiming execution as actual UID32768.

Validation: SDK 10.0.400; locked private restore; Release build with warnings as errors; two focused PortableWorkspaceExecutorTests passed. No actual Podman, image, container-UID or full FourD acceptance is claimed. Refs https://github.com/FS-GG/FS.GG.FourD/issues/37; its full acceptance, original image-success/P2-failure evidence and policy #39 hold remain open. This PR supplies the producer correction for that same owned acceptance route and does not close the owning issue.

@EHotwagner
EHotwagner requested a review from a team as a code owner October 21, 2026 03:59
@EHotwagner
EHotwagner merged commit 9d99573 into main Oct 21, 2026
52 checks passed
@EHotwagner
EHotwagner deleted the routine/fourd-p2-snapshot-access-20261021 branch October 21, 2026 04:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant