Skip to content

feat(plugins): extend native confinement and IPC diagnostics - #80

Merged
vanedaltro merged 22 commits into
mainfrom
feat/plugin-native-host-admission
Oct 31, 2026
Merged

vanedaltro merged 22 commits into
mainfrom
feat/plugin-native-host-admission

Conversation

@vanedaltro

@vanedaltro vanedaltro commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

The Linux native-confinement candidate preserves private pathname stream exchanges, but its accepted-side peer credential diagnostic exposes a compatibility failure: listeners see the broker worker PID instead of the plugin PID. The macOS signing candidate now has separate stream, peer-identity, descriptor and datagram proofs. Production native admission remains inactive; the App still uses its legacy launcher.

Changes

  • Pin the requesting Linux thread's socket and actual scratch endpoint through worker connect. Cover relative lookup, socket/directory aliases, cross-mount rejection and real post-pin FD/address/path replacement.
  • Require actual absolute/relative UNIX exchanges from Node, Python, Bun, Deno and native C across the runtime capability matrices. Record accepted-side peer credentials independently of data exchange. Both Linux architectures confirm the worker/caller PID mismatch; diagnostic success is not IPC acceptance.
  • Retain a proposed kernel-enforced UNIX policy revision for review. Its changed Landlock ABI-9 dependency is not approved. ABI-8 refusal is not positive support evidence.
  • Share the experimental macOS profile builder. Preserve private stream/alias exchanges and actual peer PID/UID/GID while checking owned-host stream delivery through direct and alias routes.
  • Require SCM_RIGHTS reception after closing the sender descriptor, matching inode identity and actual read/write/CLOEXEC behavior. Observe the original unlinked dummy file through a parent-pinned descriptor after the guest substitutes its pathname.
  • Add private connected/sendto/sendmsg datagram exchanges and six direct/symlink host routes. A separate bounded native receiver records actual packets, acknowledges valid tokens and settles explicitly after the guest. Missing executable and failed-bind controls must reject; failed startup cannot count as zero delivery.
  • Race a scratch alias between private and host endpoints during sixteen native sendto/sendmsg attempts. Bound and join the mutator, distinguish real private/host acknowledgements from permission refusals, and compare the independent owner receipt total. Fixed private and host controls prevent a broken exchange from satisfying the isolation check.
  • Retain precise missing-grant, widened-scope, dropped-rights and path-reader counterexamples with original source-bound evidence. No production activation or parent acceptance checkbox is included.
  • Record the first native datagram race failure stage/errno without treating unknown errors as policy refusals. Require an actual occupied-bind failure control, retain the original Intel failed artifact and preserve all positive exchange/receipt requirements.
  • Bound FileChanged owner replacement during repeated remove/readmission while a predecessor settles. Reuse one pending replacement, revoke removed callback tokens immediately, and retain joined shutdown. Add a 256-cycle regression and an exact missing-fix workflow control.

Verification

Current head d689d2f: the Intel cf69598 run captured send/EINVAL after ten attempts in r0w1s1; the cause remains unresolved and that failed row is not acceptance. Retained artifacts include the verified source/tree/archive binding. The follow-up records the fixture PID, queries bounded kernel messages for only that PID and owned case directory on error, and runs independent controls after native setup even when the positive boundary test fails. Cancellation prevents new control execution; the failed primary still fails the job. All nine local rows and all five exact workflow steps pass; strict OpenSpec validates 113 items and spec lint reports zero errors/25 warnings. Fresh hosted results remain required. The same push includes the held roadmap/feature/guide corrections for implemented producers and open FileChanged/Setup/DirectoryAdded acceptance.

Prior diagnostic revision cf69598: adds first-failure stage/errno reporting and an occupied-client-bind control. All nine capability rows and four exact native workflow steps pass locally; unknown errors still fail and successful rows require empty/zero error fields. The original Intel failure artifact is retained with its verified archive digest and tested-source binding. This improves diagnosis; it does not resolve that failure. All 113 strict OpenSpec items pass; spec lint reports zero errors and 25 warnings. Fresh hosted native/platform CI remains required.

