Repository navigation
Description
Parent: #2050 (investigation: BitTorrent-style chunk retrieval for graph objects), epic #2056. Follow-up C of the #2050 investigation. Depends on follow-up A (holder discovery + wired blob gate).
Problem
In the #2050 design every downloader becomes a useful partial holder the moment its first chunk group verifies — FsStore persists verified ranges, and bao verification makes a partial holder's ranges exactly as trustworthy as a complete holder's. Nothing in pkgs/id enables, announces, or budgets that re-serving today, and turning it on widens the serving surface: swarm range-serving must be covered by the LIST 8 abuse controls (per-IP / per-ID / per-world MB and message budgets, rate limits) before any public server serves swarm traffic.
Scope
- A node serving a world re-serves the verified ranges it holds for that world's blobs, subject to the blob gate (members of a referencing world only).
- Announce partial holdings through follow-up A's provider table/announcements (held-ranges summary, not just complete/partial boolean).
- Wire serving budgets: per-world and per-peer caps on swarm range-serving (bytes/window), reusing the LIST 8 budget shapes; a node over budget declines new range requests cleanly (requester requeues elsewhere — the id: investigate: BitTorrent-style chunk retrieval for graph objects #2050 flow already tolerates this).
- Eviction policy: LRU under store pressure for fetched blobs; a node configured as a world's public server must not silently evict that world's only-known copy — surface it in config/status instead.
Acceptance criteria
- A third node can complete a blob fetch where the middle node only ever held (and served) a partial range set it had itself just downloaded.
- Budget caps demonstrably stop range-serving when exceeded, and requesters recover by scheduling other holders.
- Tests cover gate behaviour for partial serving (non-member refused, indistinguishable refusal).
Not in scope: global discovery (follow-up D); permanent-feature status for the PoC scheduler (follow-up B's review round decides).
Activity
developing-today commentedon Oct 29, 2026
CODE-1125
dezren39 commentedon Oct 29, 2026
Intake review — fleet monitor, 2026-10-29
dezren39 commentedon Nov 3, 2026
🤖 Agent note · picked-up
pkgs/idstate.dezren39 commentedon Nov 3, 2026
🤖 Agent note · triaged — blocked on dependency issue #2260
status/blocked+queue/blocked+user/escalated. Its task 5806 escalated on 2026-11-01:LocalEvents::publishwritesgroup=None,EventStore::documents()exposes no world binding, andid servehas no authoritative membership source — so the blob gate that partial-holder re-serving must reuse does not exist yet, and the canonical document↔world decision is Drew's (already escalated on issue id: holder discovery for blob hashes — provider table, gossip announcements, wire the blob gate #2260; not re-escalated here).FsStoreonly in its existing store paths (pkgs/id/src/store.rs) with no partial-range announcement or swarm range-serving budget code.status/blockedset; blocker is the dependency above, recorded here per the triage acceptance criteria.developing-today commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
dezren39 commentedon Nov 3, 2026
🤖 Agent note · done
Fresh check (2026-11-03T21:05Z): issue #2260 (follow-up A: holder discovery + wired blob gate) is still OPEN with
status/blocked+user/escalated— the document↔world membership decision it waits on is still Drew's, already escalated on issue #2260 itself (not re-escalated here). No PR implements issue #2262 (the only search hit, PR #2811, is the merged parent investigation #2050's docs). Nothing about the task 7862 verdict has changed, so no new fix task is enqueued: implementation of issue #2262 starts when issue #2260 lands. Labels set toqueue/blocked+status/blockedto match the standing verdict.