You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-on design ticket from #5674 — its decomposition sketch names this as a separate design, and the parent's acceptance requires these tickets to be filed and linked. Filed in the 2026-11-04 gap pass (WS-F) so the design work exists and can be prioritised on its own merits; implementation timing is a separate decision, possibly months out.
What this design must settle
The envelope, discriminators, and golden vectors for the postcard wire schema — the byte-level contract every adapter shares.
Context from the parent
The parent design fixes the postcard wire-format family and the transport-adapter model that carries ID over non-UDP transports and relays. The parent issue carries the surrounding decisions this ticket must not re-decide; where this ticket's answer would change a parent decision, record that explicitly rather than silently forking it.
Decision record expected
Close this design with a recorded decision (on this issue or in a doc/ record linked from it): the chosen shape, the alternatives rejected and why, and the invariants implementation must hold. If the design splits further, file the splits and link them here rather than growing this issue.
Relations
Parent: #5674. Programme: epic #2056. Filed by WS-F (2026-11-04 ID design gap & expansion pass).
Agent: queue worker (repo-worker-code), lane code-i
Session / ID: task 10211
Found via: queue claim
Task: Triage of issue id: design: postcard wire schema v1 (from #5674) #5808 — complete. Design ticket; ordering and evidence recorded below. No implementation follow-up enqueued (the design itself is the work, and it is gated on the parent).
Triage findings (2026-11-05, verified against current main):
Parent state: issue id: design: Wire format & transport adapters — postcard schema, non-UDP carriers, relays/proxies #5674 is still OPEN and parked/assigned — its surrounding decisions (wire-format family, transport-adapter model) are not yet recorded. This ticket explicitly must not re-decide them, so its decision record comes after (or with) the parent's; that is the ordering blocker, recorded here per the ticket's own terms. The ticket also states implementation timing is a separate decision, possibly months out.
Existing practice the design must ratify (not invent): postcard is already the live wire encoding across pkgs/id — src/protocol.rs (MetaRequest/MetaResponse over QUIC, ALPN /iroh-meta/3), src/meta_client.rs, src/peer_announcement.rs (magic prefix separating authenticated v2 gossip frames from legacy postcard payloads), and src/match_audit.rs (field order/meaning changes require a new format version). The append-only enum-variant rule (postcard uses positional discriminants) is already documented in .opencode/plans/2026-03-21_peer-discovery.md.
Gap the design owns: there is no dedicated wire-schema v1 record and no golden-vector corpus for the meta-protocol envelope — golden vectors exist for chain checkpoints (src/chain.rs) but not for the wire envelope/discriminators this ticket names. The decision record expected by this ticket (envelope, discriminators, golden vectors, rejected alternatives, invariants) is therefore real, unstarted work.
Verified fresh (2026-11-08T05:18:25Z, this triage): issue id: design: postcard wire schema v1 (from #5674) #5808 OPEN, no held / user/owned / do-not-merge / do-not-auto-edit labels. Parent id: design: Wire format & transport adapters — postcard schema, non-UDP carriers, relays/proxies #5674 still OPEN — currently queue/claimed / work/assigned / status/in-progress with its own remainder triage (task 12244) handed off 2026-11-08T04:07Z — and its decision record has NOT landed. At laptop main b7b7f59, doc/ contains no wire-schema v1 record (postcard hits are the peer-discovery and groups/delegation docs, not this schema); the golden-vector gap for the meta-protocol envelope named by task 10211 is unchanged.
Verdict: REAL AND CURRENT, but parent-gated. Issue id: design: postcard wire schema v1 (from #5674) #5808 asks for the postcard wire schema v1 decision record (envelope, discriminators, golden vectors). That record does not exist, and the ticket's own terms forbid re-deciding the parent decisions it depends on.
Verified fresh (2026-11-08, this re-triage): issue id: design: postcard wire schema v1 (from #5674) #5808 OPEN; no held / user/owned / do-not-merge / do-not-auto-edit labels. Laptop primary at origin/main f7679c9: no wire-schema v1 record and no golden-vector corpus for the meta-protocol envelope (the postcard hits on main are the live pkgs/id encoding practice and old plans/spikes, exactly as the task 10211 triage recorded on 2026-11-05). No PR references issue id: design: postcard wire schema v1 (from #5674) #5808.
Verdict. Same as the two triages before it, re-verified fresh at 2026-11-08T09:1xZ: this is a real design ticket whose deliverable does not exist yet, and whose own terms forbid writing it before the parent's decisions land.
Why this task is blocked and not re-enqueued. The acceptance for a re-triage says to convert a real issue into a fix packet — but this task already is the fix-class packet (repo-health:v1:fix:…:issue:5808), and a fresh one claimed today could only rediscover the same gate: the design cannot be written until #5674 records the wire-format family and transport-adapter decisions this ticket must not re-decide. Cycling the triage again is the loop this issue has already been through twice (tasks 10211, 12309). Blocking records the dependency honestly and keeps the real work queued for the moment the parent lands.
Resume condition.#5674's decision record lands (task 12244 reaches a terminal state with the record merged), then write the postcard wire-schema v1 record here: envelope, discriminators, golden vectors, alternatives rejected, and the invariants implementation must hold — ratifying the existing pkgs/id postcard practice rather than inventing a new encoding.
Activity
developing-today commentedon Nov 5, 2026
CODE-1491
dezren39 commentedon Nov 5, 2026
🤖 Agent note · done
Triage findings (2026-11-05, verified against current main):
pkgs/id—src/protocol.rs(MetaRequest/MetaResponse over QUIC, ALPN/iroh-meta/3),src/meta_client.rs,src/peer_announcement.rs(magic prefix separating authenticated v2 gossip frames from legacy postcard payloads), andsrc/match_audit.rs(field order/meaning changes require a new format version). The append-only enum-variant rule (postcard uses positional discriminants) is already documented in.opencode/plans/2026-03-21_peer-discovery.md.src/chain.rs) but not for the wire envelope/discriminators this ticket names. The decision record expected by this ticket (envelope, discriminators, golden vectors, rejected alternatives, invariants) is therefore real, unstarted work.doc/decision record; no code task should be filed from it before that record exists.dezren39 commentedon Nov 8, 2026
🤖 Agent note · triaged — task 12309 (queue repo-health-code-pilot, lane code-y)
queue/claimed/work/assigned/status/in-progresswith its own remainder triage (task 12244) handed off 2026-11-08T04:07Z — and its decision record has NOT landed. At laptop main b7b7f59,doc/contains no wire-schema v1 record (postcard hits are the peer-discovery and groups/delegation docs, not this schema); the golden-vector gap for the meta-protocol envelope named by task 10211 is unchanged.doc/: chosen envelope/discriminator shape, rejected alternatives, invariants, golden-vector corpus for the envelope). This task completes astriaged; issue id: design: postcard wire schema v1 (from #5674) #5808 stays OPEN.developing-today commentedon Nov 8, 2026
🤖 Agent note · triaged — task 12309 (queue repo-health-code-pilot, lane code-z)
postcardhits on main are the live pkgs/id encoding practice and old plans/spikes, exactly as the task 10211 triage recorded on 2026-11-05). No PR references issue id: design: postcard wire schema v1 (from #5674) #5808.blocked_by: [#5674 open]). When issue id: design: Wire format & transport adapters — postcard schema, non-UDP carriers, relays/proxies #5674's decision record lands, issue id: design: postcard wire schema v1 (from #5674) #5808's design pass is the named next action and should be enqueued then.dezren39 commentedon Nov 8, 2026
🤖 Agent note · triaged — real and current, still parent-gated; blocked on #5674 rather than cycled again
repo-worker-code, laneaea12c82-c5af-4e5a-9b66-f8e360f87177)repo-health-code-pilot)Verdict. Same as the two triages before it, re-verified fresh at 2026-11-08T09:1xZ: this is a real design ticket whose deliverable does not exist yet, and whose own terms forbid writing it before the parent's decisions land.
task/triage,app/id,status/triaged.origin/main2b3ca04 there is no wire-schema v1 decision record and no golden-vector corpus for the meta-protocol envelope. Thepostcardhits underdoc/are the 2026-10/2026-11 design and spike material plus the livepkgs/idencoding practice (src/protocol.rs,src/meta_client.rs,src/peer_announcement.rs,src/match_audit.rs) — exactly what the 2026-11-05 triage recorded. No PR references id: design: postcard wire schema v1 (from #5674) #5808 (a--search 5808PR query returns only unrelated id(attestation): compute_state never checks the two players are distinct — players=[A,A] attests Agreed from one key's single genesis + single claim #2863 duplicate-seat work).queue/parked,work/assigned,status/parked) with no decision record landed. Its remainder is in the queue as task 12244, which is AT its attempt cap (3/3) and was handed to the opencode claimant 2026-11-08T06:00Z.Why this task is blocked and not re-enqueued. The acceptance for a re-triage says to convert a real issue into a fix packet — but this task already is the fix-class packet (
repo-health:v1:fix:…:issue:5808), and a fresh one claimed today could only rediscover the same gate: the design cannot be written until #5674 records the wire-format family and transport-adapter decisions this ticket must not re-decide. Cycling the triage again is the loop this issue has already been through twice (tasks 10211, 12309). Blocking records the dependency honestly and keeps the real work queued for the moment the parent lands.Resume condition. #5674's decision record lands (task 12244 reaches a terminal state with the record merged), then write the postcard wire-schema v1 record here: envelope, discriminators, golden vectors, alternatives rejected, and the invariants implementation must hold — ratifying the existing
pkgs/idpostcard practice rather than inventing a new encoding.dependency; nostatus/*/queue/*/work/*label is set — nothing looks in-flight.