From 1b608180b5a84249321230657a7c1f819616206c Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Sat, 25 Apr 2026 14:02:40 +0100 Subject: [PATCH] NIP-34: optional multi-maintainer support --- 34.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/34.md b/34.md index be7d4455e0..a60d8a7dfd 100644 --- a/34.md +++ b/34.md @@ -37,6 +37,16 @@ The `r` tag annotated with the `"euc"` marker should be the commit ID of the ear Except `d`, all tags are optional. +### Multiple Maintainers + +Clients SHOULD recursively fetch repository announcements with the same `d` tag from pubkeys listed in the `maintainers` tag, starting from a 'selected maintainer'. A pubkey that doesn't mutually list back at every link in the chain SHOULD be treated as 'requested' to prevent reputation-harvesting attacks. + +When merging announcements and state across maintainers, standard addressable event rules apply (greatest created_at, lowest event id as tie-break); except for `relays` and `clone` tags which SHOULD be unioned across all maintainers, as each maintainer provides their own infrastructure. + +When tagging a repository, clients SHOULD include all known co-maintainers repository annoucements so that during ownership transitions, in-flight PRs/Issues likely already tag the new owner. + +If one maintainer is the lead, co-maintainers MAY only list them so the lead can remove co-maintainers unilaterally. + ### Nostr Clone URL format A `nostr://` URL can be used to reference a repository announcement in a way that is compatible with `git clone` when a [git-remote-nostr](https://git-scm.com/docs/gitremote-helpers) helper is installed: