mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 00:16:59 +00:00
Round-8 profiling showed the crawl re-querying the same never-had-a-10002 users' outboxes every round they recirculated — ~144k slow kind:10002 drains (p50 17.4s) against a static discovery set, dragging the round to ~18 users/s. 1. ensureRelayLists guards with `relayListDiscoverySwept`: each user's outbox discovery runs once. The discovery relay set is static, so a second sweep of a user still lacking a 10002 cannot find one the first missed. 2. The discovery REQ to the bounded INDEXER set co-fetches [10002, 3]: the outbox lookup already pays the round-trip and an indexer holding a user's 10002 often holds their kind:3, so we harvest the contact list as a cheap byproduct. The wide "every live relay" completeness sweep stays 10002-ONLY — co-fetching kind:3 across thousands of relays downloaded the same big contact lists repeatedly and inflated the fire-and-forget bgScope sweep the finishing drain waits on (measured +260s at hop-3; the indexer-only co-fetch keeps coverage flat at baseline speed). 3. harvestFromStore folds any already-stored kind:3 into the graph at Phase-A time so Phase B never re-drains a list we hold (also speeds re-runs). Verified same-session hop-3: pre-fix 685s / narrowed 690s / wide-co-fetch 945s, coverage 91.74% across all. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MSW59hJtP4Yn8fnRUxc7F5