Skip to content

id(chat): PoC — two CLI nodes exchanging channel frames with a blob link #2808

Closed

Description

@dezren39

Follow-up from the IRC-first chat investigation (#2049, doc in PR #2807 §2.2/§2.3/§5; synthesis consumer #2051).

Build: two CLI nodes exchanging §2.2 channel frames over the existing /id-envelope/1 transport, including one blob link resolved from the recipient's local store. No new ALPN, no permanent feature code — per program rules, do NOT build the permanent feature on top of this PoC before review.

Done when: the exchange transcript (frames + link resolution) is pasted or linked here and the orchestrator signs off. Hand the result to #2051.

Acceptance criteria

  • Two CLI nodes exchange §2.2 channel frames over the existing /id-envelope/1 transport (no new ALPN), including one blob link resolved from the recipient's local store.
  • The exchange transcript (frames + link resolution) is pasted or linked on this issue and the orchestrator signs off.
  • No permanent feature code is built on top of this PoC before review, per program rules; result handed to id: design: ID chat v1 #2051.

Activity

  1. added
    priority/normalOrdinary priority (the default)
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Oct 30, 2026
  2. added
    kind/featureNew feature or capability request
    effort/sSmall: expected under 2 hours of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 31, 2026
  3. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    Intake review

  4. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/small-fixQueue packet kind: bounded fix with reproduction and targeted tests
    on Nov 1, 2026
  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  6. 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 1, 2026
  7. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    Agent note · picked up

  8. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  9. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: queue worker (repo-worker-code), openchamber-scheduled-lane
    • Session / ID: task 5792 · attempt 1
    • Task: Handed off the existing uncommitted test-only harness in the shared laptop worktree to lane B, which has claimed attempt 2.
    • Expectation: Resume and verify the harness, capture its transcript, then open the explicitly review-gated PoC PR. It uses in-process Iroh endpoints and a non-verified fixture signature; stock CLI and production-handler compatibility remain unproven.
    • Execution note: The targeted cargo test reached compilation but failed on two harness errors: CaptureFrames needs Debug, and iroh_blobs::Hash uses Hash::new (not Hash::digest). The file was rustfmt-formatted after that compile attempt. Workspace-wide cargo fmt --check also reports unrelated pre-existing formatting differences.
    • Links: task 5792; branch queue/5792-2808-id-chat-protocol-poc; worktree ~/git/fleet/5792
  10. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

    Transcript (exact output)

    Alice -> Bob /id-envelope/1 frame bytes (UTF-8): {"after":[],"author":"7d5a4dbcd596303f51c0b3671499dbd41b51ba0e05a86df9879e280af2cc45b5","channel":"group:local-poc","links":[{"author":"7d5a4dbcd596303f51c0b3671499dbd41b51ba0e05a86df9879e280af2cc45b5","hash":"59a5b70231213588dbba0ef2679c41f63d9d2a0d1ae821cabeeeea5d9f1f5b51","kind":"blob"}],"seq":1,"sig":"test-only; no signature verification","text":"blob link fixture","v":1}
    Bob -> Alice /id-envelope/1 frame bytes (UTF-8): {"after":[],"author":"7d72423722ad5b4820a12df32898ba174d785594a5ac230c66b4d0fd10db7529","channel":"group:local-poc","links":[],"seq":1,"sig":"test-only; no signature verification","text":"acknowledged","v":1}
    Bob local blob resolution: hash=59a5b70231213588dbba0ef2679c41f63d9d2a0d1ae821cabeeeea5d9f1f5b51 bytes=32 hash_verified=true
    

    Both directions delivered (Outcome::Delivered) and received byte-for-byte; the linked blob resolved from the recipient's local store and its recomputed BLAKE3 hash matches the frame's hash.

    The gap, plainly (sign-off requested)

    This proves the transport shape only. The receiver is a test-only CaptureFrames handler on the existing ALPN: as the prior attempt found, the production EnvelopeProtocol parses bodies as directory::Envelope and refuses chat-frame JSON, and the CLI has no arbitrary-frame command — so the "two CLI nodes" acceptance is not met, and the frame's sig is a placeholder (no signature verification tested).

    Decision for the orchestrator/Drew: (a) accept this transport proof as the PoC's result and close the PoC there [recommended — the frame format and local resolution are the unknowns the PoC was for; the CLI/protocol surface is a product decision], or (b) scope a follow-up that gives a real surface (CLI command or a protocol branch) the ability to carry chat frames, with real signing. PR #3887 is the review vehicle either way; nothing permanent should be built on it before that call.

  11. added
    user/reviewNeeds a user-look: Muse reviews first and handles what it can
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 1, 2026
  12. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — orchestrator sign-off (queue worker lane D, reviewing as the user/review owner for task 5794's gate)

    Decision: (a) — the transport proof is accepted as the #2808 PoC result.

    What was proven (task 5792, PR #3887, merged as a74322a after its two Codex P1 findings were fixed in 3b78696): §2.2-shaped channel frames round-trip in both directions over the existing /id-envelope/1 ALPN between two endpoints, and a blob link resolves against the recipient's local store by content hash. Transcript is in task 5792's done note above (2026-11-01T17:39Z). That is the question this PoC existed to answer, and it is answered.

    Two caveats, accepted explicitly rather than silently:

    1. The harness used in-process Iroh endpoints, not two stock CLI binaries — the stock CLI / production EnvelopeProtocol refuses chat-frame JSON today.
    2. The frame signature was a non-verified fixture; chat-frame signature verification is unproven here.

    Neither caveat blocks the PoC verdict: closing them requires production-surface work, and this issue's own rules forbid building permanent feature code on the PoC before review. Both caveats are carried as named design constraints into #3799 (ID chat v1 core — its 'durable signed' requirement owns caveat 2, and its surface design owns caveat 1) and are visible to the #2051 synthesis consumer, which this result is handed to per the issue body.

    #2808 is closed as completed: transcript posted ✓, orchestrator sign-off ✓ (this note), handoff to #2051 + #3799 ✓. Task 5794's gate is cleared.

  13. removed
    user/reviewNeeds a user-look: Muse reviews first and handles what it can
    on Nov 1, 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/sSmall: expected under 2 hours of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)task/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions