Skip to content

id: partial-holder re-serving while downloading, under LIST 8 serving budgets #2262

Open

Description

@dezren39

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

  1. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. added
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 29, 2026
  4. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Intake review — fleet monitor, 2026-10-29

  5. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Nov 3, 2026
  6. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked-up

  7. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · triaged — blocked on dependency issue #2260

  8. added
    status/blockedQueue or user escalation state
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 3, 2026
  9. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    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

  10. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 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 to queue/blocked + status/blocked to match the standing verdict.

  11. added
    queue/blockedQueue or user escalation state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workkind/enhancementmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/blockedQueue or user escalation statesource/humanFiled directly by a humanstatus/blockedQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions