Repository navigation
docs: add NIP parity audit for the rewrite - #872
Conversation
Adds docs/rewrite/nip-parity.md and .changeset/wise-berries-nail.md.
🦋 Changeset detectedLatest commit: dc5b32a The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
[Low impact] Documentation audit of protocol compliance. Safe to merge without changing runtime behavior, with three non-blocking corrections recommended before Phase 2 uses the audit. Findings
|
- NIP-09: DeleteEventStrategy collects only e tags; a-tag deletion is absent (row 09, new delta section, new Phase 2 item 12) - NIP-28: kind 41 (channel metadata) is replaceable and routed to ReplaceableEventStrategy; 40 and 42-49 use DefaultEventStrategy - NIP-11: max_filters, max_filter_values and search_supported do have tests; the untested set is min_prefix, supported_nip_extensions, supported_mips, max_event_tags Addresses Greptile's three P2 threads on #872. Oracle passes.
What this is
Phase 0 of the Rust rewrite: the protocol-currency audit for
cameri/nostream#861, parent
cameri/nostream#860.
docs/rewrite/nip-parity.mddiffs the Nostr NIP registry as of 2026-10-15(
nostr-protocol/nips@a79e21d9, the last commit before that date) against whatthis relay implements at the capture commit
242a3001plus the 24 commits absorbedthrough
041fe34e(3.5.1), and records a rewrite disposition for every one of the99 NIP documents in the registry at that revision.
What is in it
NIP | Status | Summary | Advertised | In nostream | Delta | Disposition— in registry order, with the registry's own status word andunrecommendedflag, membership insupportedNipsat041fe34e(25 ids), what this relay does today, whether the registry text and the relay's behaviour differ, and one ofmust-have/opportunistic/out-of-scope.src/code path affected: NIP-01 (prefix vs exact filter values), NIP-11 (six fields the registry does not define — twolimitationkeys it removed,max_filtersandmin_prefix, and four keys it has never defined — against the fourteen it does define, all of which this relay emits), NIP-15 and NIP-22 (the numbers were reassigned — this relay advertises the old meanings), NIP-42 and NIP-67 (theEOSEauthhint), NIP-43 (claims moved to NIP-86), NIP-44 (the raised plaintext cap), NIP-62 (soft delete where the NIP asks for deletion), NIP-78 (no AUTH guard on kinds 78/30078). NIP-77 is examined and found to have no relay-visible divergence in the registry text — its wire protocol and advertisement both landed after the capture commit.README.md's NIP list disagreeing withsupportedNipsin both directions.How it was checked
Advertisedcolumn andgit show 041fe34e:package.json, and a citation section for every claimed delta; plus an accounting check that every registry change in the window is named outside the table.decision.mdin the job folder records what was and was not reviewed.changeset status --since origin/mainexits 0 with an empty changeset, and the commit subject is conventional.What it does not do
No source, test, schema or configuration change. No issue is filed — #861 says the dispositions become issues in Phase 2, and this document is what Phase 2 works from. No NIP is implemented and no part of the rewrite's architecture is decided.
One integration note for #860
The rewrite's integration branch,
rewrite/main, is cut from the capture commit242a3001. This document merges tomainafter that cut, so it will not be onrewrite/mainunless the cut moves or the file is carried across. Its baseline is the capture commit plus the 24 commits through041fe34e, so it is written for the branch as it will be when the cut is refreshed — and itstest/citations are pinned to041fe34e, which is not what the cut carries today.