Skip to content

id: design: match attestation + audit v1 #2039

Open

Description

@dezren39

LIST 10 synthesis. Merge the attestation and audit investigations into the v1 design: attestation flows, witness protocol, audit interface, and how results land in central tracking without central live servers.

Program: Drew's 2026-10-28 directive (full text: hatch-personal memory/topics/id-program-2026-10-28.md).
Working pattern: parallel investigations, then the named synthesis issue merges them into a full design. Route guidance: Workhorse by default; Specialist/Summit for synthesis and ramification-heavy work. A result that says "done" is not the endpoint — the orchestrator reviews it and may commission another round. Deliverables: a markdown design/investigation doc (mermaid/SVG diagrams welcome) linked from this issue, plus follow-up issues for anything buildable. Build a proof of concept where the design calls for one, but do NOT build the permanent feature on top of an unreviewed PoC.

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. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Parent epic: #2056 — ID platform expansion (2026-10-28 directive).

  4. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Input ready: #2038 (match audit investigation) is delivered — PR #2252, doc doc/2026-10-29T10-54-33Z_investigation_match_audit_netcode_replay/.

    For this synthesis when its inputs complete: the audit side contributes the layered verdict model (L1 integrity / L2 replay / L3 plausibility), the observed-metadata list (incl. the witness-countersigned latency/path/IP treatment — the point where #2037's witness role and #2038's audit meet), and four proposed buildable slices in doc §6, determinism proof first.

    This synthesis stays gated: sibling investigation #2037 (match-result attestation) is still open, so #2039 is not ready to start. No new issues were pre-filed from #2038 — the slices are proposed in the doc for this synthesis to adopt or cut.

    — queue worker (repo-worker-code), Lane D, queue task 3351

  5. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Correction to my note above: sibling investigation #2037's triage (queue task 3350) is in fact complete — its investigation is posted on #2037 and its PoC follow-on was routed separately. So #2038 (PR #2252, currently parked on CI) is the last remaining input to this synthesis: once PR #2252 merges and task 3351 completes, both named inputs to #2039 are delivered and the gate lifts (subject to the orchestrator's review round on the two investigations).

    — queue worker (repo-worker-code), Lane D, queue task 3351

  6. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — task 5730 design triage record (lane A shift, 2026-11-01). LIST 10 synthesis: merges investigation #2037 (match-result attestation, CLOSED; doc merged via PR #2805, doc/2026-10-30T19-20-40Z_investigation_match_result_attestation/) and #2038 (match audit, CLOSED; doc doc/2026-10-29T10-54-33Z_investigation_match_audit_netcode_replay/, on main) into the v1 design decisions + build order.

    Already proven / landed (verified today)

    Decisions (the synthesis calls, with why)

    1. Objection windows: v1 accepts objections through the outer cap. The id: investigate: match-result attestation — mutual concession, witness adjudication, offline play #2037 honesty limit stands: a self-authored frontier does not prove receipt time, so a short enforceable window needs countersigned sync-receipt evidence — new machinery v1 does not need to count results correctly. Receipt evidence is the named v1.1 upgrade, not a silent gap.
    2. Validity lives at the attestation layer. Fork invalidation does not propagate through the store (resolve.rs, per the id: investigate: match-result attestation — mutual concession, witness adjudication, offline play #2037 round-2 finding), so v1 counting views apply the attestation-layer validity rule from that doc; do not patch the store for this.
    3. Witness policy is a registry view, not a global list. A registry expresses acceptable witnesses/logic as a witness set on its own view — the id: investigate: trust/visibility model — servers accept all signed objects; views count only allowed writers #2030 writer-set pattern. Witness decisions keep the partial evidence variant so non-submission cannot block adjudication.
    4. Float policy: v1 claims pinned-runtime validity, labelled as such. The audit doc (§3.5, §6) is explicit that bit-determinism across architectures may fail on float discipline; L2 verdicts say "valid on the pinned runtime" until the determinism proof (task 5781) measures otherwise. A fixed-point mandate for competitive worlds is decided WITH that evidence, not before.
    5. Stakes profiles are part of the rules hash (audit §6 Q3, adopting the recommendation in that doc): changing the screen must not silently re-judge old matches. Routine L2 spot-check sampling uses checkpoint-hash-committed selection, so neither side picks the segment after seeing the log.
    6. Offline matches: L1/L2-valid, L3 permanently INCONCLUSIVE (no observed metadata exists). Worth: they count in casual/personal tracking views; staked or ranked registry views require a witness/relay-observed match. Pretending otherwise is the failure the audit doc warns against.
    7. Audit is not prevention — every user-facing description of v1 must carry the limit from the audit doc: it raises cheating cost and makes disputes decidable after the fact; it does not stop a sophisticated in-match cheat.

    Build order (all enqueued today)

    Questions for Drew

    None blocking. The two judgment calls a reader might expect to escalate — dispute-remedy policy and witness trust defaults — are already answered inside the ratified investigation docs (remedy policy in the abuse cases of #2037; witness selection/trust in its witness section), so v1 implements those; if Drew wants different remedy terms for staked play, that is a registry-policy choice he can set per registry under decision 3, not a blocker for the build.

  7. 11 remaining items

  8. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  9. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    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 30 (priority/none). 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. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

    • Agent: queue worker (repo-worker-code), lane code-h
    • Session / ID: task 8585
    • Found via: queue claim
    • Task: Triage of issue id: design: match attestation + audit v1 #2039 at current main — outcome: already done, verified fresh this shift (third pass reaching this verdict, after task 5909 on 2026-11-02 and task 7830 on 2026-11-03).
    • Expectation: effort s; done = evidence below.
    • Links: queue task 8585 (repo-health-code-pilot)

    Evidence (fresh, 2026-11-03):

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)source/creatorFiled by the new-issue-creator jobtask/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