Files
sausage/spikes/s1-v8-harness
surma 9e9cde5241 spikes: six v3 spikes (V8 harness, WASI shell, git, builder, http hook, esbuild)
Throwaway prototypes for Sausage v3. Plan and decisions:
~/research/sausage-v3/PLAN.md. Results and evidence: the spike READMEs.
2026-11-06 14:03:20 +00:00
..

S1: V8 harness

This spike runs pi-durable examples 21 and 23 in Rust through deno_core. Rust owns the SQLite file. The portable adapter queues transactions and calls rusqlite through a Rust op. The JavaScript uses Deno's Web API crates, not Node.

The sources adapt the upstream examples at: https://github.com/earendil-works/pi/tree/main/packages/durable/test/examples

Install and bundle:

npm install --prefix /tmp/s1-v8-harness @earendil-works/pi-durable@1.5.0 @earendil-works/pi-ai@1.5.0 @earendil-works/chord@1.5.0 esbuild@0.28.2
NODE_PATH=/tmp/s1-v8-harness/node_modules /tmp/s1-v8-harness/node_modules/.bin/esbuild spikes/s1-v8-harness/21.ts spikes/s1-v8-harness/23.ts spikes/s1-v8-harness/real.ts --bundle --format=esm --platform=browser --outdir=/tmp/s1-v8-harness/bundles
nix develop -c cargo build --manifest-path spikes/s1-v8-harness/Cargo.toml -j 2

Run all three cases with nu spikes/s1-v8-harness/verify.nu. The real call requires PI_PROXY_BASE_URL and PI_PROXY_API_KEY. The examples retain their SQLite files in /tmp/s1-v8-harness/. Example 21 uses a new request ID for each run and preserves it across reopen.

The host loads bundles as ES modules, so import.meta and top-level await work. Deno fetch also requires the net and telemetry extensions. The host uses deno_ast to transpile Deno's internal telemetry TypeScript. The host does not enable telemetry export.

Both restart examples and the real proxy call passed. The report at .board/T1.report.md records the commands, measurements, and remaining limits.