Files
parrhesia/PROGRESS_MARMOT.md

2.8 KiB

PROGRESS_MARMOT (ephemeral)

Marmot-specific implementation checklist for Parrhesia relay interoperability.

Spec source: ~/marmot/README.md + MIP-00..05.

M0 — spec lock + interoperability profile

  • Freeze target profile to MIP-00..03 (mandatory)
  • Keep MIP-04 and MIP-05 behind feature flags (optional)
  • Document that legacy NIP-EE is superseded and no dedicated transition compatibility mode is planned
  • Publish operator-facing compatibility statement in docs

M1 — MIP-00 (credentials + keypackages)

  • Enforce kind 443 required tags and encoding (encoding=base64)
  • Validate mls_protocol_version, mls_ciphersuite, mls_extensions, relays, and i tag shape
  • Add efficient #i query/index path for KeyPackageRef lookup
  • Keep replaceable behavior for kind 10051 relay-list events
  • Add conformance tests for valid/invalid KeyPackage envelopes

M2 — MIP-01 (group construction data expectations)

  • Enforce relay-side routing prerequisites for Marmot groups (#h query path)
  • Keep deterministic ordering for group-event catch-up (created_at + id tie-break)
  • Add guardrails for group metadata traffic volume and filter windows
  • Add tests for #h routing and ordering invariants

M3 — MIP-02 (welcome events)

  • Support wrapped Welcome delivery via NIP-59 (1059) recipient-gated reads
  • Validate relay behavior for unsigned inner Welcome semantics (kind 444 envelope expectations)
  • Ensure durability/ack semantics support Commit-then-Welcome sequencing requirements
  • Add negative tests for malformed wrapped Welcome payloads

M4 — MIP-03 (group events)

  • Enforce kind 445 envelope validation (#h tag presence/shape, base64 content shape)
  • Keep relay MLS-agnostic (no MLS decrypt/inspect in relay hot path)
  • Add configurable retention policy for kind 445 traffic
  • Add tests for high-volume fanout behavior and deterministic query results

M5 — optional MIP-04 (encrypted media)

  • Accept/store MIP-04 metadata-bearing events as regular Nostr events
  • Add policy hooks for media metadata limits and abuse controls
  • Add tests for search/filter interactions with media metadata tags

M6 — optional MIP-05 (push notifications)

  • Accept/store notification coordination events required by enabled profile
  • Add policy/rate-limit controls for push-related event traffic
  • Add abuse and replay protection tests for notification trigger paths

M7 — hardening + operations

  • Add Marmot-focused telemetry breakdowns (ingest/query/fanout, queue pressure)
  • Add query-plan regression checks for #h and #i heavy workloads
  • Add fault-injection scenarios for relay outage/reordering behavior in group flows
  • Add docs for operator limits tuned for Marmot traffic patterns
  • Final mix precommit before merge