Skip to content

Improving long-window recall: complementary approaches #23

Description

@alltheseas

Problem

Algorithm recall drops from 83% at 7d to 24% at 1yr. Relay retention explains only ~1/4 of this (77% median availability at 1yr). The rest is relay selection and discovery. No single fix closes the gap — but five complementary layers do.

Approach stack

Each layer addresses a different bottleneck. No contradictions between them.

Layer What it solves When it helps 1yr recall Status
Stochastic scoring (Welshman) Spreads queries beyond popular relays Session 1, no state 24% Deployed in Coracle
NIP-66 liveness filtering Stops wasting connections on dead relays Session 1, no state ~24% + efficiency #14
NIP-65 archive marker Discovers relays not in current list Session 1, no state Unmeasured nips#2243
NIP-66 retention-depth Informs relay selection before learning Session 1, no state Unmeasured #21
Thompson Sampling Learns which relays actually deliver Session 2+ 92% #19, benchmarked

Key findings

  • Relay retention is decent — 77% median at 1yr across 277 relays (Relay history problem: 77% availability vs 24% recall at 1yr #21, deno task retention)
  • Historical NIP-65 walk-back is infeasible — kind-10002 is replaceable, old relay lists are gone (bench/probe-historical-nip65.ts)
  • Selection > discovery — Thompson reaches 92% using only current NIP-65 relays, meaning most of the gap is selection quality, not missing relays
  • Archive + retention-depth improve session 1 — the 24% starting point before Thompson learns

Related issues and PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions