Repository navigation
chore: exempt non-product changes from version bumps - #150
Merged
Merged
Conversation
yia-mw-agent
previously approved these changes
Oct 21, 2026
yia-mw-agent
left a comment
Contributor
There was a problem hiding this comment.
Helmet-Review-Request: #150 (comment)
Reviewed the full merge-base (f1c89ae, current main) to head 857d94d diff: 4 files, scripts/mw-version.py, .version-policy.json, docs/version-policy.md, AGENTS.md. No material defects.
Validation on the checked-out head:
tests/test_release_channels.py: 35 passed.mw-version.py checkon this PR: passes with no bump. The PR's CI checks (Version policy, both test jobs, CodeQL, Semantic PR) all pass.- Throwaway-clone probes of the classifier. Docs/README-only, tests-only and
.github/changes need no bump. A stray unneeded bump on such a change is rejected. Product changes still require the bump: asrc/**.py change, asrc/**Markdown template,reader_templates/*.astro,AGENTS_USAGE_INSTRUCTIONS.md, apyproject.tomldependency change, andscripts/bootstrap-data-repo.sh. Malformedrelease_pathsfails with a clear PolicyError.
Non-blocking notes:
README.mdis the PyPI long description andREADME.md,CHANGELOG.md,CONTRIBUTING.mdandSECURITY.mdare sdist inputs (pyproject.toml,[tool.hatch.build.targets.sdist]). They are exempt as*.md. If a README-only change should reach the PyPI page without a code change, addREADME.mdtorelease_paths. Otherwise it ships with the next product release.- The existing guard rejects a PR that adds
exclude_paths, but nothing stops a PR from removingrelease_paths. Doing so makes shipped Markdown undersrc/exempt again (probe: passes with no bump). Mirroring the exclude_paths subset check forrelease_pathsinevaluate(scripts/mw-version.py, near the exclude_paths guard) would close it. The checker script is itself PR-editable, so this is only defense in depth. - The six CLI regression scenarios in the PR description are not committed as tests;
test_release_channels.pyonly covers the pre-existing channel behavior. Adding them to the test suite would protect the classifier against drift. - Pre-existing: if a configured mirror file such as
uv.lockis deleted, the check fails with a raw[Errno 2]rather than a PolicyError. This PR does not change that.
yia-mw-agent
approved these changes
Oct 21, 2026
yia-mw-agent
left a comment
Contributor
There was a problem hiding this comment.
Helmet-Review-Request: #150 (comment)
Reviewed the full merge-base (f1c89ae, current main) to head 2642bb4 diff: 4 files, scripts/mw-version.py, .version-policy.json, docs/version-policy.md, AGENTS.md. No material defects.
What I checked:
- Read the diff against surrounding
evaluate()logic.substantive_changesandrelease_changesrun only when not promoting, so release promotion keeps its strict "version values only" rule.shared/unit-affected logic then sees only product changes. scripts/mw-version.py check --base origin/mainon this head passes with no bump. This is correct, since the PR only changes policy, docs and the updater. The existingtests/test_release_channels.pypasses: 35 passed with--noconftest, becausepytest_asyncioisn't installed in this runtime. The PR's ownVersion policyandValidate PRchecks pass. At review time only thetestmatrix jobs were still pending; I did not wait on them.- Probe: temp git repos using this repo's real
.version-policy.json,pyproject.toml,uv.lockand__init__.py, runningcheck,update, thencheckagain.- No bump (unchanged component): README,
docs/,tests/,.github/,CHANGELOG.md,codev/*.md. - Bump to 0.8.6rc1, with the recheck passing: a new
.pyundersrc/under adocs:title,src/fava_trails/**/*.mdandsrc/fava_trails/docs/*,AGENTS_USAGE_INSTRUCTIONS.md, apyproject.tomldependency change, and auv.lockchange. - Removing or narrowing
release_pathsagainst a base that already has it is rejected: "a change PR cannot remove release_paths that protect shipped product files". - The
release_pathsentriessrc/fava_trails/**andAGENTS_USAGE_INSTRUCTIONS.mdmatch what the wheel and sdist ship from the repo (pyproject.tomlforce-includeand sdistinclude). That also covers the*.md/docs/**/*.test.*defaults, which fnmatch would otherwise let swallow files undersrc/.
- No bump (unchanged component): README,
- The documentation, the
AGENTS.mdpointer, and thePOINTER/WORKFLOWtemplate in the script all agree. Version-only changes to mirror files are correctly not treated as substantive.
Non-blocking notes:
README.mdandCHANGELOG.mdare in the sdist, and README is the PyPI long description. Under this policy, edits to them no longer bump the version. That follows from the stated "documentation needs no bump" intent. If PyPI page freshness matters, add them torelease_paths.substantive_changesskips files that are missing at the base (new mirrors) and treats a deleted mirror file as an unhandledFileNotFoundError. The deleted-file crash predates this PR, so it is not a regression.- The new
version_fields/configured_filesoverlap validation has no committed regression test. The PR description cites seven CLI scenarios, but none were added to the tests, so this behavior depends on future reviewers re-running probes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Change
Documentation, tests, CI, repository metadata, and development checks alone no longer require product version bumps. The local updater classifies changed paths, so mixed product changes still bump the affected components. Explicit
release_pathskeep shipped Markdown, such as skills, prompts, templates, or rendered site pages, versioned where applicable.The repository instructions and version-policy guide now match the checker. Product versions are unchanged by this policy update. Existing release controls and repository-specific version rules are preserved.
Existing product release paths cannot be removed or narrowed in a change PR.
Validation
Seven CLI regression scenarios pass: documentation and development-only changes, mixed code changes with a docs title, shipped Markdown, component isolation, removal of an unnecessary documentation bump, and malformed product-path configuration, and preservation of existing shipped-product paths. The current PR passes its local version check without a bump, and whitespace checks pass. The release-candidate channel behavior is preserved; all 35 release-channel tests pass.