Feature #210: create-repo placeholder #218
No reviewers
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub!218
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/issue-210"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Explicit create-repo placeholder with push docs (Forgejo #210, plan R1 + review normative).
What: same-manifest +
meta/placeholder.jsonsidecar (Create-only/delete-on-transition, Delete-then-Create only — no §14.11 change);?placeholder=trueonPUT /{o}/{r}(flag AS the shape) +POST /api/v1/repostwin viaserver.ExtraRoutes+api.RegisterExposed(both lanes, discovery lists/api/v1/repos); org-membership gate (403 only on proven non-membership, probe errors → 503); eageraccess.jsondefault (none-mode skips creator binding); hint-gated first-push adoption (post-CAS post-response, push budgets unchanged — push-budget test passes unmodified); create-twice idempotency (same principal 200already:true+ unborn re-check; different → 409 plain-text with winner URL);/newform + placeholder view (creator/created, delete, clone/push commands) + SDK submodule (repos.create,createPlaceholder, naming validation); docs (06 §3+PUT row+/new reserved, 07 §9.1.1+shapes+discovery+6 Decisions, 12 /new+view, 01 §5.2+gate decision, EVIDENCE E14 + E13 amend). TTL sweep off by default (expires_atnull, no counter objects).Proof:
go test -racegreen on api/identity/server/cmd; cover ≥95% (api 95.4, identity 97.2, server 95.6);node --test417/417; e2e package green; live two-transport proof (real git HTTP+SSH push → first-try land, empty→healthy, marker adopted at bucket level, delete→204→recreate→201); real-Chromium 24/24 (create → placeholder → push → real, both themes, console clean, shots in review notes). No new Go modules, no new npm deps.Closes #210 (do NOT merge — review requested).
POST /api/v1/repos accepted visibility:private but EnsureRepoAccess always materialized public (07_api.md documented the toggle). AccessBootstrap now takes the request visibility ("" from the PUT-flag path = public default); identity honors "private", unknown falls back to public. Tests: threading (api) + private doc (identity). Coverage gates hold.