Skip to content

chore(release): 0.9.8 — raise dependency floors past published advisories - #1535

Merged
frankbria merged 2 commits into
mainfrom
release/0.9.8
Oct 25, 2026
Merged

frankbria merged 2 commits into
mainfrom
release/0.9.8

Conversation

@frankbria

Copy link
Copy Markdown
Owner

Security release. Published 0.9.7's ranges let an install resolve vulnerable versions; #1533 only fixed the lockfile, which PyPI users never see.

  • gitpython>=3.2.1,<4 (submodule RCE), aiohttp>=3.14.4, filelock>=4.2.1, plus a direct certifi>=2026.10.19 (transitive via httpx/requests; old bundles trust emSign roots with compromised intermediates)
  • Version → 0.9.8 in pyproject.toml, uv.lock, the README and site/ beta lines, and the CHANGELOG ([Unreleased] cut to [0.9.8] with a Security section)

Verification: tests/ci + tests/adapters 388 passed locally; cf --version → 0.9.8. Unlocked Resolution runs on this PR because it touches pyproject.toml. Cold-start cleanroom check (--source) runs before tagging.

After merge: tag v0.9.8 → release.yml publishes to PyPI.

…lelock, certifi)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @frankbria's task in 3m 14s —— View job


Claude — Third-Party Defect Review

  • Fetch PR diff and context
  • Verify version bumps are consistent across all files
  • Verify dependency floors and lockfile coherence
  • Post findings + summary

Result: no defects found. This is a release/security-floor PR touching only metadata, and every surface is consistent:

  • 0.9.8 matches across pyproject.toml, uv.lock (package entry + requires-dist metadata), README, site/index.html, and the CHANGELOG (release cut + compare links correct).
  • Locked versions satisfy the new floors exactly: aiohttp 3.14.4, certifi 2026.10.19, filelock 4.2.1, gitpython 3.2.1.
  • Remaining 0.9.7 strings are intentional history (demo captions, "0.9.7 or later" notes, changelog entries).
  • The codebase uses only APIs stable across the floor moves (filelock.FileLock, import git; certifi has no direct import), so raising floors breaks nothing at runtime.

Summary posted as a PR comment.
• PR branch

@claude

claude Bot commented Oct 25, 2026

Copy link
Copy Markdown

Review: 0.9.8 dependency floors

No blocking issues.

  • Version consistency: pyproject.toml, uv.lock, README, site/index.html and the CHANGELOG all say 0.9.8. The README and site notes stay identical, as test_site_1465 requires.
  • Floors and lock: uv.lock requires-dist matches the new pyproject.toml specifiers. The resolved versions already meet them: aiohttp 3.14.4, certifi 2026.10.19, filelock 4.2.1, gitpython 3.2.1.
  • Compatibility: the filelock>=3.0 → >=4.2.1 change crosses a major version. The code only uses FileLock (credentials.py, atomic_io.py), which is stable, and the lock already resolved 4.x, so CI exercised it.
  • Cap: gitpython<4 is kept, consistent with the SDK-ceiling lesson in CLAUDE.md. certifi and filelock are floor-only. That is fine for these two, since neither exposes a call signature we depend on, but the Unlocked Resolution job will catch any drift.
  • Nit: the CHANGELOG puts the new ### Security section before the pre-existing ### Changed section under 0.9.8. That is fine, but check that ### Changed really belongs to 0.9.8 and not to the old [Unreleased].

I didn't run the tests. This covers the diff and lock only. Run the cold-start cleanroom check before tagging, as the PR plans.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

✅ Third Party Review: no defects found.

Verified against the checked-out tree:

Check Result
Version 0.9.8 consistent across pyproject.toml, uv.lock (package + requires-dist metadata), README, site/index.html, CHANGELOG ✅
Lockfile resolved versions satisfy the new floors exactly: aiohttp 3.14.4, certifi 2026.10.19, filelock 4.2.1, gitpython 3.2.1 ✅
Remaining 0.9.7 references are historical/intentional (demo recordings, "0.9.7 or later" requirement notes, changelog history, compare links) ✅
CHANGELOG release cut structurally correct: [Unreleased] emptied, [0.9.8] section + compare links added, [0.9.7] link retained ✅
tests/ci/test_site_1465.py verbatim-drift guard still satisfied (README [!NOTE] and site limitations block both say 0.9.8) ✅
Bumped deps' used APIs stable across the floor move: codebase imports only filelock.FileLock (present in 3.x and 4.x) and git (core/git.py); certifi is floor-only with no direct import ✅

Model: k3[1m]

… dev-only via pre-commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @frankbria's task in 1m 51s —— View job


Claude — Third-Party Defect Review (sync)

  • Fetch PR diff and context
  • Verify version bumps and lockfile coherence
  • Post findings + summary

Result: no defects found. The delta since the prior clean review is one commit — virtualenv 21.14.9 → 21.14.13 (regression fix for the GHSA in 21.14.9), lockfile-only.

  • The lock entry is coherent: version, sdist/wheel URLs and hashes updated together; dependency list unchanged; its only consumer in the lock is pre-commit (dev tooling), so it cannot reach a published install.
  • All previously verified floors still hold: aiohttp 3.14.4, certifi 2026.10.19, filelock 4.2.1, gitpython 3.2.1 resolve exactly at the new floors.

Summary posted as a PR comment.
• PR branch

@claude

claude Bot commented Oct 25, 2026

Copy link
Copy Markdown

Follow-up review

No new blocking issues. The diff is unchanged in substance from my earlier review.

  • Earlier CHANGELOG nit, resolved: the ### Changed (trademark) entry sat under [Unreleased] before this PR. Emptying [Unreleased] and adding the [0.9.8] heading above it moves that entry into 0.9.8, which is correct.
  • Unrelated lock change: uv.lock also bumps virtualenv 21.14.9 → 21.14.13. It's harmless (a transitive dev dependency) but isn't mentioned in the PR description or CHANGELOG. Mention it if you want the diff to match the notes exactly.
  • Before tagging: I didn't run the tests. Run the --source cold-start cleanroom check, as the PR plans, and check that Unlocked Resolution is green. The floor-only filelock>=4.2.1 and certifi pins are the part that check covers.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

✅ Third Party Review: no defects found.

Delta since the prior clean review is one commit: `virtualenv 21.14.9 → 21.14.13`, lockfile-only.

Verified against the checked-out tree:

Check Result
virtualenv entry coherent: version, sdist + wheel URLs and hashes all updated together; dependency list (distlib, filelock, platformdirs, python-discovery) unchanged ✅
virtualenv has no direct or extra-scoped consumer in `pyproject.toml`; its only importer in the lock is `pre-commit` (dev tooling), so the bump cannot reach a published install ✅
Resolved versions still satisfy the 0.9.8 floors exactly: aiohttp 3.14.4, certifi 2026.10.19, filelock 4.2.1 (which virtualenv also depends on — single resolution consistent), gitpython 3.2.1 ✅
The prior review's nit is not a defect: the `### Changed` trademark entry was `[Unreleased]` content that correctly ships with the 0.9.8 release cut ✅

Model: k3[1m]

@frankbria
frankbria merged commit 63cd8c2 into main Oct 25, 2026
15 checks passed
@frankbria
frankbria deleted the release/0.9.8 branch October 25, 2026 05:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant