Repository navigation
test: keep release version pins aligned across packaging files - #31
Merged
Merged
Conversation
Read the release version from the root pyproject.toml (tomllib on 3.11+, a [project]-scoped regex on 3.10) and assert that __version__, both Hermes manifests and both integration READMEs reference the same release. Refs M3-6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
APPROVED at 2a851a2 Independent review completed.
Non-blocking:
|
Merged
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.
Finding
Fixes M3-6 (P2) from the 2026-10-08 Opus-verified review. The release version
0.4.0is hard-coded inpyproject.toml,birkin_mnemosyne/__init__.py(__version__, surfaced bymnemosyne-mcp --versionand MCPserverInfo.version),integrations/hermes/pyproject.toml,integrations/hermes/plugin.yaml,integrations/hermes/README.mdandintegrations/openclaw/README.md. No test keeps them aligned, so a release bump can silently leave stale pins behind.Change
Adds
tests/test_version_alignment.py, which reads the version from the rootpyproject.tomland asserts:birkin_mnemosyne.__version__equals it;integrations/hermes/pyproject.tomlandintegrations/hermes/plugin.yamlpin"birkin-mnemosyne==<version>";integrations/hermes/README.mdandintegrations/openclaw/README.mdmention==<version>.Each assertion message names the file the maintainer has to bump. The test uses
tomllibon Python 3.11+ and falls back to a regex scoped to the[project]table on 3.10, so it never importstomllibunconditionally (requires-python = ">=3.10").Policy check: #24 ("keep hermes plugin pins installable during quarantine") exempts
birkin-mnemosynefrom the uvexclude-newercutoff because it is an exact, reviewed pin of our own release. Nothing there says the Hermes pin should lag the core version, so the test asserts equality: a release bump must update the Hermes pin in the same change. If the pin is ever meant to lag, this test is the place to encode that.No source changes: all six locations currently agree on
0.4.0.Tests
tests/test_version_alignment.py(3 tests).plugin.yaml->AssertionError: integrations/hermes/plugin.yaml must pin 'birkin-mnemosyne==0.4.0'; bump its dependencyopenclaw/README.md->AssertionError: integrations/openclaw/README.md must reference '==0.4.0'; bump its install line__init__.py->AssertionError: birkin_mnemosyne/__init__.py __version__ is '0.3.9' but pyproject.toml says '0.4.0'; bump __version__sys.version_info = (3, 10, 14)withtomllibimports blocked; all three tests pass on that path. The CI 3.10 job will run it natively.718 passed, 2 skipped(baseline 715 passed, 2 skipped, plus 3 new).Risk
None user-visible; this adds a test only. Future release bumps must update all six locations together or CI fails with a message naming the stale file.
🤖 Generated with Claude Code