Recorded from the executed test command on October 30, 2026: node --test deliverables/base-transfer-watch/watch.test.mjs ✔ confirmation depth excludes newer events and later admits them (18.2542ms) ✔ incoming, outgoing and self-transfer are classified; duplicate self logs deliver once (14.85ms) ✔ full uint256 values retain exact six-decimal formatting (13.0047ms) ✔ cursor and queued event survive close/reopen without duplicate scan (19.493ms) ✔ outbox retries after backoff, persists attempts and ends in dead-letter state (20.105ms) ✔ commit failure rolls back BOTH inserted alerts and cursor; retry recovers (17.3258ms) ✔ failed second RPC log request cannot advance the cursor (12.6388ms) ✔ changed persisted block halts before sending a pending alert (15.9191ms) ✔ block change during scan cannot commit alerts (14.1064ms) ✔ wrong chain and a database reopened with another wallet are refused (14.309ms) ✔ malformed token, removed flag, data and block hash are refused (14.2463ms) ✔ conflicting duplicates and unrelated log rows cannot be silently accepted (14.4601ms) ✔ concurrent ticks are refused while an RPC is in flight (16.5991ms) ✔ bounded scans advance through empty blocks without skipping later events (18.8625ms) ✔ a webhook can receive twice after an uncertain response; event ID remains stable (19.9626ms) ✔ real local HTTP exercises JSON-RPC envelopes, webhook 503 retry and idempotency header (213.574ms) ✔ RPC errors, mismatched request IDs and signing methods are refused (4.1693ms) ℹ tests 17 ℹ suites 0 ℹ pass 17 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 560.216 Exit code: 0. Output transcribed from the original execution receipt; this packaging step does not claim an additional test run. See validation.json for the hashes of the exact source and test file and the separate historical read-only RPC compatibility check.