docs: add RELEASING.md for manual tag-and-notes releases - #146
docs: add RELEASING.md for manual tag-and-notes releases#146clean6378-max-it wants to merge 7 commits into
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds a manual release runbook covering versioning, changelog preparation, lightweight tags, GitHub Release creation, and post-release updates. ChangesManual release documentation
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
wpak-ai
left a comment
There was a problem hiding this comment.
-
RELEASING.md:9,RELEASING.md:53,SECURITY.md:5: say thatapp.py:3is authoritative and thatSECURITY.md:5carries a version, rewrite step 7 from an optional future conditional into a required step naming that line, and bumpSECURITY.md:5from0.1.0.dev0to the version being cut (the "only version string" claim, step 3's "previous dev version" scoping, and step 7's false "if the project later adds a supported-version table" all steer the reader away from the single stale version in the repo, the table has existed atSECURITY.md:7-10all along, andREADME.md:30advertises that page as the project's supported-versions reference) -
RELEASING.md:49-50: guard the publish on a non-empty extraction, e.g.[ -s "$NOTES" ] || { echo "error: no CHANGELOG.md section for $VERSION" >&2; exit 1; }, and take the whole tested replacement block rather than hand-patching (four executed inputs, the unedited literalX.Y.Z, a leading-vslip, an ordinary typo, and running from a subdirectory where awk exits 2, all reachgh release createwith a zero-byte notes file, and passing--notes-fileis what suppressesgh's interactive prompt even in a TTY, so the release publishes with a blank body and no diagnostic; the same replacement also fixes the footer-link swallow at:47, the body's duplicated## [X.Y.Z]heading, and the unreadable concatenated regexes at:45-47) -
RELEASING.md:24: add### Deprecatedto the changelog heading list, and### Securityalongside it (docs/deprecation-policy.md:16mandates### Deprecatedas the announcement channel,:16of this runbook tells the maintainer to bump minor for deprecations, and the repo has used the heading before, added in7944ddband converted to### Removedin6952d6d, so the one release type the document anticipates is the one whose required heading it omits) -
RELEASING.md:50: add--verify-tagtogh release create(ghauto-creates a missing tag from the default branch head, so a step 6 run where the tag was never pushed publishes a release against a tag pointing at whatever master happened to be;ghalready blocks the case where the tag exists locally but unpushed, so this closes only the narrower gap of skipping step 5 or losing$VERSIONin a fresh shell)
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@RELEASING.md`:
- Line 11: Update the supported-versions sentence in RELEASING.md to remove the
nested code span around the version placeholder, using plain text surrounding
the placeholder while preserving the existing meaning and synchronization
guidance.
- Around line 31-35: Update the release-check instructions around the grep
command so the documented scope matches its behavior: either narrow the wording
to the patterns currently searched or extend the command with an explicit search
for the previous stable version, ensuring stale references such as 0.1.0 are
detected.
- Around line 55-63: Update the changelog extraction awk logic in the release
instructions to compare the version heading literally, escaping or otherwise
avoiding regex interpretation of dots and other version characters. Replace the
NOTES size check with validation that requires at least one non-whitespace
character, rejecting blank-line-only sections before release creation.
- Around line 50-52: Update the VERSION validation in the shell case statement
to require exactly three non-empty numeric components separated by dots:
MAJOR.MINOR.PATCH. Reject values such as 0.2, .2.0, and 0..0 while preserving
the existing error message and exit behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@RELEASING.md`:
- Around line 5-13: Synchronize the version references in
docs/deprecation-policy.md with the release context documented in the runbook:
identify v0.2.0 as shipped and 0.3.0.dev0 as the current development version, or
remove the stale current-version claims while preserving the policy guidance.
- Around line 11-13: Update the release instructions around the app.py version
bump and SECURITY.md synchronization so SECURITY.md is updated only for shipped
release versions, not intermediate .dev0 development bumps. Preserve the
guidance that the supported-version entry tracks the latest released security
target and is updated when a new tag ships.
- Around line 31-37: Update the stale-version grep command in the release
checklist to match SECURITY.md’s actual “(currently VERSION)” parenthetical
format without requiring a backtick, while preserving detection of .dev0
suffixes and the previous release value.
- Around line 73-75: Update the release-notes generation flow in RELEASING.md to
append the promised “Full changelog” footer to NOTES after extraction and before
gh release create runs, using the release version in the URL and preserving the
documented manual fallback.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ae8d579 to
7c24073
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@RELEASING.md`:
- Line 90: Update the “CI gates” row in the RELEASING.md references table to
include the actual .github/workflows/ci.yml workflow, optionally retaining the
existing CONTRIBUTING.md reference.
- Around line 61-70: Update the changelog extraction and validation around the
awk command in the release flow so NOTES is considered valid only when the
selected ## [VERSION] section contains at least one non-whitespace content line
after its heading. Exclude the heading itself from the validation or track
content separately, and retain the existing failure before creating the GitHub
Release when no release content is present.
- Around line 52-58: Update the VERSION validation case in the release
instructions to reject leading-zero components while continuing to accept valid
three-part versions. Require each component to match 0 or a nonzero digit
followed by digits, so values such as 01.2.3 and 0.02.003 are rejected.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: be2e24b3-8847-47b1-915e-3c48c3613906
📒 Files selected for processing (3)
RELEASING.mdSECURITY.mddocs/deprecation-policy.md
🚧 Files skipped from review as they are similar to previous changes (1)
- SECURITY.md
Closes #143
Docs-only. Adds RELEASING.md at the repo root: a numbered checklist for cutting a release when there is no publish workflow. Version lives in app.py line 3, changelog edits follow Keep a Changelog, tags use vMAJOR.MINOR.PATCH, and the GitHub Release notes come from the matching CHANGELOG.md section.
The runbook records the v0.2.0 two-PR pattern (changelog first, then the bump) and points at .github/workflows/ci.yml for the green gate. git diff --stat should show only RELEASING.md.
Summary by CodeRabbit
0.2.0.dev0.mastermay carry a.dev0suffix between releases.