Narrow confined path authority at runtime handoff

This commit is contained in:
ms2k 2026-07-16 14:08:39 +09:00
commit cf914bdf51

View file

@ -229,11 +229,14 @@ Path resolution produces a `ConfinedPathPlan`, not an ambient absolute path.
Each plan retains a validated ancestor directory descriptor and a normalized Each plan retains a validated ancestor directory descriptor and a normalized
relative suffix, records the ancestor's device, inode, and mount identity, and relative suffix, records the ancestor's device, inode, and mount identity, and
keeps canonical raw pathname bytes only as a diagnostic label or digest input. keeps canonical raw pathname bytes only as a diagnostic label or digest input.
Every consumer uses descriptor-relative opens with beneath, no-magic-link, Lazaret-owned filesystem access and mutation use descriptor-relative opens with
no-symlink, and no-mount-crossing resolution and revalidates the expected type. beneath, no-magic-link, no-symlink, and no-mount-crossing resolution and
The consumer refuses a replaced ancestor, mount transition, symlink, special revalidate the expected identity and type. A trusted external component whose
file, type mismatch, or any source that cannot be revalidated; it does not interface requires a pathname may receive the canonical label only after
recover by opening the canonical label as an absolute pathname. Lazaret reopens it through the plan and revalidates it at the handoff boundary.
A failed revalidation refuses the operation; it does not fall back to opening
the label as authority. Replacement by a trusted host process after a successful
handoff is ordinary host concurrency rather than Agent Sandbox authority.
Lazaret creates a missing Storage, Runtime, profile, or Domain root one path Lazaret creates a missing Storage, Runtime, profile, or Domain root one path
component at a time beneath its retained existing ancestor. Every created component at a time beneath its retained existing ancestor. Every created
@ -250,8 +253,10 @@ final for that load and never authorizes a partially resolved root.
The profile directory is the `profiles/<profile-name>` child of the Storage The profile directory is the `profiles/<profile-name>` child of the Storage
Root. Persistent and runtime Domain roots use the lowercase hexadecimal Domain Root. Persistent and runtime Domain roots use the lowercase hexadecimal Domain
ID beneath separate `domains` children of the Storage and Runtime Roots. Those ID beneath separate `domains` children of the Storage and Runtime Roots. Those
fixed layouts are constructed only from validated root handles; a path string fixed layouts are created and mutated only through validated root handles.
or matching digest alone is not authority over a root. Canonical labels may identify them at a trusted external pathname handoff only
after the exact root has been revalidated through its retained plan; a path
string or matching digest alone is not Lazaret filesystem authority over a root.
Configuration confinement compares canonical component ancestry and retained Configuration confinement compares canonical component ancestry and retained
filesystem identities after every source has been opened. The configuration filesystem identities after every source has been opened. The configuration