Repository navigation
test(sandbox): exercise Linux private mount ancestry and file masks - #73
Closed
vanedaltro wants to merge 4 commits into
Closed
vanedaltro wants to merge 4 commits into
vanedaltro wants to merge 4 commits into
Conversation
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.
Superseded by the consolidated draft #76 against main, following the user-requested limit on open goal PRs. This PR head is contained in the published #76 branch; its commits, source branch and verification evidence are retained. Closed as superseded, not merged.
Add a focused Linux mount experiment needed before production native policy composition. It covers private directories/files and immutable package/runtime objects nested inside a writable Location.
Native x64 and arm64 jobs at d4fcf3e both pass five cases. Each unanchored writable control performs eight protected parent/grandparent renames; same-path ancestor mounts refuse all eight with EBUSY while keeping sibling writes and public renames usable. Readonly cases reject workspace writes but permit scratch writes. Regular-file masks reject private reads/writes, immutable writes return EROFS, and all owner fixture bytes remain unchanged.
A /dev/null comparison observes a mode-0666 character device with a nodev mount flag and access denial. The first jobs failed because the diagnostic expected an empty read instead; that unproved expectation was corrected. The initial failed report is preserved explicitly as failed, alongside both passing reports. It is not counted as acceptance.
Both retained source manifests independently recompute from the exact fetched GitHub test merge d6afa58 (parents 7261e88 and d4fcf3e). Reports include checkout, kernel, bubblewrap/Python versions, observed rows and explicit outcome. Evidence is committed under scripts/probes/plugin-native-entry/evidence/linux-mounts-d4fcf3ee.
Local checks pass TypeScript/actor syntax, portable ancestor ordering/prefix checks, workflow YAML/two Bash blocks, diff checks, 107 strict OpenSpec items and spec lint (zero errors, 25 warnings). Broader current-head CI remains required.
This proves a mount primitive only. Landlock/packaged-helper composition, native read/shell/network/secret intersections, immutable runtime/helper/package admission, namespace ownership, generation lifetime and actual App/server activation remain open. No parent requirement or support/design gate is closed.
Stacked on #72. Scope/review: openspec/changes/complete-plugin-hook-runtime/linux-mount-protection.md. Do not merge automatically.