fix(deps): refresh uv.lock to clear 91 known vulnerabilities - #95
Conversation
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.OpenSSF ScorecardScorecard details
Scanned Files
|
Relocks uv.lock to resolve stale-dependency CVEs surfaced by the Dependency & Standards Validation pip-audit gate (28 findings across 4 packages), matching the fix already applied on PR #95 in this repo. Also fixes two real Code Quality Checks failures uncovered along the way, not suppressions: - redis_store.py: basedpyright strict flagged four hset() calls because Mapping's key parameter is invariant, so a plain dict[str, str] does not satisfy Mapping[FieldT, EncodableT] (FieldT/EncodableT are Union types) even though str is a member of that union. Cast to the upstream redis.typing aliases at each call site, matching the existing cast() convention already used in this file for hgetall()/smembers() results. - sentry.py: the uv.lock upgrade bumped ruff 0.15.16 -> 0.16.5, which newly flags init_sentry()'s 8 positional-or-keyword parameters (PLR0917). init_sentry() has no callers outside its own docstring examples, both of which already use keyword arguments, so making every parameter keyword-only is a safe, non-breaking fix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pip-audit runs as a hard gate inside the org reusable python-ci workflow (step "Dependency vulnerability scan"), and the default-branch lockfile carried 91 known vulnerabilities across 14 packages. That step failed on every PR, which failed "Code Quality Checks", which failed "CI Gate" and "Validation Summary". Both the ci.yml caller and the pr-validation.yml caller hit the same failure, so the whole PR queue was blocked on a default-branch problem. Targeted `uv lock --upgrade-package` for each flagged package only; no pyproject constraint was changed and no direct dependency was added or removed. Upgraded: cryptography 48.0.0 -> 50.0.1, gitpython 3.1.50 -> 3.1.61, jupyter-server 2.19.0 -> 2.21.0, jupyterlab 4.5.8 -> 4.6.3, mistune 3.2.1 -> 3.3.4, msgpack 1.1.2 -> 1.2.2, pillow 12.2.0 -> 12.3.0, pip 26.1.2 -> 26.2.1, pyasn1 0.6.3 -> 0.6.4, pydantic-settings 2.14.1 -> 2.15.0, pymdown-extensions 10.21.3 -> 11.0.2, starlette 1.2.1 -> 1.6.0, tornado 6.5.6 -> 6.5.8. Verified locally on Python 3.12: `uv lock --check` clean, `pip-audit` reports no known vulnerabilities, `osv-scanner --lockfile=uv.lock` exits 0, and the full pytest suite passes (496 passed, 1 skipped, 93.04% coverage). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
57f53f7 to
cb38507
Compare
|



Problem
Every open PR in this repo is
BLOCKED, and the cause is onmain, not in the PRs.The org reusable
python-ci.ymlrunspip-auditas a hard gate (step 21,"Dependency vulnerability scan",
fail-on-security-findingsdefaults to true).On
mainthat step reported:cryptography,gitpython,jupyter-server,jupyterlab,mistune,msgpack,pillow,pip,pyasn1,pydantic-settings,pymdown-extensions,setuptools,starlette,tornado.That single step failure cascades:
CI Gateneeds: [ci], andCI Pipeline / Code Quality Checksfailed on pip-auditDependency & Standards Validationpip-auditstep, same findingsSecurity Gate ValidationCheck REUSE ComplianceValidation Summary,CI Pipeline / CI Gate, andCore Validation / CI Gatefailed for the same reason.
Change
One file:
uv.lock.Targeted
uv lock --upgrade-package <pkg>for each flagged package. Nopyproject.tomlconstraint was touched, and no direct dependency was added orremoved.
setuptoolsdropped out of the graph naturally once the Jupyterpackages moved forward.
Verification (local, Python 3.12)
uv lock --check: cleanuv export --frozen --all-extrasthenpip-audit: No known vulnerabilities foundosv-scanner scan source --lockfile=uv.lock:No issues found, exit 0uv run --frozen pytest: 496 passed, 1 skipped, 93.04% coverage (threshold 80%)pre-commit run --files uv.lock: all hooks passNotes for reviewers
# noqa,# type: ignore,continue-on-error, or ignore-list entry was used.All 91 findings are genuinely resolved by version bumps.
Security Gate Validationjob) or ci(security): remove GHAS-dependent CodeQL and dependency-review CI #93 (GHAS removal);this PR touches only
uv.lockand is file-disjoint from both.Out of scope, reported not fixed
.github/workflows/ci.ymljobciand.github/workflows/pr-validation.ymljobcore-validationboth call the sameorg
python-ci.yml, so the entire Python CI suite runs twice per PR under twoprefixes (
CI Pipeline / ...andCore Validation / ...). Only theci.ymlcaller feeds the required bare
CI Gate. Deduplicating would halve CI cost butneeds a decision on
validation-summary'sneeds:list, so it is left alone here.src/rag_processor/queue/redis_store.pylines58, 105, 117, 182 report
reportArgumentTypeonhset(mapping=...)(
dict[str, str]vs the invariantMapping[FieldT, EncodableT]). These do notblock CI today because the org workflow wraps basedpyright in a
|| echo "::warning::", but they will bite if that gate is ever hardened.Generated with Claude Code