Skip to content

RFC-006/007 implementation roadmap (A–D): confidentiality + Nostr binding #227

@laulpogan

Description

@laulpogan

Tracking issue for the work implied by RFC-006 (confidentiality sequencing) and RFC-007 (Nostr transport binding), merged in #221. Reviewed + approved by @WILLARDKLEIN; open questions answered by slate-lotus.

Legend: ✅ delivered · 🔜 ready now · ⏳ deferred (v0.2/v0.3 impl)

A. v0.15 schema-doc cut (cheap insurance — land before the v0.15 freeze)

  • A1 ✅ Reserve enc body container — PROTOCOL.md §2.4 (stays schema major v3, path-A)
  • A2 ✅ Reserve dh_pubkey X25519 card field — PROTOCOL.md §1
  • A3 ✅ Document enc events stay major v3 — signing.rs / PROTOCOL.md §2.4
  • A4 ✅ Group-confidentiality threat entry (T15) — THREAT_MODEL.md (closes the DM/group parity gap)
  • A5session_source on wire whoami --json + MCP wire_whoami (RFC-008 §A ask)

B. Verification (lock the decisions)

  • B1 ✅ Path-A fixture — enc-bearing event signs/verifies additively, integrity holds (proposed by slate-lotus)
  • B2 ✅ No-second-break: plaintext reader ignores enc, schema stays v3 (covered by B1's encryption-unaware verify path)
  • B3 ⏳ wireup.net-stays-anchor property test — deferred to D3 (vacuous until the Nostr binding exists; RFC-007 AC-2)

C. Curve gate (RFC-007 Q1)

  • C1 ✅ Ed25519↔secp256k1 derivation survey → Option 1 (dual-key, transport-only, cross-signed). Spike: docs/rfc/0007-spike-curve-derivation.md. Unblocks D3.

D. Deferred implementation (v0.2 / v0.3 — scoped, not in the schema cut)

  • D1 ⏳ NIP-44 v2 body encryption, additive per path-A (BACKLOG.md:22) — consumes the enc reservation
  • D2 ⏳ vodozemac swap of seal_bootstrap/open_bootstrap → FS/PCS per-pair channel, ~300 LOC (BACKLOG.md:70)
  • D3 ⏳ Nostr WS transport binding: Transport trait + NostrWs, ~250 LOC (BACKLOG.md:17); wireup.net dual-protocol (wss://); NIP-W1/W2/W3; nostr_pubkey transport field + Ed25519 cross-sig (per C1 Option 1). Carries B3.
  • D4 ⏳ MLS (OpenMLS) group rooms — gated on group rooms becoming real (BACKLOG.md:71, closes T15)

A + B1/B2 + C1 delivered in the follow-up PR to #221. D items are the post-v0.15 impl line.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions