docs: add release/version process SOP (#68) #82

Closed
jcwalker3 wants to merge 1 commits from docs/issue-68-release-version-sop into master
Owner

Implements #68.

Adds docs/release-version-sop.md — the operator SOP for cutting a versioned release — and links it from the README docs section.

What's covered

  • Branch flow: repo is master-based (until explicitly changed)
  • Where the version lives: annotated git tags only (v1.0.0, v1.0.1); no VERSION/CHANGELOG file today; release notes = annotated-tag message. Notes that SUPPORTED_VERSION in gitea_config.py is config-schema, not app version
  • SemVer bump decision: patch / minor / major with concrete triggers
  • Version-bump PR prep: issue-first, claim, isolated branch, tag-not-in-PR
  • Required checks before release (py_compile, bash -n, pytest, git diff --check, secret sweep)
  • scripts/release-tag policy — documented from the actual script: safe-by-default, SemVer, master-only, clean tree, local==remote, HEAD on remote master, tag-not-exists, runs tests, no push without --push; dry-run → create → push sequence
  • Who may merge/tag + self-review/self-merge restrictions (releases not exempt)
  • status:in-progress handling during release
  • Worktree/branch cleanup after merge
  • What NOT to do: no direct commits to master, no force-push, no self-merge, no tag before merge, no release from dirty worktree, no re-tagging

Kept explicitly distinct from docs/release-workflows.md (future release-mcp orchestrator concept).

Checks

  • py_compile mcp_server.py / manage_labels.py — OK
  • bash -n scripts/clear-provenance — OK
  • git diff --check — clean
  • pytest tests/ -q — 327 passed
  • Secret sweep (no repo scanner exists; staged-diff sweep) — clean

Scope

Documentation only — README.md (+3 lines, docs-links section, distinct from PR #81's Tests-section edit to avoid conflict) and one new doc. No code behavior changed.

🤖 Generated with Claude Code

Implements #68. Adds `docs/release-version-sop.md` — the operator SOP for cutting a versioned release — and links it from the README docs section. ## What's covered - **Branch flow:** repo is `master`-based (until explicitly changed) - **Where the version lives:** annotated git tags only (`v1.0.0`, `v1.0.1`); no `VERSION`/`CHANGELOG` file today; release notes = annotated-tag message. Notes that `SUPPORTED_VERSION` in `gitea_config.py` is config-schema, not app version - **SemVer bump decision:** patch / minor / major with concrete triggers - **Version-bump PR prep:** issue-first, claim, isolated branch, tag-not-in-PR - **Required checks** before release (py_compile, bash -n, pytest, `git diff --check`, secret sweep) - **`scripts/release-tag` policy** — documented from the actual script: safe-by-default, SemVer, master-only, clean tree, local==remote, HEAD on remote master, tag-not-exists, runs tests, no push without `--push`; dry-run → create → push sequence - **Who may merge/tag** + **self-review/self-merge restrictions** (releases not exempt) - **`status:in-progress` handling** during release - **Worktree/branch cleanup** after merge - **What NOT to do:** no direct commits to master, no force-push, no self-merge, no tag before merge, no release from dirty worktree, no re-tagging Kept explicitly distinct from `docs/release-workflows.md` (future `release-mcp` orchestrator concept). ## Checks - `py_compile mcp_server.py` / `manage_labels.py` — OK - `bash -n scripts/clear-provenance` — OK - `git diff --check` — clean - `pytest tests/ -q` — 327 passed - Secret sweep (no repo scanner exists; staged-diff sweep) — clean ## Scope Documentation only — `README.md` (+3 lines, docs-links section, distinct from PR #81's Tests-section edit to avoid conflict) and one new doc. No code behavior changed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jcwalker3 added 1 commit 2026-07-02 12:06:26 -05:00
Add docs/release-version-sop.md: operator SOP for cutting a versioned
release — master-based flow, SemVer bump decision, version-bump PR prep,
required pre-release checks, scripts/release-tag policy (safe-by-default,
master-only, clean-tree, tag-after-merge), who may merge/tag, self-review/
self-merge restrictions, status:in-progress handling, worktree cleanup, and
an explicit do-not list. Kept distinct from docs/release-workflows.md
(future release-mcp orchestrator). Link from README.

Documentation only; no code behavior changed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jcwalker3 closed this pull request 2026-07-02 12:19:13 -05:00
jcwalker3 deleted branch docs/issue-68-release-version-sop 2026-07-02 12:19:13 -05:00

Pull request closed

Sign in to join this conversation.