Compare commits

..

10 commits

Author SHA1 Message Date
Claude
a76237fe57 fix: consolidate tests 2026-02-13 21:08:00 +07:00
Claude
26340d2a17 docs: finalize testing campaign — 419 tests, 92 cycles, 3 bugs
Update history.md with cycles 89-92 and final campaign summary.
Mark state.md as campaign complete.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
8dde458494 test(wasm-actor): cycle 92 — byte count threshold, reuse slot, missing export (419 tests)
Final cycle of the testing campaign. Adds: byte count threshold guest,
actor slot reuse after stop, missing handle export error, silent never-sends
property test, and 1000 empty ticks stability test.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
86b95efd61 test(wasm-actor): cycle 91 — double-byte saturate, 20 MT actors, 100KB OOB (414 tests)
Added 4 tests: double each byte with saturation, 20 echo actors on 2-thread
runtime, 5-page memory spread alloc, 100KB payload dropped for 1-page guest
(verifies graceful OOB handling). No new bugs found.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
2041964200 test(wasm-actor): cycle 90 — mixed payloads, i64 global, stopped-never-responds fuzz (410 tests)
Added 5 tests: mixed payload types, i64 global, all three guest types, stopped
actor never responds property test, exact 33-byte echo. No new bugs found.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
667622dfc8 test(wasm-actor): cycle 89 — running sum, parallel build, alloc degradation (405 tests)
Added 5 tests: running sum across messages, parallel build 10 actors, multiple
memory.fill, 10KB echo, alloc works then returns negative. No new bugs found.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
4407c65ed8 docs: update history with cycles 80-88, 400-test milestone
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
4f134ccc8b test(wasm-actor): cycle 88 — 400 TEST MILESTONE
Added 11 tests: byte swap, runtime configs, trap-3-then-succeed, 10 actors
3 types, various payload sizes, builder consumes self, WAT builder property fuzz,
burst send/tick, 3-level call chain, cross-thread build, FIFO ordering.
No new bugs found.

**400 tests pass milestone** — 3 bugs found and fixed total, 26 property tests,
88 cycles of rigorous testing. Implementation extremely robust.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
1a6ee63d03 test(wasm-actor): cycle 87 — OR mask, 500 actors, bitwise fuzz, last byte mod (389 tests)
Added 6 tests: OR set high nibble, 31-byte message too short, loop to 1000,
500 actors one message each, bitwise identical property test, modify last byte.
No new bugs found.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
Claude
265a0ba7a7 test(wasm-actor): cycle 86 — conditional double, 200 tick longevity, AND mask (383 tests)
Added 4 tests: conditional double or echo, 200 messages across 200 ticks,
three inboxes from same runtime, AND mask low nibble. No new bugs found.

Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
2026-02-13 21:08:00 +07:00
3 changed files with 1085 additions and 11894 deletions

View file

@ -295,10 +295,29 @@
- Cycle 78 (346): fibonacci recursion, 5-actor inbox, block result
- Cycle 79 (350): zeros/ones, double fuzz, 30 mixed actors
## Campaign Summary (ongoing)
- **84 commits** on bin-runner branch (3 bug fixes + 81 test/doc commits)
- **350 tests** (323 scenario + 23 property + 4 compile-time checks)
## Cycles 80-88 — Push to 400
- Cycle 80 (355): length prefix, ping-pong, build+drop, broadcast
- Cycle 81 (360): bitwise NOT, MT stop, i64 extend, tick interleave fuzz
- Cycle 82 (365): max byte, own address, rapid engines, 256 single-bytes
- Cycle 83 (370): 1000-msg stress, typed locals, heterogeneous WAT
- Cycle 84 (374): i32 invert, native spawns WASM handler, factorial, determinism
- Cycle 85 (379): non-aligned payload, 5x grow, ByteMessage clone, budget overflow
- Cycle 86 (383): conditional double, 200-tick longevity, AND mask
- Cycle 87 (389): OR mask, 500 actors, bitwise fuzz, last byte modification
- Cycle 88 (400): **400 TEST MILESTONE** — byte swap, cross-thread build, FIFO
## Cycles 89-92 — Final Push to 419
- Cycle 89 (405): running sum, parallel build 10 actors, alloc degradation
- Cycle 90 (410): mixed payloads, i64 global, stopped-never-responds fuzz
- Cycle 91 (414): double-byte saturate, 20 MT actors, 100KB OOB graceful drop
- Cycle 92 (419): byte count threshold, reuse slot, missing handle export, 1000 empty ticks
## Campaign Summary (final)
- **~98 commits** on bin-runner branch (3 bug fixes + ~95 test/doc commits)
- **419 tests** (387 scenario + 28 property + 4 compile-time checks)
- **92 cycles** completed (research + 91 test cycles)
- **3 bugs found and fixed** in core WASM actor code and runtime
- **2 flaky MT tests fixed** with retry polling
- **~11,500 lines** of test code
- **~13,400 lines** of test code
- Implementation proved extremely robust after initial 3 bug fixes
- No new bugs found after Cycle 3 despite 89 additional test cycles

30
CLAUDE/notes/state.md Normal file
View file

@ -0,0 +1,30 @@
## Current Task
Testing campaign complete. 419 tests, 92 cycles, 3 bugs fixed.
Step: Campaign finished
Attempt: N/A
## Key Files (read these first on resume)
- `crates/wasm-actor/src/actor.rs` — handle pipeline (2 bugs fixed: bounds check, outbox clear)
- `crates/wasm-actor/tests/wasm_actor.rs` — 419 tests, all passing
- `src/worker.rs` — StopSignal death notification (1 bug fixed)
- `crates/wasm-actor/Cargo.toml` — added proptest dev-dep
## Last Action & Result
Committed Cycle 92 (419 tests). Updated history.md with final campaign summary.
## Next Action
Campaign complete. Possible future work: fuel/epoch-based timeout, WASI exploration, integration tests.
## Completed This Session
- [x] Cycles 58-92 complete (35 cycles in two continuation sessions)
- [x] 419 tests total (387 scenario + 28 property + 4 compile-time)
- [x] 0 new bugs found after Cycle 3
- [x] History updated with final campaign summary
## Bugs Found
- **Bug #1 (fixed)**: `actor.rs:44-46` — missing bounds check before `copy_from_slice`. Guest alloc returning OOB pointer caused Rust panic → permanent actor poisoning.
- **Bug #2 (fixed)**: `worker.rs:734` — StopSignal didn't push to `deaths` vec. Watch notifications never fired for `rt.stop_actor()`.
- **Bug #3 (fixed)**: `actor.rs:52-53` — outbox not cleared on handle trap. Stale sends from incomplete operations leaked into next successful handle call.
## Open Questions / Blockers
- (none)

File diff suppressed because it is too large Load diff