Skip to content

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

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions