|
|
|
@@ -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
|
|
|
|
|