What to build
Repository visibility — public and private — with permission checks consistently applied across web UI, HTTPS Git, and SSH Git.
- Repository creation form (slice 3) gains a visibility toggle.
- Repository settings page allows changing visibility after creation (with confirmation).
PermissionChecker is extended:
- Public repo: anyone (signed in or not) can read; only the owner can push.
- Private repo: only the owner can read or push; everyone else gets 404 (not 403, to avoid leaking existence).
- Web UI lists Repositories the viewer is allowed to see; private repos owned by others are not enumerated.
- Git transport (HTTPS and SSH) returns clean errors when a user attempts an unauthorized action.
- The Issue and PR pages on a private repo are gated by the same check.
Acceptance criteria
Blocked by
What to build
Repository visibility — public and private — with permission checks consistently applied across web UI, HTTPS Git, and SSH Git.
PermissionCheckeris extended:Acceptance criteria
PermissionCheckertable-driven tests cover the matrix(actor: anonymous|stranger|owner) × (visibility: public|private) × (action: read|push).Blocked by