Fix #253: create tag from UI #262
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!262
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-253"
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?
Fixes #253: create a lightweight tag at a given commit from the commit-view UI, server-side via the WAL ref-update path.
What: new
internal/tagspackage +POST /{o}/{r}/api/tags(both lanes, Seam 1) publishing oneEntryKindRefUpdateCAS-create — no new WAL kind. Commit.jsx gains a write-gated Create-tag affordance; SDK gainsrepo.tagsApi.create; create tag → create release now works end to end.Design call (documented in docs/go/14_extensibility.md Decisions): lightweight-only v1 (recommended option (a)/(c)) — annotated (non-empty message) → 422, never a silent downgrade; object-write path under frozen proto rules is the follow-up. P6 = RoleWrite (push-equivalent) + explicit policy EvaluateProtect create-check (pull-merge precedent). Validation: git refname rules (400), sha must resolve (404), existing tag → 409 via publish verify (race-safe). Events ride the existing WAL bridge identically to pushed tags.
Tests:
internal/tags98.4% statements (go test -raceclean); table-driven httptest (201/400/404/409/422/401/403/405); real-git CommitExists tests; end-to-end through a real WAL registry (cmd/walhub: create → sync-visible → 409 → restart-replay from wiped cache); SDK surface tests (node --test); releases/events/policy suites green; gofmt/vet clean.Deviations/notes: no browser drive (per task note — shared daemon blocks loopback); full
node --testshows 7 pre-existing failures from missingnode_modules(solid-js/marked) in this env, unrelated files;make e2e/simnot run (no wal/git-path changes — new package reuses the existing publish funnel);.gitignorere-includesinternal/tags/against blanket ctagstagsignores.New internal/tags package (docs/go/14_extensibility.md Decisions): POST /{o}/{r}/api/tags (+ api-browser twin, Seam 1) publishes one EntryKindRefUpdate CAS-create; no new WAL kind. Lightweight-only v1: non-empty message -> 422 (annotated needs a tag object the frozen proto cannot carry; follow-up). P6 RoleWrite + policy EvaluateProtect (principal, refs/tags/<name>, create); git refname validation (400), sha must resolve (404), existing tag 409 via publish verify. Events ride the existing WAL bridge unchanged. UI: Create-tag affordance on Commit.jsx (write-gated) + SDK repo.tagsApi.create. Also re-includes internal/tags/ against blanket ctags ignores.