# Catalog Release Procedure This repository releases source tags only. It has no generated artifacts. The module path is `gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3`. ## Version selection Release versions use `v3.YYYYMMDD.N`. `YYYYMMDD` is the actual UTC publication date. Begin at revision `0` for a date and increment `N` for each additional release on that date. Versions are immutable: correct a published catalog with a new dated version rather than moving or recreating a tag. This repository releases independently of other catalog modules, so dates and revisions need not match theirs. ## Validate the source candidate Before creating a semantic version tag, start from a clean, synchronized `main` branch. Confirm that no Go workspace, `replace` directive, or `vendor` tree is active, then run `GOWORK=off go test ./...`, `GOWORK=off go test -race ./...`, `GOWORK=off go vet ./...`, `GOWORK=off go build ./...`, formatting, repository-hygiene, credential, and ordinary module-resolution checks. Confirm the module reports the `/v3` identity before publication. Create an annotated tag only after validation succeeds. Do not create or move an existing tag. Publish the validated source commit through `main`, then push only the selected annotated tag and verify that the remote tag and its peeled commit identify that source commit. Finally, from a temporary module with `GOWORK=off`, no workspace, no replacement, and no vendor tree, resolve the exact published `gitea.maximumdirect.net/eric/promptkit-backend-openrouter/v3@version`. Verify both the resolved module identity and version match the selected tag.