block / block/buzz

Native git repository is unavailable after a volume-level isolated restore

Open
#4,469 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Summary

A channel-bound NIP-34 repository accepts a signed push and clone in production, but the same authenticated clone returns `repository not found` after an isolated restore even though the repository announcement and object-store pointer are present.

## Reproduction

1. Create a channel-bound NIP-34 repository and push one empty commit with `git-credential-nostr`.
2. Verify two authorized members clone the same SHA and a non-member receives HTTP 403.
3. Quiesce the write path and archive Postgres, Redis, MinIO, and git scratch volumes with checksums.
4. Restore all volumes into an isolated stack using the same community host mapping and storage credentials.
5. Verify relay liveness, community/member counts, the kind 30617 announcement, and the MinIO repository pointer.
6. Attempt an authenticated clone against the isolated relay using a host-bound NIP-98 token.

## Expected

The restored relay advertises and clones the same repository SHA.

## Actual

The clone returns `repository not found`. The restored database contains the kind 30617 announcement, the restored MinIO volume contains the community/owner/repository pointer, and the relay git object-store conformance probe reports success.

## Environment

- buzz: `desktop-v0.5.3 server source`
- database: `Postgres 17`
- cache: `Redis 7`
- objectStore: `MinIO path-style S3`
- gitClient: `Git 2.46.3 with git-credential-nostr`

## Impact

A generic full-stack restore can report healthy while native repository recovery is still incomplete, so self-hosters need a repository-level readback gate before treating a backup as recoverable.

## Workaround

Keep critical repositories on an external forge and add an authenticated clone/readback to restore drills.

## Disclosure check

- Client data: no
- Credentials or private hosts: no
- Reproduction uses a noncritical empty-commit repository

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the isolated restore and authenticated clone described in the issue, then compare the relay's repository lookup with the restored kind 30617 announcement, MinIO pointer, and git object-store conformance probe. Done means the restored relay passes a repository-level readback and clones the same repository SHA for authorized members while preserving the non-member HTTP 403.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, postgresql, redis, rust
Domain
backend, databases, devops, infrastructure
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.