From b27ecb6d544114051a211a33077bc97caafc2b4a Mon Sep 17 00:00:00 2001 From: pdfinn Date: Sat, 22 Aug 2026 04:18:24 +0700 Subject: [PATCH] veltro: migrate the git service mount /n/git -> /mnt/git (INFR-401) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Placement convention (docs/NAMESPACE-LAYOUT.md): git/fs is an app-authored tree the git tool mounts during trusted init, so it belongs under /mnt. The tool's mount and all its reads move; the nsconstruct grant moves from the /n allowlist block to the /mnt fixed-function block (same gating: derived only from the git tool, never from generic path grants); fixedservicecontrolpath in both nsconstruct and tools9p carries /mnt/git with /n/git retained as a belt-and-braces legacy entry, following the /mnt/web + /n/web precedent; the namespace manifest emits git under the /mnt group. Also fixes webfs.b's stale default mountpt (/n/web -> /mnt/web), found in the placement sweep. Tests: veltro_security_test's git fixed-tree pair migrated (tool sees /mnt/git without a raw grant; generic tools do not) — full suite run in emu: 33 passed, 1 skipped, PASS. nsaudit rule fixture gains /mnt/git control paths. Docs and tool text describing the live path updated in the same change. Refs: INFR-401 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_017Eo29oZp7mPig1XekwRPsq --- appl/cmd/webfs.b | 2 +- appl/veltro/SECURITY.md | 2 +- appl/veltro/nsconstruct.b | 22 ++++---- appl/veltro/tools/git.b | 48 +++++++++--------- appl/veltro/tools9p.b | 1 + dis/tests/veltro_security_test.dis | Bin 39546 -> 39560 bytes dis/veltro/nsconstruct.dis | Bin 26445 -> 26586 bytes dis/veltro/tools/git.dis | Bin 21805 -> 21835 bytes dis/veltro/tools9p.dis | Bin 39250 -> 39351 bytes dis/webfs.dis | Bin 13761 -> 13763 bytes docs/ARCHITECTURE.md | 2 +- docs/OPERATIONAL-OVERVIEW.md | 2 +- .../architecture-review-veltro-unification.md | 2 +- lib/veltro/meta.txt | 2 +- lib/veltro/nsaudit/authorities/git | 4 +- lib/veltro/tools/git.txt | 2 +- .../paths | 2 + tests/veltro_security_test.b | 39 +++++++------- 18 files changed, 67 insertions(+), 63 deletions(-) diff --git a/appl/cmd/webfs.b b/appl/cmd/webfs.b index 17bd3faea..d6e63518a 100644 --- a/appl/cmd/webfs.b +++ b/appl/cmd/webfs.b @@ -157,7 +157,7 @@ init(nil: ref Draw->Context, args: list of string) args = arg->argv(); arg = nil; - mountpt := "/n/web"; + mountpt := "/mnt/web"; if(args != nil) mountpt = hd args; diff --git a/appl/veltro/SECURITY.md b/appl/veltro/SECURITY.md index a8e3c8e30..cbdde4722 100644 --- a/appl/veltro/SECURITY.md +++ b/appl/veltro/SECURITY.md @@ -691,7 +691,7 @@ be explicit: namespace surface supports that distinction. The same rule applies to other fixed-function service trees. `/mnt/matrix` is -derived only from the `matrix` tool, `/n/git` only from the `git` tool, +derived only from the `matrix` tool, `/mnt/git` only from the `git` tool, `/mnt/gpu` only from `gpu` or local `vision`, `/n/wikia` only from `wiki`, `/mnt/video` only from video presentation tools, and `/phone` only from `sms`, `dial`, or `contacts`. diff --git a/appl/veltro/nsconstruct.b b/appl/veltro/nsconstruct.b index b619c861d..9f1dcc900 100644 --- a/appl/veltro/nsconstruct.b +++ b/appl/veltro/nsconstruct.b @@ -207,7 +207,6 @@ restrictns(caps: ref Capabilities): string # /n is the IMPORT YARD — foreign trees imported intact (docs/NAMESPACE-LAYOUT.md). # All /n/ entries are capability-driven — never auto-exposed by existence: # /n/speech — "/n/speech" in caps.paths - # /n/git — fixed git tool # /n/wallet — "/n/wallet" in caps.paths # /n/pres-* — caps.xenith != 0 # /n/local — /n/local/ subpaths in caps.paths @@ -231,15 +230,6 @@ restrictns(caps: ref Capabilities): string nallow = "speech" :: nallow; } - # /n/git — fixed-function git service. The git tool mounts git/fs here - # during trusted init; generic path grants cannot expose gitfs ctl/raw - # repository state to unrelated tools. - if(inlist("git", caps.tools)) { - (gitok, nil) := sys->stat("/n/git"); - if(gitok >= 0) - nallow = "git" :: nallow; - } - # /n/wallet — only if explicitly granted via caps.paths if(inlist("/n/wallet", caps.paths)) { (walletok, nil) := sys->stat("/n/wallet"); @@ -338,6 +328,15 @@ restrictns(caps: ref Capabilities): string if(gpuok >= 0 && !inlist("gpu", mntpaths)) mntpaths = "gpu" :: mntpaths; } + # /mnt/git — fixed-function git service (git/fs, mounted by the git tool + # during trusted init; migrated from /n/git per docs/NAMESPACE-LAYOUT.md, + # INFR-401). Derived only from the git tool; generic path grants cannot + # expose gitfs ctl/raw repository state to unrelated tools. + if(inlist("git", caps.tools)) { + (gitok, nil) := sys->stat("/mnt/git"); + if(gitok >= 0 && !inlist("git", mntpaths)) + mntpaths = "git" :: mntpaths; + } # /mnt/ui — presentation surface (luciuisrv), granted only to fixed-function # UI tools. Per-invocation caps prevent unrelated tools from inheriting it. # Capability-gated exactly as before, now under /mnt. The grant exposes the @@ -1103,6 +1102,7 @@ calendarcontrolpath(path: string): int fixedservicecontrolpath(path: string): int { return path == "/mnt/matrix" || prefix(path, "/mnt/matrix/") || + path == "/mnt/git" || prefix(path, "/mnt/git/") || path == "/n/git" || prefix(path, "/n/git/") || path == "/mnt/gpu" || prefix(path, "/mnt/gpu/") || path == "/mnt/web" || prefix(path, "/mnt/web/") || @@ -1258,7 +1258,6 @@ emitmanifest(caps: ref Capabilities, mpath: string) # /n entries — capability-driven (import yard) nentries := array[] of { ("/n/speech", "Speech", "rw"), - ("/n/git", "Git", "rw"), ("/n/wikia", "Wiki Agent", "rw"), ("/phone", "Phone Bridge", "rw"), # The LLM (llm9p), UI surface (luciuisrv) and MCP providers live under @@ -1269,6 +1268,7 @@ emitmanifest(caps: ref Capabilities, mpath: string) ("/mnt/mcp", "MCP Providers", "rw"), ("/mnt/matrix", "Matrix Runtime", "rw"), ("/mnt/gpu", "GPU Service", "rw"), + ("/mnt/git", "Git", "rw"), ("/mnt/web", "Web Service", "rw"), ("/mnt/wiki", "Wiki Store", "rw"), ("/mnt/registry", "Registry", "rw"), diff --git a/appl/veltro/tools/git.b b/appl/veltro/tools/git.b index e0ea0f4a4..0374beffa 100644 --- a/appl/veltro/tools/git.b +++ b/appl/veltro/tools/git.b @@ -3,7 +3,7 @@ implement ToolGit; # # git - Git repository access for Veltro agents # -# Read operations go through git/fs mounted at /n/git. +# Read operations go through git/fs mounted at /mnt/git. # Write operations go through a worker thread that retains # the unrestricted namespace (spawned before restriction). # @@ -69,7 +69,7 @@ init(): string if(ok < 0) return nil; # No repo; exec() will return errors - # Mount git/fs at /n/git before namespace restriction + # Mount git/fs at /mnt/git before namespace restriction ready := chan of int; spawn mountgitfs(ready); result := <-ready; @@ -96,7 +96,7 @@ mountgitfs(ready: chan of int) } { - gitfs->init(nil, "git/fs" :: "-m" :: "/n/git" :: "/.git" :: nil); + gitfs->init(nil, "git/fs" :: "-m" :: "/mnt/git" :: "/.git" :: nil); ready <-= 1; } exception { "*" => @@ -299,15 +299,15 @@ workercall(cmdline: string): string gitstatus(): string { - branch := strip(readfile("/n/git/ctl")); + branch := strip(readfile("/mnt/git/ctl")); if(branch == "") branch = "(unknown)"; - headhash := strip(readfile("/n/git/HEAD/hash")); + headhash := strip(readfile("/mnt/git/HEAD/hash")); if(headhash == "") return "On branch " + branch + "\n(no commits)"; - headmsg := strip(readfile("/n/git/HEAD/msg")); + headmsg := strip(readfile("/mnt/git/HEAD/msg")); (firstline, nil) := splitline(headmsg); return "On branch " + branch + "\n" + @@ -318,20 +318,20 @@ gitlog(n: int): string { result := ""; - hash := strip(readfile("/n/git/HEAD/hash")); + hash := strip(readfile("/mnt/git/HEAD/hash")); if(hash == "") return "(no commits)"; - author := strip(readfile("/n/git/HEAD/author")); - msg := strip(readfile("/n/git/HEAD/msg")); + author := strip(readfile("/mnt/git/HEAD/author")); + msg := strip(readfile("/mnt/git/HEAD/msg")); (firstline, nil) := splitline(msg); result = shorthash(hash) + " " + firstline + "\n"; result += " Author: " + author + "\n"; - parent := strip(readfile("/n/git/HEAD/parent")); + parent := strip(readfile("/mnt/git/HEAD/parent")); for(i := 1; i < n && parent != "" && parent != "nil"; i++) { - objdir := "/n/git/object/" + parent; + objdir := "/mnt/git/object/" + parent; author = strip(readfile(objdir + "/author")); msg = strip(readfile(objdir + "/msg")); @@ -351,16 +351,16 @@ gitshow(gitref: string): string objdir: string; if(len gitref == 40) { - objdir = "/n/git/object/" + gitref; + objdir = "/mnt/git/object/" + gitref; } else { - hash := strip(readfile("/n/git/branch/heads/" + gitref + "/hash")); + hash := strip(readfile("/mnt/git/branch/heads/" + gitref + "/hash")); if(hash != "") { - objdir = "/n/git/object/" + hash; + objdir = "/mnt/git/object/" + hash; gitref = hash; } else { - hash = strip(readfile("/n/git/tag/" + gitref + "/hash")); + hash = strip(readfile("/mnt/git/tag/" + gitref + "/hash")); if(hash != "") { - objdir = "/n/git/object/" + hash; + objdir = "/mnt/git/object/" + hash; gitref = hash; } else return "error: cannot find ref: " + gitref; @@ -413,9 +413,9 @@ gitshow(gitref: string): string gitbranch(): string { - current := strip(readfile("/n/git/ctl")); + current := strip(readfile("/mnt/git/ctl")); - entries := listdir("/n/git/branch/heads"); + entries := listdir("/mnt/git/branch/heads"); if(entries == nil) return "(no branches)"; @@ -428,10 +428,10 @@ gitbranch(): string result += " " + bname + "\n"; } - remotes := listdir("/n/git/branch/remotes"); + remotes := listdir("/mnt/git/branch/remotes"); for(; remotes != nil; remotes = tl remotes) { remote := hd remotes; - rbranches := listdir("/n/git/branch/remotes/" + remote); + rbranches := listdir("/mnt/git/branch/remotes/" + remote); for(; rbranches != nil; rbranches = tl rbranches) result += " remotes/" + remote + "/" + hd rbranches + "\n"; } @@ -441,7 +441,7 @@ gitbranch(): string gittag(): string { - entries := listdir("/n/git/tag"); + entries := listdir("/mnt/git/tag"); if(entries == nil) return "(no tags)"; @@ -462,16 +462,16 @@ gitcat(args: string): string treepath: string; if(gitref == "") { - treepath = "/n/git/HEAD/tree/" + fpath; + treepath = "/mnt/git/HEAD/tree/" + fpath; } else { - hash := strip(readfile("/n/git/branch/heads/" + gitref + "/hash")); + hash := strip(readfile("/mnt/git/branch/heads/" + gitref + "/hash")); if(hash == "") { if(len gitref == 40) hash = gitref; else return "error: cannot find ref: " + gitref; } - treepath = "/n/git/object/" + hash + "/tree/" + fpath; + treepath = "/mnt/git/object/" + hash + "/tree/" + fpath; } content := readfile(treepath); diff --git a/appl/veltro/tools9p.b b/appl/veltro/tools9p.b index f497b0ca1..36d8a2af7 100644 --- a/appl/veltro/tools9p.b +++ b/appl/veltro/tools9p.b @@ -933,6 +933,7 @@ calendarcontrolpath(path: string): int fixedservicecontrolpath(path: string): int { return path == "/mnt/matrix" || prefix(path, "/mnt/matrix/") || + path == "/mnt/git" || prefix(path, "/mnt/git/") || path == "/n/git" || prefix(path, "/n/git/") || path == "/mnt/gpu" || prefix(path, "/mnt/gpu/") || path == "/mnt/web" || prefix(path, "/mnt/web/") || diff --git a/dis/tests/veltro_security_test.dis b/dis/tests/veltro_security_test.dis index cd9f7793fd07c4d05d37c2c59f4645488c3a8f89..60cbbc2b7f98b8fd53ce2651f09975635e3b486a 100644 GIT binary patch literal 39560 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 literal 39546 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 diff --git a/dis/veltro/nsconstruct.dis b/dis/veltro/nsconstruct.dis index 940a98483028a6454c640cfc975d8fb3b9331416..9d5700297faf5e1ec0a0aafcb0b4784b842d80ed 100644 GIT binary patch literal 26586 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 literal 26445 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 I@BB^>0Axh8_5c6? delta 486 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 literal 39250 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 DUe`4O diff --git a/dis/webfs.dis b/dis/webfs.dis index 853dd8f0d21362e5b754d783bfc57807a2a2295c..4ae6496b87edad485777df350038cdf2944d44c6 100644 GIT binary patch delta 20 bcmX?@eK>oAu|B&+dx3s#Udd(){Z2LjT5bo* delta 18 ZcmX?{eK322u|BI=dx3u5W-I+pHULT<2Il|( diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 3e6014954..1c3321873 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -154,7 +154,7 @@ Policy applied after `FORKNS`: - `/dis` → reduced to `lib/`, `veltro/` (+ `sh.dis` if `exec` tool active) - `/dis/veltro/tools/` → only registered tool `.dis` files visible - `/dev` → reduced to `cons`, `null`, `time` -- `/n` → capability-gated foreign imports: `/n/speech` only if in `caps.paths`; `/n/git` only for the fixed `git` tool +- `/n` → capability-gated foreign imports: `/n/speech` only if in `caps.paths` (`/mnt/git` is derived only for the fixed `git` tool — migrated from `/n/git`, INFR-401) - `/tmp` → writable only at `/tmp/veltro/scratch/` ### wallet9p (`appl/veltro/wallet9p.b`) diff --git a/docs/OPERATIONAL-OVERVIEW.md b/docs/OPERATIONAL-OVERVIEW.md index 031073ea8..2f8b75014 100644 --- a/docs/OPERATIONAL-OVERVIEW.md +++ b/docs/OPERATIONAL-OVERVIEW.md @@ -44,7 +44,7 @@ When an agent session starts, `nsconstruct` restricts the namespace: - `/dis` reduced to `lib/`, `veltro/` (+ `sh.dis` if exec is active) - `/dis/veltro/tools/` reduced to only the registered tool `.dis` files - `/dev` reduced to `cons`, `null`, `time` -- `/n` reduced to capability-gated foreign imports (`/n/speech` only if explicitly granted via paths; `/n/git` only for the fixed `git` tool) +- `/n` reduced to capability-gated foreign imports (`/n/speech` only if explicitly granted via paths); `/mnt/git` is derived only for the fixed `git` tool (migrated from `/n/git`, INFR-401) - `/tmp` writable only at `/tmp/veltro/scratch/` The agent cannot see files it wasn't granted. Subagents can only narrow further. diff --git a/docs/architecture-review-veltro-unification.md b/docs/architecture-review-veltro-unification.md index 82e6fea0e..473407b03 100644 --- a/docs/architecture-review-veltro-unification.md +++ b/docs/architecture-review-veltro-unification.md @@ -206,7 +206,7 @@ The pieces already exist: - **Phase 2**: A dedicated `compose` or `create` tool that handles the compile-register lifecycle, with appropriate sandboxing (the new tool's namespace is restricted by the creating agent's capabilities -- you can't escalate privileges by writing code). - **Phase 3**: The AI can introspect available modules, read their interfaces, and generate correct Limbo code that type-checks. The module system provides the contracts; the AI provides the composition. -The security model handles this naturally: a composed tool inherits the creating agent's namespace restrictions. You can't write a tool that accesses `/n/git` if your namespace doesn't include it. Capability attenuation is preserved even through code generation. +The security model handles this naturally: a composed tool inherits the creating agent's namespace restrictions. You can't write a tool that accesses `/mnt/git` if your namespace doesn't include it. Capability attenuation is preserved even through code generation. ## Design Note: The Semantic Shim as Temporary Adapter diff --git a/lib/veltro/meta.txt b/lib/veltro/meta.txt index 3e3279b66..d801d61cc 100644 --- a/lib/veltro/meta.txt +++ b/lib/veltro/meta.txt @@ -46,7 +46,7 @@ If you cannot fulfill a request — missing tools, unclear intent, or a failed d When creating a task, you construct its entire world: - tools= grants additional capabilities beyond the base set -- paths= grants filesystem visibility (/n/local/Users/pdfinn, /n/git, etc.) +- paths= grants filesystem visibility (/n/local/Users/pdfinn, /mnt/git, etc.) - instructions= provides procedural guidance for the task agent Put authority-bearing attrs (tools=, paths=, model=, agenttype=) before diff --git a/lib/veltro/nsaudit/authorities/git b/lib/veltro/nsaudit/authorities/git index 613cf8eed..b8d959b01 100644 --- a/lib/veltro/nsaudit/authorities/git +++ b/lib/veltro/nsaudit/authorities/git @@ -1,5 +1,5 @@ tool=git - description='Git repository access via git/fs at /n/git' + description='Git repository access via git/fs at /mnt/git' authorities='reads_fs writes_fs' irreversible='writes_fs' - notes='Read goes through /n/git. The WRITE path runs in a worker that retained the UNRESTRICTED namespace (spawned before restriction) — durable host mutation is reachable regardless of caps.paths. High-trust.' + notes='Read goes through /mnt/git. The WRITE path runs in a worker that retained the UNRESTRICTED namespace (spawned before restriction) — durable host mutation is reachable regardless of caps.paths. High-trust.' diff --git a/lib/veltro/tools/git.txt b/lib/veltro/tools/git.txt index b63bcd157..ea88b0497 100644 --- a/lib/veltro/tools/git.txt +++ b/lib/veltro/tools/git.txt @@ -1,7 +1,7 @@ git - Git repository access and management Provides full git repository access. Read operations use the native -git filesystem (git/fs at /n/git). Write operations use a worker +git filesystem (git/fs at /mnt/git). Write operations use a worker thread with direct repository access. Read commands: diff --git a/tests/nsaudit-rules/privileged-fixed-service-control-path/paths b/tests/nsaudit-rules/privileged-fixed-service-control-path/paths index 61171b960..9b7c588d2 100644 --- a/tests/nsaudit-rules/privileged-fixed-service-control-path/paths +++ b/tests/nsaudit-rules/privileged-fixed-service-control-path/paths @@ -20,3 +20,5 @@ /mnt/video /mnt/video/0/ctl /phone +/mnt/git +/mnt/git/ctl diff --git a/tests/veltro_security_test.b b/tests/veltro_security_test.b index 8917d8500..907686398 100644 --- a/tests/veltro_security_test.b +++ b/tests/veltro_security_test.b @@ -827,29 +827,30 @@ mntLlmWorker(result: chan of string) result <-= ""; } -# The git service is a fixed tool-derived /n import. The git tool must see -# /n/git without a raw path grant, while generic tools must not. +# The git service is a fixed tool-derived /mnt application mount (migrated +# from /n/git per docs/NAMESPACE-LAYOUT.md, INFR-401). The git tool must see +# /mnt/git without a raw path grant, while generic tools must not. testRestrictNsGitToolDerived(t: ref T) { - createdn := 0; - (ok, nil) := sys->stat("/n"); + createdmnt := 0; + (ok, nil) := sys->stat("/mnt"); if(ok < 0) { - fd := sys->create("/n", Sys->OREAD, Sys->DMDIR | 8r755); + fd := sys->create("/mnt", Sys->OREAD, Sys->DMDIR | 8r755); if(fd == nil) { - t.skip("cannot create /n test fixture"); + t.skip("cannot create /mnt test fixture"); return; } fd = nil; - createdn = 1; + createdmnt = 1; } createdgit := 0; - (ok, nil) = sys->stat("/n/git"); + (ok, nil) = sys->stat("/mnt/git"); if(ok < 0) { - fd := sys->create("/n/git", Sys->OREAD, Sys->DMDIR | 8r755); + fd := sys->create("/mnt/git", Sys->OREAD, Sys->DMDIR | 8r755); if(fd == nil) { - if(createdn) - sys->remove("/n"); - t.skip("cannot create /n/git test fixture"); + if(createdmnt) + sys->remove("/mnt"); + t.skip("cannot create /mnt/git test fixture"); return; } fd = nil; @@ -865,9 +866,9 @@ testRestrictNsGitToolDerived(t: ref T) } if(createdgit) - sys->remove("/n/git"); - if(createdn) - sys->remove("/n"); + sys->remove("/mnt/git"); + if(createdmnt) + sys->remove("/mnt"); if(r != "") t.error(r); } @@ -886,9 +887,9 @@ gitToolDerivedWorker(result: chan of string) result <-= sys->sprint("restrictns (git tool) failed: %s", err); return; } - (gitok, nil) := sys->stat("/n/git"); + (gitok, nil) := sys->stat("/mnt/git"); if(gitok < 0) { - result <-= "/n/git missing for git tool without raw path grant"; + result <-= "/mnt/git missing for git tool without raw path grant"; return; } result <-= ""; @@ -908,9 +909,9 @@ gitGenericHiddenWorker(result: chan of string) result <-= sys->sprint("restrictns (generic tool) failed: %s", err); return; } - (gitok, nil) := sys->stat("/n/git"); + (gitok, nil) := sys->stat("/mnt/git"); if(gitok >= 0) { - result <-= "/n/git visible to generic tool without git capability"; + result <-= "/mnt/git visible to generic tool without git capability"; return; } result <-= "";