Summary
All 5,276 kind 9001 events in our dataset are invalid. Kind 9001 is defined by NIP-29 as a "remove-user" moderation action for relay-based groups — not NIP-90 DVM job results (which use kinds 6000–6999).
Evidence
- 5,276 invalid events, 0 valid — 100% error rate
- All unattributed (no client tag or NIP-89 match)
- Top producers: 2 pubkeys account for 88% of events
Violation breakdown
| Error |
Count |
must contain at least 1 valid item(s) on /tags |
5,300 |
must be equal to constant (tag names wrong) |
5,300+ per position |
must match pattern "^[a-f0-9]{64}$" |
5,252 |
Root cause
NIP-29 specifies kind 9001 (remove-user) events should have:
["h", "<group-id>"], ["p", "<pubkey-to-remove>"], ["previous", ...]
Instead, events in the wild use entirely different tag structures:
Pattern 1 (4,631 events — top 2 pubkeys): Presence-type events
{ "kind": 9001, "tags": [["t", "presence"]] }
Pattern 2 (437 events): Social/type events
{ "kind": 9001, "tags": [["p", "<pubkey>"], ["type", "bro"], ["receipt", ""]] }
Neither pattern includes the required h-tag (group ID) or follows the NIP-29 moderation structure. These appear to be apps repurposing kind 9001 for non-standard uses.
Top pubkeys
| Pubkey (prefix) |
Events |
416e9e7c... |
2,417 |
9700648e... |
2,214 |
19c24bf5... |
205 |
1a3941a4... |
156 |
25959d2f... |
73 |
Notes
Correction: An earlier version of this issue incorrectly identified kind 9001 as NIP-90 DVM job results. NIP-90 DVM results use kinds 6000–6999. Kind 9001 is NIP-29 relay-based group moderation.
Dataset
655K events scanned across 52 event kinds from multiple relays. Validated against nostrability/schemata schemas.
Exact Failure Mode
| Error Path |
Keyword |
Message |
Count |
/tags |
contains |
must contain at least 1 valid item(s) |
5,300 |
/tags/0/0 |
const |
must be equal to constant |
5,300 |
/tags/1/0 |
const |
must be equal to constant |
5,280 |
/tags/1/1 |
pattern |
must match pattern hex64 |
5,252 |
Sample failing tags: [["t","presence"]]
Root cause: Events use kind 9001 for presence/social purposes instead of NIP-29 group moderation; completely non-conforming to schema.
Summary
All 5,276 kind 9001 events in our dataset are invalid. Kind 9001 is defined by NIP-29 as a "remove-user" moderation action for relay-based groups — not NIP-90 DVM job results (which use kinds 6000–6999).
Evidence
Violation breakdown
must contain at least 1 valid item(s)on /tagsmust be equal to constant(tag names wrong)must match pattern "^[a-f0-9]{64}$"Root cause
NIP-29 specifies kind 9001 (remove-user) events should have:
Instead, events in the wild use entirely different tag structures:
Pattern 1 (4,631 events — top 2 pubkeys): Presence-type events
{ "kind": 9001, "tags": [["t", "presence"]] }Pattern 2 (437 events): Social/type events
{ "kind": 9001, "tags": [["p", "<pubkey>"], ["type", "bro"], ["receipt", ""]] }Neither pattern includes the required
h-tag (group ID) or follows the NIP-29 moderation structure. These appear to be apps repurposing kind 9001 for non-standard uses.Top pubkeys
416e9e7c...9700648e...19c24bf5...1a3941a4...25959d2f...Notes
Correction: An earlier version of this issue incorrectly identified kind 9001 as NIP-90 DVM job results. NIP-90 DVM results use kinds 6000–6999. Kind 9001 is NIP-29 relay-based group moderation.
Dataset
655K events scanned across 52 event kinds from multiple relays. Validated against nostrability/schemata schemas.
Exact Failure Mode
/tagscontains/tags/0/0const/tags/1/0const/tags/1/1patternSample failing tags:
[["t","presence"]]Root cause: Events use kind 9001 for presence/social purposes instead of NIP-29 group moderation; completely non-conforming to schema.