1.5 KiB
1.5 KiB
Working on Sausage
Sausage is meant to be read and changed by agents, including its own agent. Keep it that way.
Priorities
- Correct. Every behavior in
PROTOCOL.mdhas a test incli/tests/. - Simple and short. Prefer the obvious code. No abstraction for one caller. No configuration that nobody asked for.
- Readable. A new reader must understand a file without the others. Each module starts with a doc comment that says what it owns.
- Efficient on the paths that run per message.
- Raw. Sausage has no permissions, sandboxing beyond WASI, limits, or authentication. Do not add them to the core. People who want them can build them as actors or as a fork.
Layout
cli/: the host (sausagebinary and library).broker.rsroutes and supervises,fs.rsis the filesystem layer,runtime.rsruns Wasmtime,candidate.rstests new versions,cargo_actor.rsbuilds Rust actors.sdk/:sausage-actor, the SDK for Rust actors. Never published: thecargoactor pointssausage-actor = "0.1"at its local copy.agent/: the agent actor.sausage initembeds and builds it.examples/: small actors. They are not workspace members.PROTOCOL.md: the contract between the host and the actors. Change it in the same commit as the behavior.
Checks
nix develop -c cargo test -p sausage -p sausage-actor
nix develop -c cargo build --release -p agent --target wasm32-wasip2
nix develop -c cargo clippy --workspace
nix run -- init and nix run -- run must keep working without other
setup.