Merge v3 through T102 and remove extensions-revert from the shared bundle names
This commit is contained in:
+11
-15
@@ -42,7 +42,7 @@ It builds the world commands incrementally with the configured Cargo cache.
|
||||
Pass a destination to place the bundle under your shared executor target directory.
|
||||
The script snapshots the current source files, including uncommitted edits.
|
||||
The source archive includes the complete `config/`, `skills/`, and `extensions/` directories.
|
||||
The bundle contains plain source files. `sausage init` creates their repository and its first commit on `main`.
|
||||
The bundle contains plain source files. `sausage init` copies them without a Git repository or first commit.
|
||||
Both bundle builders read `userland/tools.json` for the package and command names.
|
||||
Coreutils, diffutils, procps, and brush each occupy one real binary in `bin/`.
|
||||
Their command names are relative symlinks to those binaries.
|
||||
@@ -203,25 +203,21 @@ and [`models`](../extensions/models/README.md).
|
||||
|
||||
## Change extensions
|
||||
|
||||
The world checkout is `/src/sausage`. The loader follows its **`main`** branch, not the host checkout's `v3` branch.
|
||||
Each extension lives at `extensions/NAME/server.ts` inside that checkout.
|
||||
Commit extension edits to `main` with world git. A saved, uncommitted edit does not reload an extension.
|
||||
Use `--no-gpg-sign` for commits.
|
||||
The platform source is `/src/sausage`. Each extension lives at `extensions/NAME/server.ts`.
|
||||
Save extension edits directly. No Git commit or restart is required.
|
||||
The VFS watcher waits for a short quiet period, then hashes the extension files.
|
||||
Unchanged contents do not reload.
|
||||
|
||||
The loader imports a detached snapshot under `/run/sausage/extensions/COMMIT`.
|
||||
The loader copies the files under `/run/sausage/extensions/HASH`.
|
||||
It validates the entire candidate before it replaces the live registry.
|
||||
A broken candidate leaves the previous good commit active.
|
||||
A broken candidate leaves the previous good set active.
|
||||
An active tool call retains its implementation. The next call uses the new implementation.
|
||||
|
||||
Read `/proc/extensions` through the agent's file tools to inspect `current`, `good`, and `error`.
|
||||
To restore the last good branch ref, ask the agent to execute:
|
||||
|
||||
```sh
|
||||
extensions-revert
|
||||
```
|
||||
|
||||
The command preserves editable files. It changes `refs/heads/main`, which triggers the normal reload.
|
||||
At startup, the loader tries the tip and then the last good commit before it resumes work.
|
||||
Use `undo` to restore earlier files. The normal file watch reloads them.
|
||||
At startup, the loader hashes the current files, including edits made while the host was offline.
|
||||
If they fail, it loads the last good copy from `host/harness.sqlite` and shows the error.
|
||||
The fallback does not change editable files.
|
||||
|
||||
Source: [`extensions`](../extensions/README.md) and [`extensions.ts`](../host/js/extensions.ts).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user