Commit Graph
54 Commits
Author SHA1 Message Date
surma dd79b573f1 Print sandbox test skips and update the multicall shutdown helper
Keep the full test suite selected without new fixture derivations.

Assisted-by: SurmAgent:unknown [read] [edit] [bash]
2026-11-12 11:22:09 +00:00
surma 93968ac6db Merge branch 'v3' into v3-t93
# Conflicts:
#	docs/RUNNING.md
2026-11-12 11:16:25 +00:00
surma 21e154381b Remove box (Surma's private container service client) and spikes; drop personal hosts and paths from docs and code 2026-11-12 11:11:25 +00:00
surma 6a22f374e2 Supply test tools and verify PATH through the native init supervisor
Assisted-by: SurmAgent:unknown [read] [edit] [bash]
2026-11-12 10:59:32 +00:00
surma f6149aa0e0 Preserve roster seeding and extend packaged multicall checks
Verify bare unit commands through init PATH lookup and cargo run.

Assisted-by: SurmAgent:unknown [read] [edit] [bash]
2026-11-12 10:25:46 +00:00
surma d44f1d9677 Build separate native and WASI pipelines with shared multicall names
Checkpoint before integration and package validation.

Assisted-by: SurmAgent:unknown [read] [edit] [bash]
2026-11-12 09:36:27 +00:00
surma 3628159cd0 Merge v3 with the generic web server in the shared workspace 2026-11-12 00:36:50 +00:00
surma 6576005014 Verify streamed replay and release disconnected web clients 2026-11-12 00:33:00 +00:00
surma 6fbb74d46a test: use packaged fixtures without host Git history 2026-11-11 23:40:12 +00:00
surma 586bae953d build: unify production crates and vendor the patched shell
Assisted-by: SurmAgent:OpenAI
2026-11-11 22:04:16 +00:00
surma f5e1d7aed5 flake: wrap the host in a separate symlinkJoin, so crane's toolchain reference removal keeps cargo on the wrapper PATH 2026-11-11 21:38:03 +00:00
surma d72e40356c Seed a minimal WASI web chat and move host approvals to port 8090 2026-11-11 11:42:08 +00:00
surma e6c13f2518 Provide independent source tree references for the sandbox P1 checks 2026-11-08 04:34:45 +00:00
surma 05c21f0eaf Merge T77 and match the complete development source snapshot 2026-11-08 02:59:38 +00:00
surma d797857c94 Run the selected test commands through a custom Crane check phase 2026-11-08 02:52:37 +00:00
surma 67b99c50a9 Retain compile-time fixtures for the shared integration executable 2026-11-08 02:33:15 +00:00
surma e939978e48 Select sandbox-safe modules from the shared host test binary 2026-11-08 02:32:55 +00:00
surma b38da84b31 Retain the vendored Deno sources that runtime initialization loads 2026-11-08 01:58:49 +00:00
surma 3c8502f3af Restore the P1 sandbox check after the shell stream fix 2026-11-08 01:08:30 +00:00
surma c8ff644870 Temporarily skip the looping P1 test per T17 Note 3 2026-11-08 00:22:01 +00:00
surma 78dbe78bb1 Preserve the full upstream snapshot with symlink-aware world copies 2026-11-07 21:22:24 +00:00
surma 84266611ba Include agent definitions and skills in the development bundle 2026-11-07 20:56:17 +00:00
surma 092eb4772e Point sandbox integration tests at the packaged bundle cache 2026-11-07 19:58:33 +00:00
surma 983fd0a234 Exclude the browser fixture from the initial snapshot index 2026-11-07 16:23:42 +00:00
surma 1d06547936 Omit the dangling browser fixture from the world source snapshot 2026-11-07 16:23:08 +00:00
surma 4ac1024e1c Preserve upstream source symlinks in the packaged snapshot 2026-11-07 16:03:34 +00:00
surma 5cba2d36aa Merge v3 and package the builder closure and complete userland 2026-11-07 15:02:25 +00:00
surma c96e59417a builder: add native Cargo service and world CLI 2026-11-07 11:59:28 +00:00
surma f74b16dea9 builder: add runtime tools and preserve the host Cargo configuration 2026-11-07 10:36:25 +00:00
surma 94f8d6d30c Preserve the configured kache wrapper in the development shell 2026-11-07 10:35:26 +00:00
surma ff542f4946 Keep world copies writable and include embedded host assets 2026-11-07 06:54:40 +00:00
surma 2d38101870 Give sandbox checks a writable compilation cache 2026-11-07 02:38:33 +00:00
surma a2bc0545a4 Match the V8 archive to deno_core's simdutf feature 2026-11-07 00:01:03 +00:00
surma e7be031238 Package the complete v3 bundle and retain WITX sources 2026-11-06 22:21:03 +00:00
surma f2df0ce362 Prepare v3 Nix packaging and OpenSSL build inputs 2026-11-06 19:51:44 +00:00
SAU-134 implementer 8c46d9b9d0 host: add supervisor-gated clean core.restart RPC
Return success before scheduling the existing shutdown path, coalesce pending
requests, and mark #loop invocations with SAUSAGE_LOOP=1. Keep core.exit
compatibility and document explicit per-call approval for all agents.

Card: SAU-134
2026-10-26 09:16:10 +00:00
surma b536beb069 YAML configuration, init without a wizard, and openai-chat-completions
ci / check (push) Successful in 15m52s
- /config/agent.yaml and /config/boot.yaml replace the JSON files, read
  with serde_yaml_ng (also in the agent, inside WASM).
- sausage init asks nothing and reads no SAUSAGE_* variables. It writes
  commented templates with an example for each API, and prints the path
  to edit. Until the agent is configured, agent.chat names the missing
  field. allow_no_token: true permits a local model without a key.
- The agent speaks openai-chat-completions, the format of OpenRouter,
  Ollama, and most providers. base_url follows each SDK: with /v1 for
  the OpenAI shapes, without it for Anthropic.
- Checked against the proxy with glm-5.3-flash: the agent wrote, built,
  and activated a counter plugin in 55 s.
2026-10-23 11:27:48 +01:00
surma ab1adbd5e3 flake: link host code with mold on Linux; DECISIONS: mold, and no LTO
mold applies to the host target only, in the dev shell, the crane builds,
and the packaged binary (proc macros and build scripts of plugins). A
rebuild of the host test binary after a change takes 0.9 s (15 s with
GNU ld). Measured LTO: no gain worth 4 more minutes per release build.
2026-10-23 10:20:39 +01:00
surma c926f3bc72 tests: remove the singleton stress test; #[ignore] means disabled again
128 fast activate/revert cycles are not a realistic load. restarts_service
covers the restart of a service after an upgrade. nix flake check runs
the normal tests only.
2026-10-23 08:31:48 +01:00
surma 93f092e02b cargo.build: a persistent build cache shared by all worlds
- The cargo target folder is <cache>/cargo-target, next to Wasmtime's
  cache, which moves to <cache>/wasmtime: Wasmtime's cleanup worker
  deletes unknown entries in its folder, also Cargo's artifacts.
- Builds use the SDK at <cache>/sdk/<content hash>/, so cargo reuses
  the compiled SDK in every world. /plugins/cargo/sdk/ stays for agents.
- Tests run in the release profile and share compiled crates with the
  release build.
- The cargo and cli tests use a persistent cache in CARGO_TARGET_TMPDIR:
  warm, the cargo suite takes 11 s (was 235 s) and the cli suite 6 s
  (was 149 s).
- nix flake check runs ignored stress tests. AGENTS.md: rules for fast
  tests.
2026-10-23 08:05:15 +01:00
surma d7b78ed0fd core: review fixes, init builds the agent, console without a terminal
Activation path (review T6R): a broken plugin or a stray file in
/plugins blocks no activation; candidates replace their own entries;
discovery has a 10 s deadline and its process is stopped after the
answer; an unchanged hash keeps plugin.prev.wasm; activations run in
their own task; the watcher is not recursive; no duplicate services;
rpc.retired waits for live processes of its version; reads and hashes
on blocking threads.

Guest I/O and per-call paths: a stdin write error is EOF, stdout and
stderr are drained before the status; stderr is lossy UTF-8 and goes
to the journal from its own reader; compiled components are freed;
shutdown starts no new processes; lock queues drop stopping processes;
compile before the admission gate; CommandPre per component;
core.unlock in order; null errors are successes; the journal thread
survives SQLite errors.

sausage init builds the agent with cargo.build; sausage without a
command creates ./world. The console reads plain lines without a
terminal. PROTOCOL.md and DECISIONS.md describe the decided rules. The
flake tests the whole workspace and checks the packaged cargo.build.
2026-10-23 02:25:03 +01:00
surma a536d873e6 cargo: compile C for wasm32-wasip2 with a WASI clang
ci / check (push) Successful in 18s
The Nix package, the dev shell, and the test check set CC_wasm32_wasip2
and AR_wasm32_wasip2 to the clang of pkgsCross.wasi32 (wasi-libc), so
build scripts with the cc crate work, for example rusqlite with bundled
SQLite. The runtime-toolchain check links C into a probe with the
packaged host and an empty PATH.
2026-10-22 20:16:38 +01:00
Sausage Agent 6923ca3e60 preserve the packaged runtime Rust toolchain
ci / check (push) Successful in 6s
2026-10-17 16:36:08 +00:00
Sausage Agent c504532513 drive packaged host runtime check over pipes
ci / check (push) Failing after 1m16s
2026-10-17 16:33:31 +00:00
Sausage Agent eb35a79698 trace the packaged host runtime check
ci / check (push) Failing after 1m47s
2026-10-17 16:29:02 +00:00
Sausage Agent bfcd71e2f4 test packaged host cargo runtime with an empty PATH
ci / check (push) Failing after 1m33s
2026-10-17 16:25:14 +00:00
Sausage Agent f008d0cc60 nix: lock crane; don't store the test run's target folder
ci / check (push) Successful in 39s
2026-10-17 08:02:08 +00:00
Sausage Agent 81daddfd70 nix: build with crane, dependencies cached separately
ci / check (push) Successful in 10m50s
buildDepsOnly builds the dependencies of the host and the tests once
(keyed only on Cargo.toml/Cargo.lock); packages.default and checks.tests
reuse them, so a change to our crates no longer recompiles every crate.
checks.package builds the binary the host loop runs.
2026-10-17 07:49:54 +00:00
Sausage agent d6d3c9a2f2 Bare sausage creates ./world if needed and runs it (default app)
ci / check (push) Successful in 5s
- cli: the subcommand is optional; without one, sausage runs ./world and
  runs init first when ./world is not a world yet (test: cli/tests/cli.rs).
  So `nix run git+https://gitea.surma.technology/surma/sausage` works.
- flake: .#loop without a folder runs bare sausage.
- README: mention the bare command and the bare loop.
2026-10-16 21:09:06 +00:00
Sausage Agent d0876626df Public repo: .#loop fetches over public HTTPS, README for outsiders
ci / check (push) Successful in 8s
- flake.nix: .#loop runs git+https://gitea.surma.technology/surma/sausage
  (SAUSAGE_FLAKE overrides it); drop loop-internal / --internal (LAN SSH).
- README: clone step, LLM token requirement, loop URL and SAUSAGE_FLAKE.
- ci.yml: comment without internal host name.
2026-10-16 20:40:26 +00:00