Skip to content

test(sandbox): exercise Linux private mount ancestry and file masks - #73

Closed
vanedaltro wants to merge 4 commits into
feat/plugin-native-policyfrom
feat/plugin-linux-mount-protection
Closed

vanedaltro wants to merge 4 commits into
feat/plugin-native-policyfrom
feat/plugin-linux-mount-protection

Conversation

@vanedaltro

@vanedaltro vanedaltro commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

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.

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