fix(deps): refresh uv.lock to clear 72 known vulnerabilities - #79
fix(deps): refresh uv.lock to clear 72 known vulnerabilities#79williaby wants to merge 1 commit into
Conversation
pip-audit and OSV Scanner both fail on the default branch because the
locked dependency set carries 92 pip-audit findings across 15 packages
(72 OSV findings: 2 Critical, 45 High, 23 Medium). Those failures take
down every required status check that depends on them:
- CI Gate (via CI Pipeline / Code Quality Checks, step
"Dependency vulnerability scan")
- Dependency & Standards Validation (via Core Validation, same step)
- Security Gate Validation (via Security Analysis / OSV Vulnerability
Scanner, which exits 1 on any unignored finding)
Targeted `uv lock --upgrade-package` for exactly the 15 flagged packages
rather than a blanket `uv lock --upgrade`, so the resolver is not free to
drift ruff, pytest, or the rest of the toolchain and reformat the tree.
Verified locally against the repo's own pinned toolchain:
- uv run --frozen pip-audit ... -> No known vulnerabilities found
- osv-scanner scan source --lockfile=uv.lock -> No issues found (exit 0)
(same lock before the change: 15 packages, 72 vulnerabilities, exit 1)
- uv run --frozen ruff format --check src/ tests/ -> 49 files already
formatted
- uv run --frozen ruff check src/ tests/ -> All checks passed
- uv run --frozen pytest -> 475 passed, coverage 93.33% (gate 80%)
- uv run --frozen basedpyright src/ -> 1 error, unchanged from before
this commit (pre-existing numpy dtype variance in vad_processor.py)
Notable version moves: cryptography 48.0.0 -> 50.0.1,
starlette 1.2.1 -> 1.6.0, torch 2.12.0 -> 2.14.0,
gitpython 3.1.50 -> 3.1.61, pymdown-extensions 10.21.3 -> 11.0.2.
#ASSUME torch 2.14.0 and torchvision 0.29.0 keep the CUDA 13 wheel
layout the [ml] extra resolves today; the full suite passes locally on
CPU wheels only. #VERIFY watch the first GPU-path run after merge.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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 |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
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 and the OSV Vulnerability Scanner, matching the fix already applied on PR #79 in this repo. Also fixes the real Code Quality Checks failures the relock's ruff 0.15.16 -> 0.16.5 bump uncovered, not suppressions: - vad_processor.py: basedpyright strict flagged process_audio()'s speech_chunks.append(chunk) because sf.read(dtype="float64")'s stub returns a dtype union for a non-literal dtype argument. dtype="float64" guarantees a float64 array at runtime, so cast the loaded audio to the module's AudioSamples alias once, right after loading. - api/__init__.py: RUF LOG004 flagged logger.exception() in global_exception_handler because it runs outside a lexical except block (FastAPI calls it with the exception instance, not via re-raise), so the implicit sys.exc_info() lookup is not reliable there. Switched to logger.error(..., exc_info=exc), which passes the exception explicitly and keeps full traceback logging. - api/routes.py: PLR0917 flagged process_audio()'s 6 positional parameters. FastAPI always invokes route handlers via dependant.call(**values), so making the Form/File parameters keyword-only is a safe, non-breaking fix. - core/exceptions.py: RUF036 flagged None in the middle of the ErrorDetails union; moved it to the end. - core/sentry.py: PLR0917 flagged init_sentry()'s 8 positional parameters. Every call site (including tests/unit/test_sentry.py) already uses keyword arguments, so making all parameters keyword-only is a safe, non-breaking fix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Closing as superseded by #78, which merged first and already carried the uv.lock relock into main. Verification performed against main at f5a8bb7 (the #78 merge commit):
Since #78 already resolved the same 92-finding/15-package pip-audit backlog this PR targeted, and the branch is now DIRTY against main, closing rather than rebasing. |
Pull request was closed



Why
Three of the four required status checks fail on
main, and all three traceto one step:
Dependency vulnerability scan(pip-audit) inside the orgreusable
python-ci.yml, plus the equivalent OSV Scanner step insecurity-analysis.yml.The locked dependency set carries 92 pip-audit findings across 15 packages
(OSV counts 72: 2 Critical, 45 High, 23 Medium, 1 Low, 1 Unknown). Every
dependent gate then goes red:
CI Gateci.ymljobgateneedsci->CI Pipeline / Code Quality Checks-> pip-audit step exits 1Dependency & Standards Validationpr-validation.ymljobvalidation-summaryneedscore-validation-> same reusable, same stepSecurity Gate Validationsecurity-analysis.yml->OSV Vulnerability Scannerexits 1 on the same lockfileCheck REUSE ComplianceNothing in this repo's own source is at fault. Ruff format reports
49 files already formattedand Ruff lint reportsAll checks passedon theunmodified tree, so this is not the fleet-wide ruff-drift pattern.
What changed
uv.lockonly. Targeteduv lock --upgrade-packagefor exactly the 15flagged packages rather than a blanket
uv lock --upgrade, so the resolveris not free to drift ruff, pytest, or the rest of the toolchain and reformat
the tree underneath the quality gate.
Notable moves:
cryptography 48.0.0 -> 50.0.1,starlette 1.2.1 -> 1.6.0,torch 2.12.0 -> 2.14.0,gitpython 3.1.50 -> 3.1.61,pymdown-extensions 10.21.3 -> 11.0.2.Verification (local, repo's own pinned toolchain)
uv run --frozen pip-audit --ignore-vuln PYSEC-2022-42969 --ignore-vuln PYSEC-2026-139osv-scanner scan source --lockfile=uv.lockuv run --frozen ruff format --check src/ tests/uv run --frozen ruff check src/ tests/uv run --frozen pytestuv run --frozen basedpyright src/vad_processor.py:310)Notes for reviewers
ci.yml(jobCI Pipeline) andpr-validation.yml(jobCore Validation) both call thesame org reusable
python-ci.yml, soCode Quality Checksappears twice inthe rollup. Both instances fail for the same reason and both go green with
this fix. This PR deliberately does not remove the duplicate: the
required
Dependency & Standards Validationjob depends oncore-validation, so deleting either caller would drop a required context.Deduplicating is a separate, deliberate change.
osv-scanner.tomland[tool.pip-audit] ignore-vulnnow list ignores thatno longer match anything (
CVE-2022-42969,PYSEC-2022-42969,PYSEC-2026-139,GHSA-w596-4wvx-j9j6). OSV reports them asunused ignoresbut still exits 0, so this PR leaves them alone rather thanwidening the diff. Worth a follow-up cleanup alongside
docs/known-vulnerabilities.md.pre-commit run --all-fileshas two pre-existing failures unrelated to thischange: the BasedPyright error above, and
validate-front-matterondocs/audit/2026-05-29/*.md(redundant H1 headings). Neither is a requiredstatus check.
Generated with Claude Code