- grow_memory_and_use_new_page_for_send: memory.grow then send from new page
- twenty_actors_twenty_messages_each: 400 total messages across 20 actors
- module_with_only_send_import_needed: minimal sending module works
- guest_data_segment_used_as_template: data segment content sent as payload
All 232 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- repeated_build_same_bytes_independent: 3 actors from same bytes, stop one, others work
- guest_reads_stale_memory_region: reading uninitialized memory is safe
- prop_any_guest_module_processes_safely: echo/double/silent × random msg count
- three_level_nested_function_calls: inc→double_inc→transform chain (x+2)*3
All 228 tests pass (15 property tests). No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- guest_uses_shift_operations: i32.shl and i32.shr_u bit shifts
- guest_uses_bitwise_and_or: i32.and (0xFF & 0x0F) and i32.or (0xF0 | 0x0F)
- echo_and_double_coexist_same_worker: different guest types on same runtime
- guest_reads_i16_from_payload: i32.load16_u reads little-endian 16-bit value
All 224 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- guest_xor_transform_key: loop-based XOR cipher with 0xAA key
- actor_address_reconstructible_from_bytes: ActorAddress round-trips through raw bytes
- double_guest_watch_fires_once_on_stop: double works + watch notifies exactly once
- byte_message_various_constructors: ByteMessage from string, empty, 1024 zeros
All 220 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- guest_uses_i32_store_load: verifies little-endian i32 store/load
- guest_uses_eqz: i32.eqz instruction for empty/non-empty detection
- silent_guest_processes_1000_messages: silent actor handles 1000 messages, stays alive
- send_before_first_tick_delivers: send immediately after spawn delivers on first tick
All 212 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- alloc_at_page_boundary_works: alloc + msg = exactly 65536, in bounds
- alloc_one_past_page_boundary_drops: alloc + msg = 65537, OOB drops gracefully
- multiple_runtimes_with_wasm_actors: two separate runtimes with WASM actors
- guest_mirrors_full_message: sends full message (addr+payload) as payload
All 204 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- large_4kb_message_round_trips: 4096-byte payload echoes with pattern verification
- guest_reports_payload_length: guest computes and sends back payload length as LE i32
- alloc_returns_odd_alignment: alloc returns 1 (unaligned), host writes correctly
- shared_engine_clone_and_debug: cloned engine Debug output matches
- idle_ticks_dont_affect_wasm_actor: 500 empty ticks, then message still works
All 193 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- guest_start_function_modifies_alloc_region: host overwrites pre-filled 0xFF memory
- engine_clone_is_same_engine: cloned engine produces working actors
- handle_uses_i64_operations: i64 arithmetic with i32.wrap_i64
- two_hundred_actors_from_same_engine: 200 actors all process one message
- Updated history.md with Cycles 27-39
All 170 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- native_handler_spawns_wasm_actor_inline: native handler spawns WASM actor + sends
- handle_uses_many_locals: guest uses 4 local variables for arithmetic
- wasm_actor_survives_1000_ticks: 1000+ empty ticks + 10 messages, no resource leak
- send_to_dead_wasm_actor_silently_dropped: send to stopped actor doesn't panic
All 162 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- mutual_watch_wasm_actors: watcher notified when watched WASM actor stops
- select_instruction_in_handle: wasm select (ternary) based on payload presence
- wasm_to_wasm_to_native_relay: 3-layer echo1→echo2→inbox relay
- prop_any_dest_address_bytes_never_panic: arbitrary 32-byte dest address never panics
All 158 tests pass (11 property tests). No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- same_tick_message_ordering_preserved: 20 numbered messages arrive in FIFO order
- send_payload_ptr_plus_len_overflow_traps: i32::MAX payload_ptr + 1 traps safely
- handle_sends_100_messages_in_one_call: 100 sends in single handle via loop
- br_table_dispatch_in_handle: switch-like dispatch on first payload byte
- Fixed prop_truncated_wasm_never_panics (renamed): test only asserts no-panic, not always-error
All 154 tests pass (10 property tests). No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- handle_with_loop_computes_sum: iterative byte sum via wasm loop/br, u8 overflow wrapping
- send_with_dest_ptr_zero_reads_from_memory_start: dest_ptr=0 is a valid location
- stop_actor_with_pending_messages_no_crash: stop before tick with 10 queued messages
- prop_truncated_wat_always_produces_error: any truncated WASM bytes always fail to build
All 150 tests pass (10 property tests). No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- wasmtime_error_converts_to_wasm_actor_error: From conversion produces Wasmtime variant
- three_wasm_actors_on_two_threads: 3 WASM echo actors on 2-thread runtime all deliver
- handle_with_if_else_branching: guest uses if/else to send different responses by length
All 146 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- guest_overwrites_payload_after_send_outbox_has_copy: outbox snapshots memory at send time
- alloc_grows_memory_returns_pointer_in_new_page: memory.grow per alloc, 5 messages through
- trap_after_successful_send_clears_outbox: trap discards all outbox entries including valid ones
- send_payload_at_memory_offset_zero: offset 0 is a valid payload location
All 143 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- prop_random_payload_sizes_never_panic: random 0-8KB payloads never crash host
- multi_page_data_segments_persist: data segments initialized across 3 memory pages
- conditional_send_fan_out_based_on_payload: command byte controls 0/1/2x sends
- guest_with_advancing_allocator_handles_multiple_messages: proper bump alloc, 10 msgs in one tick
All 139 tests pass (9 property tests). No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- send_import_zero_length_payload_delivers_empty: payload_len=0 delivers empty msg
- actors_from_separate_engines_coexist: two engines on same runtime work independently
- rapid_spawn_send_stop_50_rounds: 50 sequential spawn-send-stop cycles all deliver
- start_function_that_succeeds_allows_normal_operation: start initializes global, handle uses it
All 135 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- reference_types_module_rejected: externref table rejected by sandboxed engine
- trapping_actor_does_not_affect_sibling: trap in actor 1 doesn't corrupt actor 2
- alloc_returns_negative_for_nonzero_drops_message: negative ptr gracefully drops
- global_counter_accumulates_across_messages: mutable global state persists across 5 calls
All 131 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- mixed_outbox_partial_delivery: guest sends to valid + garbage addresses in same handle,
verifies only valid sends deliver and actor survives
- drop_oldest_mailbox_with_wasm_actor: DropOldest policy keeps newest 3 of 5 messages
- echo_to_full_inbox_silently_drops: bounded inbox capacity silently drops excess echoes
All 119 tests pass. No new bugs found.
Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski
- 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