62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
# 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
|