Commit graph

109 commits

Author SHA1 Message Date
Claude
d68bb17a39 test: Cycle 20 — memory.copy, 50-actor engine stress, payload integrity, lifecycle fuzz
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
ddc6de4355 test: Cycle 19 — integer overflow wrapping, multi-msg per tick, hot-swap lifecycle
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
89a22f4b5f test: Cycle 18 — div-by-zero trap, extra exports, zero-addr send, operation sequence fuzz
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
d92e2a5499 test: Cycle 17 — truncated WASM, no-import module, 4-thread stress, i32::MIN, dual watcher
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
fd0181291c test: Cycle 16 — spawn+send same tick, 21-actor mixed runtime, alternating alloc
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
4a0cde4b41 test: Cycle 15 — outbox flood (1000 msgs), mixed actor cleanup, i32::MAX alloc, size-varied fuzz
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
d41ceafba9 test: Cycle 14 — multi-engine, error formatting, rapid lifecycle, stop-send race, trait coverage
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
186af06ec2 test: Cycle 13 — SIMD rejection, garbage address, call_indirect, alloc-zero-len, custom sections
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
84911869c8 test: Cycle 12 — stack overflow, bulk memory, self-amplification, double stop, fix flaky MT
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
a6391816aa test: Cycle 11 — message budget fairness, data segments, outbox isolation, combined fuzz
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
c4a40953ca test: Cycle 10 — multi-dest sends, outbox copy safety, large payload, alloc-with-grow
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
1387bce562 test: Cycle 9 — send overflow/boundary, cross-thread relay, property fuzz all send args
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
8ae620ebbb test: Cycle 8 — off-by-one boundary, spawn-stop lifecycle, 3-hop + 10-hop chain, memory.grow exhaust
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
2806227376 test: Cycle 7 — alloc trap recovery, memory.grow, send overflow, exact-fit boundary
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
a171faaad2 test: Cycle 6 — bounded mailbox backpressure + alloc fuzzing property test
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
4bc6f6077d test: Cycle 5 — type mismatch, state persistence, dynamic spawn
- Non-ByteMessage to WASM actor is silently ignored (type mismatch)
- Guest mutable global state persists across handle() calls (counter)
- Native handler can spawn WASM actor dynamically via ctx.spawn()

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
06aadeb911 test: Cycle 4 — start trap, self-send, amplification, overlapping send
- Module with trapping start function correctly rejected by builder
- Self-send feedback loop works (echo to own address, relay on next tick)
- Guest sending 10 messages in one handle: all 10 delivered via outbox
- Overlapping dest_ptr and payload_ptr in send: reads are independent

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
1be0281056 fix: clear outbox when guest handle traps
When a guest calls swactor.send() then traps, the outbox entries from
the incomplete operation survived and leaked into the next successful
handle() call, delivering messages from a failed context. Now clears
the outbox on trap, consistent with the "drop everything from failed
operations" semantics.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
148edb9ac5 test: stale outbox leak on trap — failing test (#[ignore])
When a guest calls swactor.send then traps, the outbox entry survives
and leaks into the next successful handle() call. The outbox should be
cleared when handle traps, since the guest's operation was incomplete.

Also adds: invalid WASM bytes test, zero-length payload send test,
multiple sequential traps test (all passing).

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
e7efab4157 test: complete WASM runner scenario coverage
Adds 15 new tests (26 total) covering the full WASM binary runner:

Scenario tests:
- P0: alloc OOB, empty msg, allocator exhaustion, oversized msg
- P1: nonexistent address, wrong exports, graceful stop, negative
  payload_len, independent stores, watch integration
- P2: WASM-to-WASM relay, multi-worker runtime

Property tests (proptest):
- Arbitrary bytes round-trip through echo (identity property)
- Double always produces exactly 2 copies (algebraic property)

Found and fixed 2 bugs:
- actor.rs: missing bounds check on alloc pointer before copy_from_slice
- worker.rs: StopSignal didn't emit watch death notification

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
a9835f27ad fix: emit watch notification when StopSignal stops an actor
StopSignal interception in tick_all set stopping=true but did not push
to the deaths vector, so phase 5b watch notifications never fired for
externally-stopped actors (via rt.stop_actor()). Now pushes
(addr, ExitReason::Stopped) to deaths, consistent with the
ctx.stop_self() path.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
27f417754b test: watch notification + stop_actor bug — failing test (#[ignore])
Native watcher watching a WASM actor does not receive ActorExited when
the target is stopped via rt.stop_actor(). Root cause: StopSignal
interception in tick_all (worker.rs:734) sets stopping=true but does
not push to the deaths vector, so phase 5b watch notifications never
fire for externally-stopped actors.

Also adds P0-2 through P1-7 test scenarios (all passing):
- empty message, oversized message, allocator exhaustion
- nonexistent address send, wrong export signature/name
- graceful stop, negative payload_len, independent stores
- WASM-to-WASM relay

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
dfc9e6a392 fix: bounds-check alloc pointer before copy_from_slice
Guest alloc could return a pointer where ptr+len exceeds linear memory
size, causing a Rust panic that permanently poisoned the actor. Now
validates ptr+len <= memory.len() before writing, dropping the message
on OOB (consistent with other allocation failure handling).

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
Claude
22f6860d6d test: P0-1 alloc OOB bounds check — failing test (#[ignore])
Guest alloc returning a pointer near the end of linear memory
(ptr + msg_len > memory_size) causes a Rust panic in copy_from_slice,
which poisons the actor permanently instead of dropping the message
and keeping the actor alive.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:07:59 +07:00
b4312676a6 feat: skeleton for in browser swactor engine (#35)
Skeleton up for a web browser swactor engine that is capable of connecting with a cluster.
2026-02-13 13:27:34 +00:00
cd1816e398 feat: distribution simulation tests (#34)
Test cluster behavior in simulation.
2026-02-13 13:18:38 +00:00
a7124cb3d4 distribution realization (#33)
Write tests for docker integration, as docker is how we will initially handle distribution on heterogeneous hardware.
2026-02-13 07:55:12 +00:00
78cbd80803 skeleton of wasm runner actors (#32) 2026-02-13 07:42:44 +00:00
f4f26c9f41 major feature update
Improve the runtime, increase test coverage, add new actor types for monitoring and supervision to an `std` crate.
2026-02-13 07:11:24 +00:00
d817ad952f feat: distributed runtime (#30)
Major feature addition. For full details read `./docs/development_history/DISTRIBUTION.md`
2026-02-12 09:13:50 +00:00
076f1194bf feat: tui, agent interface, stats hook (#29)
Runtime dashboard now features a TUI option and an interface for LLM tool use. Removed some bloat from stats collecting and replaced with a hook function to dump runtime stats into.
2026-02-11 15:23:26 +00:00
2da9198ee9 fix: stats datatypes and refactor channel signature (#28) 2026-02-10 07:35:58 +00:00
ef08d3e7a5 feat: transport protocol (#27)
Address actors via ID, send messages over transport (TCP, QUIC, etc)
2026-02-09 19:05:37 +00:00
bc70d5fd89 feat: data parallel mnist example (#26) 2026-02-09 14:42:25 +00:00
845132ff18 feat: mt benchmark (#25) 2026-02-09 14:02:40 +00:00
d61ea50414 fix: gossip dashboard (#24)
Better, but still imperfect, performance in replay for large simulation sizes.
2026-02-09 09:07:38 +00:00
1a64f421bf feat: runtime dashboard and docs (#23)
Live and replay demo for a runtime dashboard. Added docs with svg files.
2026-02-09 09:04:57 +00:00
09504d0b67 cfuzz (#22) 2026-02-09 07:24:16 +00:00
9beca6c5dc feat: gossip simulation (#21)
Simulate a simple push-pull epidemic broadcast.
2026-02-08 16:18:39 +00:00
b828ff0fae feat: fuzz-harness (#20) 2026-02-07 18:30:22 +00:00
75aefa0c49 refactor: repack external bindings into their own crates (#19) 2026-02-07 17:39:02 +00:00
282fcc3d01 refactor: better tests (#18)
Still unsatisfied, but these are better than before.
2026-02-07 17:29:01 +00:00
Zachery Aaron Shores-Chmielewski
204b4aa289 refactor: clean modules, remove dead files 2026-02-08 00:20:03 +07:00
08a655d88a refactor: graph-optimization (#17)
Use spectral analysis tool to find spurious edges in the code DAG, refactoring to prune.
2026-02-07 16:51:40 +00:00
Zachery Aaron Shores-Chmielewski
6897d71e4b feat: refactor based on spectral spectral_analysis
Asking the agent to refactor to reduce spectral complexity, it worked. Trivial change, but this did reduce code complexity.
2026-02-07 17:36:45 +07:00
Zachery Aaron Shores-Chmielewski
89be164c19 feat: spectral analysis report
Generates a report on the connectivity properties of the code interdependency DAG.
2026-02-07 17:36:07 +07:00
de0f3960f4 feat: docs and README (#13)
Update the docs and readme with all the changes we've made
2026-02-06 17:12:04 +00:00
042ccd0db0 feat: basic wasm (#12)
Unfeatured wasm module. Mostly to test that wasm builds
2026-02-06 16:47:43 +00:00
1234838361 feat: code DAG visualizer (#11)
Visualize the inter-module code dependency DAG
2026-02-06 14:54:56 +00:00
Zachery Aaron Shores-Chmielewski
d3fdf9e550 feat: worker thread api (#6)
Make the worker thread api clearly seperated and ready for test harness
2026-02-06 21:45:19 +07:00