Skip to content

Kind 9001 (NIP-29 remove-user): 5,276 events, 100% invalid — non-standard tag structure #69

Description

@alltheseas

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    failure-pinpointedExact AJV error paths, keywords, and sample values documentedverified-nipNIP specification verified against the actual NIP documentverified-schemaSchemata schema verified as correct for this kind

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions