Skip to content

id: design: writer-set + view-projection spec for pkgs/id — representation, set-change semantics, discovery query (from #2030) #2238

Closed

Description

@dezren39

From the #2030 investigation (trust/visibility model)

Investigation #2030 (queue task 3346, result posted on that issue 2026-10-29) verified that pkgs/id ingest is validity-only (src/event_store/ingest.rs: signature/encoding/chain refusals only; "the store keeps it either way" — src/event_store/claims.rs) and specified the missing layer: per-view writer sets. This issue is the design spec for that buildable piece. It is a spec, not a build order — no permanent feature is built on the #2030 investigation without a review round (program rule, epic #2056).

Spec to produce (doc in pkgs/id/doc/ per repo convention, linked from this issue)

  1. Writer-set object format — a signed, versioned object owned by the view owner: entries = explicit IDs | one-level group references (via src/groups/) | public sentinel; optional per-topic scoping; view-level exclusion entries (exclude one writer admitted via a group reference).
  2. Set-change semantics — prospective by default; "include history" as an explicit add-time choice; removal stops future counting; rescind as an explicit, visible set-version event; every computed view names (set version, frontier).
  3. View projection — author-indexed projection over the event store so view cost is proportional to writer-set size, not store size; counted vs uncounted strictly separated; one-off "count this claim" exceptions recorded at view level.
  4. Discovery query — subject/topic-first lookup returning counted + uncounted claims, uncounted showing author, signature status, and why-not-counted; author-clustering of results (Sybil-flood readability, id: investigate: trust/visibility model — servers accept all signed objects; views count only allowed writers #2030 abuse case 2).
  5. Storage tiering interface — counted = hot/permanent; uncounted = cold with a published expiry unless pinned/counted; quota values themselves come from id: investigate: comms abuse controls — blocks, rate limits, and per-counterparty budgets #2032 (do not invent separate numbers here).

Acceptance criteria


Program: ID platform expansion, epic #2056. Parent investigation: #2030. Related: #2028 (ID core design), #2031 (first app — did-it tracker), #2032 (abuse controls / budgets).

Activity

  1. added
    priority/highImportant and time-sensitive
    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. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Agent note — picked up (queue task 3395, openchamber scheduled lane)

    Claimed 2026-10-30 ~11:50Z for revalidation. Fresh GitHub check: issue OPEN (priority/high), no PR references it, no live branch. This is a 120m spec-writing task (spec doc to land in pkgs/id/doc/), beyond this ~30m lane — parking untouched (no branch, no worktree, no edits).

  4. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Agent note — parked untouched (needs a full-budget shift)

    • Queue task 3395 re-parked with zero state: no branch, no worktree, no edits. Next lane starts clean.
    • Resume brief: packet revalidated 2026-10-30 ~11:53Z — issue OPEN, PR search empty, no queue/3395 or 2238 branch on the laptop clone, no doc/ content under pkgs/id/ on origin/main. Deliverable is a landed spec doc (five points: writer-set format, set-change semantics, author-indexed view projection, discovery query, storage tiering) plus id: investigate: trust/visibility model — servers accept all signed objects; views count only allowed writers #2030 abuse-case tracing and unsettleable questions routed to id: design: ID core build v1 — app model + capability system, enough to start app examples #2028 — a single design-writing shift, not a short-lane slice.
    • Labels: issue carried queue/queued + status/needs-triage, so this pass sets the parked end-state directly (queue/parked + status/parked + work/assigned, queued/needs-triage removed).
    • Lane note: laptop gh hosts.yml token was stale in this session; notes posted with transient GH_TOKEN from vault key github-cli.hosts-yml.
  5. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    status/parkedDeliberately paused with a recorded resume condition
    on Oct 30, 2026
  6. 75 remaining items

  7. added
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Oct 30, 2026
  8. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

    • Agent: queue worker (repo-worker-code), lane A
    • Session / ID: queue task 3395
    • Found via: queue claim
    • Task: Codex round-13 finding (P2, non-admission reason for discovery hits) FIXED in 882b83d on PR 2739 — AuthorNeverAdmitted restored as discovery-only variant; thread replied + resolved; @codex re-review triggered 23:04Z but not landed within the wait window. Parked on the re-review.
    • Expectation: resume = Codex re-review of 882b83d clean (or findings dispositioned) → merge PR 2739, close issue, complete task
    • Links: PR id: writer-set + view-projection design spec (#2238) #2739 (head 882b83d)
  9. chatgpt-codex-connector commented on Oct 30, 2026

    @chatgpt-codex-connector
  10. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Oct 30, 2026
  11. added a commit that references this issue on Oct 30, 2026
  12. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — done, queue task 3395 (repo-worker-code, openchamber-scheduled-lane, 2026-10-30).

    PR #2739 merged as 898fcdc (now origin/main HEAD; merge state CLEAN; Codex round-13 re-review of 882b83d: no findings). Spec doc landed at doc/2026-10-30T13-15-00Z_design_id_writer_set_view_projection/ (1729 lines), reachable via the pkgs/id/doc symlink. Issue auto-closed. In-flight labels removed.

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)priority/highImportant and time-sensitive

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions