Conversation
The wait_for_evm_trigger_streams_to_finalize() function called finalized() which required hypercore feeds to be Connected. This ran during update_services() before the test client was created, so the hypercore feed had no peer to connect to and the check could never pass — causing a 30s timeout panic. Split finalized() into chains_finalized() and hypercore_finalized() so the EVM stream wait only checks chain readiness. Hypercore readiness is already checked separately later via wait_for_hypercore_streams_to_finalize(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The sequential per-instance stream readiness checks (30s each × 3 instances) burned through the timeout budget before DHT discovery could complete. Now all instance checks and the mesh readiness check run in parallel with a shared 60s timeout. Also moved feed key verification before the connectivity waits to fail fast on misconfiguration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The hyperswarm DHT only executes announce/lookup once after bootstrapping. If one peer's lookup fires before the other has announced, they never discover each other. Fix by periodically re-issuing announce+lookup via SwarmHandle while no peers are connected, with proper cleanup on both the WAVS server and test client sides. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
this actually passes now more than not (still occasional failures), so will debug/tweak from here for consistency now |
|
@ismellike Very important decision about p2p for WAVS. I don't know much about hyper stack, but Iroh is popular and good successor of IPFS. They also have CRDT append-log support with automerge guys from prime intellect also chosen iroh for their p2p stack - prime iroh |
|
@cyborgshead - I'm having trouble understanding your comment. Our core p2p stack is straight libp2p. We only use hyper stack for the hypercore triggers, which are optional and only relevant for services using that specific feature, i.e. to integrate with hypercore. Suggesting to replace hypercore with something else - on a PR that's about integrating with hypercore specifically, does not make sense to me. Can you please explain? This feature also has nothing to do with IPFS, CRDT, or other low-level primitives that aren't hypercore-specific |
This is a branch for experimental hypercore e2e testing.
Works locally, but CI has been buggy. Maybe fixes here finally pass?