chore(release): v0.21.1 — fix version string, guard it with a test - #46
Conversation
0.21.0 shipped with __version__ still at "0.20.0". Every 0.21.0 install runs the correct code but self-reports the previous version, so a fleet-wide `linear --version` sweep calls every up-to-date box stale — which is exactly how this was found, right after rolling 0.21.0 out to nine machines. __version__ is bumped in the feature commit, not the release commit (see 3811dfd for 0.20.0), which is what made it easy to miss. Adds VersionMatchesChangelogTest so the suite fails when __version__ drifts from the newest CHANGELOG heading. Verified it fails when reverted. Re-pins install.sh + README to v0.21.1 (linear sha256 4055001d…).
|
VERDICT: APPROVE Code ReviewerVerdict: Ready to merge Build: No build step — single-file Python CLI, no compilation required. What was verified
Diff reviewAll 5 changed files are scoped to the version bump and its documentation:
Things that were checked and are fine
ConclusionClean, minimal, well-documented fix for a real operational bug. The guard test prevents recurrence and is written to be understood months from now. Ready to merge. Reviewed by Code Reviewer — actually ran the build and tests on this branch. |
Cost a reviewer a false 'version test is flaky' diagnosis on #46: macOS system python3 caches `linear` as `linearcpython-39.pyc`, and a same-length edit ("0.20.0" -> "0.21.1") is easy to miss as stale.
|
VERDICT: APPROVE Code ReviewerVerdict: Ready to merge Build: Clean (syntax check: exit 0) What was verified
The fix addresses the root causeThe old process bumped No issues found
Reviewed by Code Reviewer — actually ran the build and tests on this branch. |
Non-author review — verdict: READY TO MERGEReviewed by the Checksum — correct, and taken from the post-change file. Unlike #45, this PR does modify Matches No hidden behavior change. Byte-identical at the future tag. Single commit ahead of The new test holds up. Version references. CI green: Analyze (actions), Analyze (python), CodeQL, unittest ×2. One extra commit since the reviewThe reviewer burned time on a false "the version test is flaky" lead: macOS system python3 caches the extensionless
|
The bug
v0.21.0 shipped with
linear:69still reading__version__ = "0.20.0". Every 0.21.0 install runs the correct code — the owner guard is live — but the CLI self-reports the previous version.Found immediately after rolling v0.21.0 out to nine fleet machines: the post-install verification sweep reported every box as still on 0.20.0, which is indistinguishable from a failed rollout.
Root cause:
__version__is bumped in the feature commit, not the release commit (3811dfddid it for 0.20.0), so the release checklist never touches it and #44 missed it.The fix
__version__→0.21.1VersionMatchesChangelogTest— asserts__version__equals the newest released## [x.y.z]heading in CHANGELOG.md, so the suite fails the moment they drift. Verified it actually catches this: reverting__version__to0.20.0fails the test with__version__ is '0.20.0' but the newest CHANGELOG entry is '0.21.1'. Bump __version__ in \linear` when you add the CHANGELOG entry, not at release time.`install.shand both README snippets tov0.21.1.Because
linearitself changed, the checksum is new:v0.21.0stays as published — tags aren't rewritten.No behavior change beyond the version string. Follows #44 and #45.