Owner integration revision 550e9b3: integrates main after #77/#81/#78 merged. All 58 observer library tests and 24 actual HTTP lifecycle tests pass on the composed source; formatting and all 113 strict OpenSpec items pass, with spec lint at zero errors and 25 warnings. Before main integration, scoped tools Clippy with warnings denied passed. The exact missing-fix owner control executed and failed at its task-growth assertion. Substantive review checked admission/activation lock ordering, immediate callback revocation, the pending-owner task bound and joined shutdown. Fresh hosted/platform CI remains required; task 5.2 stays open.

Native proof revision 08ee6fe: the Intel native signing job failed. Its retained unix-boundary.log records the r0w1s1 datagram mutation row reporting failed: true after three of sixteen attempts. The cause remains under investigation; the revision is not green and this does not satisfy native IPC acceptance. Other workflow successes do not override this result.

Local evidence at 08ee6fe: local arm64/Darwin 25.6.0 passes nine extended native IPC rows and 27 selected native/Node runtime rows. The retained race run has eight private exchanges and eight host acknowledgements when unconfined; all eight confined cases have eight private exchanges, eight permission refusals and zero host packets. Tests allow different valid schedules. Widened-scope, dropped-rights and path-reader counterexamples fail their required assertions. Reports match independently recomputed source manifests. C and TypeScript syntax, workflow YAML, nine shell steps, six embedded Python blocks and all 107 strict OpenSpec items pass. Spec lint reports zero errors and 25 warnings. Complexity analysis of a byte-identical .ts copy emits maximum ten for the IPC driver (the analyzer omits .mts). This historical local evidence does not establish hosted acceptance. Bun/Deno and Linux kernel enforcement cannot run locally on this macOS host.

Preceding head 68affad: 64 checks succeeded, one historical diagnostic was intentionally skipped, and the Intel Python native job was cancelled after ten minutes in checkout's Git fetch. Runtime setup and the capability matrix never ran; required artifact retention failed because no proof files existed. Job log. This revision is not reported as green. The new source revision starts fresh CI rather than counting the cancelled job as verification.

Prior head 48a5481: 65 GitHub checks succeeded and one historical diagnostic was intentionally skipped. Both macOS native signing jobs in run 41103134892 pass nine descriptor/listener rows and nine native runtime rows per architecture, including exact controls. Original reports and separate checkout bindings establish tested merge/tree equality and manifest identity. These receipts do not verify the later datagram extension.

Earlier Linux reports retain endpoint identity, file/FD/address mutation, relative path, alias and runtime exchange evidence. Run 41092065028 records the peer PID mismatch on both architectures against correct unconfined controls. The failure remains an explicit compatibility gap.

Remaining work

The independent pending FileChanged owner resource correction is now in #83, based on main after #79/#82 merged. It has its own focused/platform CI so it can ship independently. This native-runtime follow-up remains incomplete; the two-PR exception is limited to that resource fix.

Review the Linux dependency/direction revision before implementing that alternative. Complete peer identity, full datagram/seqpacket and ancillary behavior, concurrent endpoint mutation, proxy/network/secret intersections, immutable package/runtime admission, registry generations/quarantine, descendant resource settlement and actual App/server acceptance before activation. Remaining protocol/callback/producers, daily coding and binary editor work stays in the full goal. Native-workstream acceptance remains open; review-ready status is not completion of the full goal.

Native integration · Linux peer identity · Linux revision for review · macOS runtime exchanges · macOS owned streams · macOS descriptor passing · macOS datagram proof · Delivery rules

Concurrent datagram alias replacement evidence.

@vanedaltro vanedaltro changed the title feat(plugins): extend native confinement with private UNIX streams feat(plugins): extend native confinement and IPC diagnostics Oct 30, 2026
@leonardoaraujosantos
leonardoaraujosantos marked this pull request as ready for review October 30, 2026 23:53
@vanedaltro
vanedaltro merged commit 2745b4f into main Oct 31, 2026
69 checks passed
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