[FEATURE] Implement POSIX file descriptors and namespace semantics within delegated roots #2
Labels
No labels
bug
ci
docs
duplicate
enhancement
help wanted
invalid
performance
phase-6
question
refactor
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
erix/posixd#2
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem and motivation
Cargo, compilers and build scripts require shared open-file descriptions, atomic filesystem operations, locking and race-free readiness. Native pathname and held-directory behavior must be reconciled with these semantics without weakening object identity.
Proposed behavior and scope
Implement fd allocation/duplication, short and positioned I/O, pipes, directory/status operations, link/rename/truncate/durability, scoped temporary files, locks, readiness and only manifest-required local sockets. Exercise parallel build-style workloads and resource exhaustion.
This issue records planned work; its unchecked criteria are not implementation proof. The normative basis is Phase 6 and AC1–AC24.
Authority, security and reliability
Resolve each operation within delegated roots and exact-entry rights. Preserve native admission before deny-only modes/ACLs, retire descriptor aliases and wake only affected waiters, and reject cross-realm traversal or stale object reuse. Network or device names cannot grant network/device access.
Apply the priority order: security, reliability, then performance. Keep suspected vulnerabilities in the repository’s restricted SECURITY.md reporting channel.
Acceptance criteria
rights, offset, status flags, inheritance and alias count.
lowest-free allocation and complete transfer cleanup.
zero/short I/O, shared offsets, append atomicity, EINTR and nonblocking.
descriptor closure must wake exactly the affected waiters.
stable identity, correct dot entries, mode/size/link counts and source-qualified
ctime/mtime/atime behavior.
workload, with exact-entry authority and atomic visibility; cross-filesystem operations fail
deterministically without partial mutation.
rename/unlink expectations; implement safe object lifetime and namespace detachment without
reverting to path-based reopening or stale grants.
contracts; test concurrent access, ENOSPC and interrupted failure.
trusted metadata source. ACL byte preservation alone is not permission enforcement;
unsupported provider behavior must be explicit.
delegated tmp/output trees; no host
/tmpor ambient search.contention, cancellation and crash cleanup for Cargo/Git/build tools.
registration rather than periodic busy loops or fake timeouts.
endpoints. Network sockets remain unavailable without later networking authority; device-node
names alone grant no device access.
directory lifetime, revoked handles and mutation outside scope.
locks, large trees, long paths and explicit resource exhaustion.
For each implementation slice, retain actual formatting, strict Clippy, unit/doctest and warning-denied build results for all altered Rust repositories and valid configurations. Add relevant runtime VM coverage, monitor older unit/VM regressions in exact-head CI, and update canonical component documents and affected technical-manual/API material. Every authored code file must remain below 1,000 physical lines, with meaningful inline documentation and missing_docs enforcement in Rust crates.
Alternatives and tradeoffs
Reopening by path or loosening provider pins can substitute an object after authorization. Preserve open-object identity and specify namespace detachment and rollback explicitly, with unsupported provider behavior reported as an error.
Tracking and rollout
Dependencies: lib-posixabi#1, posixd#1
Dependencies identify required contracts and closure gates; preparatory inventory/design can proceed in parallel under one owner per edited file. Link bounded implementation issues and their PRs here before claiming acceptance. Use
feature/posix-compat, regular signed commits in the canonical contribution format, and WIP PRs linked to the exact coherent component graph. All cross-repository Cargo/catalog selections and CI helpers use full 40-character lowercase commit hashes, including transitive dependencies; do not substitute branch, tag or implicit HEAD selection.Close criteria only with their own reviewed deliverables and validation evidence. Pending, skipped, cancelled, failed or predecessor-only results remain distinct. Keep main images unchanged until explicit promotion direction; technical completion does not authorize merges, release tags or publication.
[FEATURE] [P07] Implement POSIX file descriptors and namespace semantics within delegated rootsto [FEATURE] Implement POSIX file descriptors and namespace semantics within delegated roots