Repository navigation
Open
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-inskind/featureNew feature or capability requestNew feature or capability requestpriority/highImportant and time-sensitiveImportant and time-sensitivequeue/claimedQueue worker lifecycle stateQueue worker lifecycle statesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/in-progressQueue worker lifecycle stateQueue worker lifecycle statetask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted testswork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Description
Parent design: #2051 (ID chat v1), with investigation inputs #2049/#2050 and hosted-bridge constraints from #2058.
Implement the durable, IRC-shaped channel core selected by #2051. This issue is gated on review/sign-off of the protocol PoC in #2808; the PoC must not be treated as the permanent feature.
Scope
- Use the signed group ID as the canonical channel identity and the existing group log/policy for channel membership, roles, and history. Names and nicknames are local client aliases, not a global registry.
- Add a versioned
chat.message.v1signed event in the channel group. The event body carries bounded text plus optional{kind, hash, author, hint?}object references; onlyblobandeventare v1 link kinds. Use the existing signed event/event-store/sync path; do not add a chat ALPN or bridge-assigned ordering. - Use the channel's group history policy for new-member history. Keep world chat behavior intact. Presence and typing are explicitly out of this issue (see id(chat): presence heartbeat protocol over gossip (ephemeral, TTL-based) #2809); attachment multi-provider retrieval remains in id: holder discovery for blob hashes — provider table, gossip announcements, wire the blob gate #2260/id: PoC — multi-provider chunk-range retrieval in the get path (swarm scheduler over iroh-blobs) #2261.
- Authenticate message authors with the existing signing identity in the event, not the transport peer or a server-assigned world participant number. The Iroh EndpointId is a routing/connection identity, not a substitute for the event signature.
Acceptance criteria
- Two independent members can create/join a channel and exchange signed message events; signatures, channel/group binding, replay, duplicate delivery, and out-of-order delivery are tested.
- Messages follow the existing event causal model; concurrent cross-author delivery does not acquire a bridge/arrival-time-defined causal order.
- Text is sanitized and bounded (start with the existing world-chat 2,048-byte and 50-per-10-second limits unless tests establish a justified configuration seam); membership/history policy is enforced on reads and writes.
- A message can carry
blobandeventlinks without embedding a capability. Blob bytes are hash-verified; link retrieval accepts a holder set in its API even if v1 uses one author/hint holder. - World chat remains unchanged; no presence/typing, global channel-name service, Mainline discovery, multi-provider scheduler, or Discord-shaped threads/reactions/guild UX is pulled into this slice.
- No permanent feature is built on the id(chat): PoC — two CLI nodes exchanging channel frames with a blob link #2808 PoC until its review/sign-off is recorded.
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-insLarge: multi-day or open-ended; expect staged check-inskind/featureNew feature or capability requestNew feature or capability requestpriority/highImportant and time-sensitiveImportant and time-sensitivequeue/claimedQueue worker lifecycle stateQueue worker lifecycle statesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/in-progressQueue worker lifecycle stateQueue worker lifecycle statetask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted testswork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Activity
developing-today commentedon Nov 1, 2026
CODE-1537
dezren39 commentedon Nov 1, 2026
🤖 Agent note · filed
dezren39 commentedon Nov 1, 2026
🤖 Agent note · handed off
60 remaining items
dezren39 commentedon Nov 4, 2026
🤖 Agent note · parked — canonical PR still owned by a sibling task
1a180ae5-384f-4e71-8d77-08f7b1652c75queue/5893-3950-chat-v1-remainder, task 5893, "chat v1 core remainder — store wiring, membership/history enforcement, rate admission", 25 files, +845/−9, 1 commit). It is OPEN and unmerged, last updated 2026-11-02T04:21Z,mergeable: UNKNOWN, and no CI checks have run on it —gh pr checks 3965shows onlyCodeRabbit skipping. feat(id): chat.message.v1 message shape + causal projection (#3799) #3941 (first slice) is already merged.cargo test -p idchat tests, and merge on green checks. This task has parked 14 times on the same dependency — if feat(id): chat v1 core remainder — store wiring, membership/history enforcement, rate admission (#3950) #3965 does not move, the right repair is to cancel task 5893's ownership or split id(chat): implement durable IRC-shaped group channels and signed messages #3799's remainder into a fresh fix task, not to park again.dezren39 commentedon Nov 4, 2026
agent-note:v1
event: picked up
task: 7409 (small_fix; repo-health-code-pilot; worker repo-worker-code; lane c8b9355e-319a-4640-8096-7ad19480d151 — OpenChamber scheduled lane)
by: repo-worker-code
Resuming from prior parked state. Freshly verified #3799 OPEN, #3941 MERGED, and canonical remainder PR #3965 OPEN on task 5893 branch. No CI checks are active (CodeRabbit skipping). I will not create competing work.
dezren39 commentedon Nov 4, 2026
agent-note:v1
event: parked
task: 7409 (small_fix; repo-health-code-pilot; worker repo-worker-code; lane c8b9355e-319a-4640-8096-7ad19480d151 — OpenChamber scheduled lane)
by: repo-worker-code
Fresh state: #3799 remains OPEN; #3941 is MERGED; #3965 remains OPEN on sibling task 5893 branch queue/5893-3950-chat-v1-remainder.
gh pr checks 3965reports only CodeRabbit skipping, with no CI checks run. No code changes or competing PR were made.Parked for 30 minutes. Resume after #3965 merges/closes or task 5893 is cancelled and its PR is confirmed orphaned; then revalidate GitHub state.
labels: queue/parked + status/parked; work/assigned retained; queue/claimed + status/in-progress removed.
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off