Repository navigation
chore(release): 0.9.0, lock urllib3 2.8.0 - #69
Merged
Merged
Conversation
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.
Release prep for 0.9.0. It also turns
maingreen again.Why this PR
After #68 merged,
main'sDependency auditfailed. pip-audit flagged urllib3 2.7.0 with CVE-2026-97687, CVE-2026-97688 and CVE-2026-97689, all fixed in 2.8.0. Because the audit failed, thedockerjob was skipped, so no image was published fromfa68cdc.urllib3 is dev-only here: pip-audit → requests → urllib3.
uv export --no-devdoes not include it, the wheel'sRequires-Distdoes not list it, and the image installs with--no-dev. The shipped artifacts were never affected.Changes
uv.lock: urllib3 2.7.0 → 2.8.0, plus the constraint recorded in the manifest. Nothing else changed.pyproject.toml: new[tool.uv] constraint-dependenciesentryurllib3>=2.8.0. The rule intests/test_dependency_floors.pyis that every security floor is declared whether or not a runtime path reaches it, andpip's dev-only floor is the precedent.tests/test_dependency_floors.py: newSECURITY_FLOORSentry. With the floor removed, the test fails, which I confirmed.src/ssh_mcp/__init__.py:__version__ = "0.9.0".CHANGELOG.md:[Unreleased]becomes## [0.9.0] - 2026-09-30, with a Why 0.9.0 and not 0.8.2 note. fix(config): reject non-list groups instead of coercing #68 makes string and inline-tablegroupsconfigs refuse to start, and the 0.8.0 rule says that takes the minor. There is also a urllib3 Security entry.AGENTS.md: current version 0.9.0, and the test count is now 855.Verification
HYPOTHESIS_PROFILE=cipytest: 855 passed.uv lock --checkpasses, and gitleaks is clean.uv buildproducesblc_ssh_mcp-0.9.0as a wheel and an sdist.release.yml's tag assertion withv0.9.0passes. The CycloneDX SBOM export works and does not include urllib3.v0.9.0.After merge
Push tag
v0.9.0. PyPI publishing waits for the reviewer-gatedpypienvironment. GHCR publishing from the tag is not gated.github-releaseuses--generate-notes, so paste the 0.9.0 CHANGELOG section into the release body by hand: that section explains the breakinggroupschange, and the PR titles alone do not.