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: