Add writable /self alias alongside /public and /data
ci / check (push) Successful in 15s

This commit is contained in:
Sausage Agent
2026-10-22 13:35:13 +00:00
parent f932ab9719
commit 34e2f35272
4 changed files with 17 additions and 7 deletions
+7 -5
View File
@@ -64,6 +64,7 @@ The world folder is the foundation of every instance's filesystem:
| Path | Access | Contents |
| --- | --- | --- |
| `/` | read-write by every actor | the whole world folder |
| `/self` | read-write | alias for the actor's own folder (`public/`, `data/`, `source/`, etc.) |
| `/data` | read-write | alias for the actor's state folder |
| `/public` | read-write | alias for the actor's published files |
| `/actor` | read-write by every actor | the `actor/` folder of the world |
@@ -75,8 +76,9 @@ Creating a folder in the world makes it visible to running actors immediately:
New worlds include an empty `/config` for global configuration by convention;
existing worlds can simply create it. Keep secrets out of global configuration.
Candidate instances see the same writable world root. Their `/public` and
`/data` aliases still point to scratch copies, and network access remains off;
Candidate instances see the same writable world root. Their `/self` alias
points to the scratch actor folder; `/public` and `/data` still point to its
corresponding children, and network access remains off;
absolute world paths are not isolated from the live world.
`/actor/<id>/` holds everything about an actor: `actor.wasm`, `actor.json`
@@ -146,9 +148,9 @@ the request: the request's `type` in past tense (`spawned`, `upgraded`,
**Headless.** `sausage run --headless [dir]` (or `sausage --headless`, or `SAUSAGE_HEADLESS=1`) turns the console input off: the host does not read stdin, so end of input (`/dev/null`) does not stop the world. `nix run .#loop -- --headless <world>` passes it through the loop. It runs until SIGTERM or SIGINT (stops every actor, exit code 0) or a broker `exit` request (exit code 75, as above). Without the flag, EOF on stdin or `/quit` ends the host.
Paths are absolute world paths, or the sender's `/public/...` or `/data/...`
aliases. Native senders (such as the console) can also supply absolute host
paths; apart from the three existing aliases (`/actor`, `/public`, `/data`),
Paths are absolute world paths, or the sender's `/self/...`, `/public/...` or
`/data/...` aliases. Native senders (such as the console) can also supply
absolute host paths; apart from `/actor` and these aliases,
these retain their host meaning.
**Taps.** After `tap`, the sender gets a copy of every message that the