Repository navigation
fix(deps): close five new httpx2/httpcore2 advisories - #241
Merged
Merged
Conversation
Six advisories were published against the pinned httpx2/httpcore2 2.9.1 in the last two days, so `main` started failing its own audit gate without anyone changing code — which is exactly what that gate (added in #228) exists to do. Every open PR inherits the red X, including the TRUST phase in #240. httpx2 2.9.1 PYSEC-2026-3845/3846/3847/3848/3849 fixes 2.10.0/2.11.0/2.12.0 httpcore2 2.9.1 PYSEC-2026-3844 fix 2.10.0 Lockfile only. `pyproject.toml:86` already declares `httpx2>=2.5.0,<3.0.0` and 2.12.0 sits inside it, so no constraint moves. Scoped with `--upgrade-package` for each flagged package rather than a bare `uv lock --upgrade`, which over-reached in this repo before and dragged ruff forward, breaking ~40 unrelated files under scripts/probes/. Exactly three lock entries changed: httpcore2 2.9.1 -> 2.12.0 httpx2 2.9.1 -> 2.12.0 httpx2-jsfetch (new) 1.0 The new transitive was checked rather than waved through — a novel package appearing under an HTTP library is the shape this repo's current programme is about. It is declared by httpx2 2.12.0 itself, comes from PyPI with sdist and wheel hashes, and is gated `sys_platform == 'emscripten'`, so it never installs off Pyodide. Verified empirically: not importable after `uv sync --locked`. Verification: - `pip-audit --strict` on the resolved environment: "No known vulnerabilities found" (was six). - Full suite, 3456 collected — identical population to main, no new tests. 3215 passed + 107 failed + 106 errors = 3428, exactly main's passed count. - The failures are the known worktree-location artifact: `node_modules` at the volume root trips npm's local-prefix rule and the resolver refuses by design (#195). Every failure reason traces to that refusal or its downstream UpdateServerOutput cascade, and the output contains zero occurrences of httpx, httpcore, ConnectError, ReadError or TransportError — so the transport bump introduced none of them. A checkout outside /mnt runs clean, as CI does. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018FncHYooSXexECJ2DYcnu6
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.
Six advisories were published against the pinned
httpx2/httpcore22.9.1 in the last two days, somainstarted failing its own audit gate without anyone changing code. Every open PR inherits the red X — including the TRUST phase in #240, whose diff touches no dependency file at all.That is precisely what the gate added in #228 exists to do: catch newly published advisories against what actually ships.
Lockfile only
pyproject.toml:86already declareshttpx2>=2.5.0,<3.0.0and 2.12.0 sits inside it, so no constraint moves.Scoped with
--upgrade-packageper flagged package rather than a bareuv lock --upgrade, which over-reached in this repo before and dragged ruff forward, breaking ~40 unrelated files underscripts/probes/. Exactly three entries changed:httpcore2httpx2httpx2-jsfetchThe new transitive was checked, not waved through
A previously-unseen package appearing under an HTTP library is the exact shape this repo's current trust-boundary programme is about, so it got looked at:
httpx2 2.12.0itself, not injected by the resolversha256hashes recorded in the locksys_platform == 'emscripten'— it never installs off PyodideVerified empirically rather than by reading the marker: after
uv sync --locked --all-extras --dev,httpx2_jsfetchis not importable. It is a lockfile graph entry only.Verification
pip-audit --stricton the resolved environment: "No known vulnerabilities found" (was six).main, since this PR adds no tests.3215 passed + 107 failed + 106 errors = 3428, exactlymain's passed count.node_modulesat the volume root trips npm's local-prefix rule and the resolver refuses by design (npm identity: the same collision class survives in rarer flag spellings #195). A checkout outside/mntruns clean, as CI does.UpdateServerOutputcascade, and the output contains zero occurrences ofhttpx,httpcore,ConnectError,ReadErrororTransportError. The transport bump introduced none of them.httpx2is the transportclient/manager.pyruns on, so this is not a cosmetic bump — that is why the failure reasons were checked rather than just the totals.Merging this first unblocks #240, which is otherwise green on all three interpreters.
🤖 Generated with Claude Code
https://claude.ai/code/session_018FncHYooSXexECJ2DYcnu6
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.