- Spawn ganache CLI as child process on a random dev port; deploy
NotaryRegistry.sol compiled via in-process solc-js (no hardhat).
- Add OZ v5 Ownable initialOwner constructor to NotaryRegistry.sol
(required by OpenZeppelin v5; contract was written pre-v5 and would
not compile otherwise).
- Fix Step tuple ABI in services/notaryChain.ts — the prior shape
(uint8, address, uint256, bytes) diverged from IComboHandler.Step
(uint8, bytes, address, uint256), producing a different function
selector and silently reverting every on-chain call.
- Disable JsonRpcProvider response cache (cacheTimeout=-1) so
back-to-back anchor+finalize calls on fast chains no longer read a
stale getTransactionCount and collide on nonce.
- Gated on RUN_E2E=1 to stay out of the fast unit-test path. 3/3
tests pass: anchor on-chain write, finalize with receipt hash,
graceful mock fallback when envs cleared. Full unit suite: 10/10
(128 tests) still green, tsc --noEmit clean.
Closes gap-analysis v3 §7.9 / §8.5 (chain round-trip coverage).