Compare commits

...

1 Commits

Author SHA1 Message Date
Ben Stull cdbc8078b6 Patch 0.31.5: pin transitive security floors (tqdm, idna)
backend/requirements.txt carries only loose `>=` direct constraints and
no compiled lockfile, so osv-scanner v2 resolves the transitive graph and
pins each unpinned transitive package to its MINIMUM published version —
surfacing CVEs in ancient releases pip would never install. That fired a
phantom HIGH (tqdm 4.9.0, GHSA-r7q7-xcjw-qx8q) plus an idna finding on the
OHM Patchwatch radar, even though the live deployment runs patched versions.

Add `tqdm>=4.66.3` and `idna>=3.15` to anchor the resolver to the patched
range. osv-scanner now reports zero findings. No direct-import / schema /
API / config change; deployed installs already satisfy the floors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 07:56:14 -07:00
4 changed files with 35 additions and 2 deletions
+24
View File
@@ -23,6 +23,30 @@ skip versions are the composition of each intervening adjacent
release's steps in order — no A-to-B path is pre-computed beyond
that.
## 0.31.5 — 2026-06-03
**Patch — supply-chain hygiene: pin security floors on two unbounded
*transitive* dependencies so vulnerability scanners stay anchored to the
patched range. No direct-import, schema, API, config, overlay, or secret
change; deployed installs already satisfy these floors, so no rebuild or
redeploy is required to become compliant. No upgrade steps.**
`backend/requirements.txt` declares only loose (`>=`) direct constraints
and ships no compiled lockfile. osv-scanner v2 resolves the *transitive*
graph and, for any unpinned transitive package, pins it to its **minimum**
published version — surfacing CVEs in ancient releases that `pip install`
would never actually choose. Two such phantoms were firing:
- **`tqdm`** (pulled by `google-generativeai`) resolved to `4.9.0` (2016),
flagging `GHSA-r7q7-xcjw-qx8q` (HIGH) and friends — fixed in 4.66.3.
- **`idna`** (pulled by `httpx` / `anthropic`) resolved to `3.9.0`,
flagging `GHSA-65pc-fj4g-8rjx` — fixed in 3.15.
Adding `tqdm>=4.66.3` and `idna>=3.15` anchors the resolver to the patched
range. The live deployment already runs patched versions (e.g. tqdm 4.67.x);
this only corrects what the scanner *sees*. The proper long-term fix is a
fully-compiled lockfile — tracked separately.
## 0.31.4 — 2026-06-01
**Patch — bug fix + UI polish: secondary buttons that were invisible on
+1 -1
View File
@@ -1 +1 @@
0.31.4
0.31.5
+9
View File
@@ -9,3 +9,12 @@ google-generativeai>=0.8
openai>=1.50
PyYAML>=6.0
bcrypt>=4.2
# Security floors on unbounded *transitive* deps (not direct imports). osv-scanner
# resolves an unpinned transitive package to its MINIMUM PyPI version, which surfaces
# CVEs in ancient releases pip would never actually install. These floors keep the
# Patchwatch radar (and any scan) anchored to the patched range.
# tqdm <- google-generativeai ; GHSA-r7q7-xcjw-qx8q et al., fixed in 4.66.3
# idna <- httpx / anthropic ; GHSA-65pc-fj4g-8rjx, fixed in 3.15
tqdm>=4.66.3
idna>=3.15
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "rfc-app-frontend",
"private": true,
"version": "0.31.4",
"version": "0.31.5",
"type": "module",
"scripts": {
"dev": "vite",