Skip to content

fix(deps): refresh uv.lock to clear 91 known vulnerabilities - #95

Merged
williaby merged 1 commit into
mainfrom
claude/fix-default-branch-ci-0
Sep 4, 2026
Merged

fix(deps): refresh uv.lock to clear 91 known vulnerabilities#95
williaby merged 1 commit into
mainfrom
claude/fix-default-branch-ci-0

Conversation

@williaby

@williaby williaby commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Problem

Every open PR in this repo is BLOCKED, and the cause is on main, not in the PRs.

The org reusable python-ci.yml runs pip-audit as a hard gate (step 21,
"Dependency vulnerability scan", fail-on-security-findings defaults to true).
On main that step reported:

Found 91 known vulnerabilities in 14 packages

cryptography, gitpython, jupyter-server, jupyterlab, mistune, msgpack,
pillow, pip, pyasn1, pydantic-settings, pymdown-extensions, setuptools,
starlette, tornado.

That single step failure cascades:

Required context Was Cause
CI Gate FAIL needs: [ci], and CI Pipeline / Code Quality Checks failed on pip-audit
Dependency & Standards Validation FAIL its own pip-audit step, same findings
Security Gate Validation pass not affected (see #94)
Check REUSE Compliance pass

Validation Summary, CI Pipeline / CI Gate, and Core Validation / CI Gate
failed for the same reason.

Change

One file: uv.lock.

Targeted uv lock --upgrade-package <pkg> for each flagged package. No
pyproject.toml constraint was touched, and no direct dependency was added or
removed. setuptools dropped out of the graph naturally once the Jupyter
packages moved forward.

Package From To
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

Verification (local, Python 3.12)

  • uv lock --check: clean
  • uv export --frozen --all-extras then pip-audit: No known vulnerabilities found
  • osv-scanner scan source --lockfile=uv.lock: No issues found, exit 0
  • uv run --frozen pytest: 496 passed, 1 skipped, 93.04% coverage (threshold 80%)
  • pre-commit run --files uv.lock: all hooks pass

Notes for reviewers

Out of scope, reported not fixed

  • Duplicate CI. .github/workflows/ci.yml job ci and
    .github/workflows/pr-validation.yml job core-validation both call the same
    org python-ci.yml, so the entire Python CI suite runs twice per PR under two
    prefixes (CI Pipeline / ... and Core Validation / ...). Only the ci.yml
    caller feeds the required bare CI Gate. Deduplicating would halve CI cost but
    needs a decision on validation-summary's needs: list, so it is left alone here.
  • Latent basedpyright errors. src/rag_processor/queue/redis_store.py lines
    58, 105, 117, 182 report reportArgumentType on hset(mapping=...)
    (dict[str, str] vs the invariant Mapping[FieldT, EncodableT]). These do not
    block 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

Copilot AI lite review requested due to automatic review settings September 3, 2026 11:41

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock, !**/*.lock

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Team

Run ID: 7594c51b-d5b2-4ac8-a6c8-f5855bcd5bf2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

Scorecard details
PackageVersionScoreDetails
pip/cryptography 50.0.1 UnknownUnknown
pip/gitpython 3.1.61 🟢 7.2
Details
CheckScoreReason
Code-Review⚠️ 1Found 2/11 approved changesets -- score normalized to 1
Maintained🟢 1030 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10
Security-Policy🟢 10security policy file detected
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 9detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing🟢 10project is fuzzed
License🟢 10license file detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 3branch protection is not maximal on development and all release branches
SAST🟢 10SAST tool is run on all commits
pip/jupyter-builder 1.2.2 UnknownUnknown
pip/jupyter-server 2.21.0 UnknownUnknown
pip/jupyterlab 4.6.3 UnknownUnknown
pip/mistune 3.3.4 UnknownUnknown
pip/msgpack 1.2.2 UnknownUnknown
pip/notebook 7.6.2 UnknownUnknown
pip/pillow 12.3.0 UnknownUnknown
pip/pip 26.2.1 UnknownUnknown
pip/pyasn1 0.6.4 UnknownUnknown
pip/pydantic-settings 2.15.0 UnknownUnknown
pip/pymdown-extensions 11.0.2 UnknownUnknown
pip/starlette 1.6.0 UnknownUnknown
pip/tornado 6.5.8 UnknownUnknown

Scanned Files

  • uv.lock

@williaby
williaby enabled auto-merge September 3, 2026 12:33
williaby added a commit that referenced this pull request Sep 3, 2026
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>
@williaby
williaby force-pushed the claude/fix-default-branch-ci-0 branch from 57f53f7 to cb38507 Compare September 4, 2026 15:29
@sonarqubecloud

sonarqubecloud Bot commented Sep 4, 2026

Copy link
Copy Markdown

@williaby
williaby added this pull request to the merge queue Sep 4, 2026
Merged via the queue into main with commit 1d92ae3 Sep 4, 2026
58 of 62 checks passed
@williaby
williaby deleted the claude/fix-default-branch-ci-0 branch September 4, 2026 15:33
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.

2 participants