Summary
On the hosted relay permissionless.communities.buzz.xyz (NIP-11 reports software: https://github.com/block/buzz, version: 0.2.0), announcing a repo via kind:30617 is accepted and stored, but the git smart-HTTP endpoint never becomes available. GET /git/<owner-hex>/<repo-id>/info/refs?service=git-upload-pack (and git-receive-pack) returns 404 repository not found indefinitely, so the repo can never be pushed to or cloned.
Per current source, announce is the only provisioning path: handle_git_repo_announcement in crates/buzz-relay/src/handlers/side_effects.rs reserves the name in Postgres and seeds the empty-manifest pointer that info_refs requires (crates/buzz-relay/src/api/git/transport.rs — Ok(None) → 404). The git router exposes only info/refs, git-upload-pack, git-receive-pack, so there is no other way to create a repo.
Reproduction (all requests NIP-98/Nostr-authenticated; unauthenticated requests correctly 401)
- Publish kind:30617 with
d=<repo-id> and a clone URL https://permissionless.communities.buzz.xyz/git/<owner-hex>/<repo-id>. Event is accepted ({"accepted":true}) and retrievable.
GET /git/<owner-hex>/<repo-id>/info/refs?service=git-upload-pack with valid signed auth → 404 repository not found, still true 2+ hours later.
- Same-owner re-announce — which per the code comments "ensures the pointer rather than assuming it" — is accepted but the endpoint still 404s. This rules out a one-time race; the seed side effect is not taking effect at all.
- Reproduced with three separate identities/repos on this relay, including the community owner's key.
Why it is silent
ingest.rs treats side effects as best-effort: if let Err(e) = handle_side_effects(...) { warn!(..., "Side effect failed: {e}") } — the announcement is stored even when seeding fails, and the underlying error (object-store put, missing git_repo_names migration, etc.) exists only in relay server logs. Clients cannot distinguish "seeded" from "seed silently failed".
Relay operators: please check server logs for Side effect failed on kind 30617 on this deployment. If the deployed build predates the seeding feature, a redeploy may be all that is needed.
Suggested improvements
- Surface seed failures to the announcing client (reject the 30617, or include a warning in the OK message) instead of storing an announcement for a repo that can never exist.
- Consider a health/status probe for the git store so operators notice storage misconfiguration before users hit 404s.
Summary
On the hosted relay
permissionless.communities.buzz.xyz(NIP-11 reportssoftware: https://github.com/block/buzz,version: 0.2.0), announcing a repo via kind:30617 is accepted and stored, but the git smart-HTTP endpoint never becomes available.GET /git/<owner-hex>/<repo-id>/info/refs?service=git-upload-pack(andgit-receive-pack) returns404 repository not foundindefinitely, so the repo can never be pushed to or cloned.Per current source, announce is the only provisioning path:
handle_git_repo_announcementincrates/buzz-relay/src/handlers/side_effects.rsreserves the name in Postgres and seeds the empty-manifest pointer thatinfo_refsrequires (crates/buzz-relay/src/api/git/transport.rs—Ok(None)→ 404). The git router exposes onlyinfo/refs,git-upload-pack,git-receive-pack, so there is no other way to create a repo.Reproduction (all requests NIP-98/Nostr-authenticated; unauthenticated requests correctly 401)
d=<repo-id>and a clone URLhttps://permissionless.communities.buzz.xyz/git/<owner-hex>/<repo-id>. Event is accepted ({"accepted":true}) and retrievable.GET /git/<owner-hex>/<repo-id>/info/refs?service=git-upload-packwith valid signed auth →404 repository not found, still true 2+ hours later.Why it is silent
ingest.rstreats side effects as best-effort:if let Err(e) = handle_side_effects(...) { warn!(..., "Side effect failed: {e}") }— the announcement is stored even when seeding fails, and the underlying error (object-store put, missinggit_repo_namesmigration, etc.) exists only in relay server logs. Clients cannot distinguish "seeded" from "seed silently failed".Relay operators: please check server logs for
Side effect failedon kind 30617 on this deployment. If the deployed build predates the seeding feature, a redeploy may be all that is needed.Suggested improvements