Report Details

Executive Summary

This project has moderate but actionable security exposure: 4 HIGH, 10 MEDIUM, and 3 LOW findings across 15 packages, with the most consequential issues clustered in urllib3 (three HIGHs) and a HIGH in black. Three remediation strategies were evaluated: a maximum‑coverage wave that eliminates nearly all fixable CVEs but has the highest expected breakage (breakage score 0.45, exposure 0.038) because it includes riskier upgrades such as pytest; a balanced wave that removes almost all HIGHs and most MEDIUMs with lower regression risk (breakage 0.15, exposure 0.076); and a minimum‑breakage option that targets only the immediate HIGHs (resolving four CVEs with two upgrades) but leaves many issues open and a substantially higher residual exposure (exposure 0.392). Upgrade risk is concentrated in pytest and virtualenv—these are the largest single breakage contributors—while most other candidates (black, pip, urllib3) have lower probable breakage. The most important, immediate remediation is to upgrade urllib3 and black to their fixed versions to remove the critical HIGHs with minimal churn; follow that by a staged, balanced upgrade wave that avoids the highest‑risk pytest jump until adequate testing is in place, or accept the maximum‑coverage path only if you can tolerate the higher breakage and invest in broader compatibility testing. Finally, a pip CVE lacks a vendor fix and should be mitigated operationally (pin/restrict pip usage and monitor for fixes).

Vulnerabilities by Severity

Severity Package Installed ID Fixed In
HIGH black 25.9.0 GHSA-3936-cmfr-pm3m 26.3.1
HIGH urllib3 2.5.0 GHSA-2xpw-w6gg-jr37 2.6.0
HIGH urllib3 2.5.0 GHSA-38jv-5279-wg99 2.6.3
HIGH urllib3 2.5.0 GHSA-gm62-xv2j-4w53 2.6.0
MEDIUM Werkzeug 3.1.3 GHSA-29vq-49wr-vm6x 3.1.6
MEDIUM Werkzeug 3.1.3 GHSA-87hc-h4r5-73f7 3.1.5
MEDIUM Werkzeug 3.1.3 GHSA-hgf8-39gv-g3f2 3.1.4
MEDIUM filelock 3.20.0 GHSA-qmgc-5h2g-mvrw 3.20.3
MEDIUM filelock 3.20.0 GHSA-w853-jp5j-5j7f 3.20.1
MEDIUM pip 25.3 GHSA-58qw-9mgm-455v none known
MEDIUM pytest 8.4.2 GHSA-6w46-j5rx-g56g 9.0.3
MEDIUM python-dotenv 1.2.1 GHSA-mf9w-mj56-hr94 1.2.2
MEDIUM requests 2.32.5 GHSA-gc5v-m9x4-r6x2 2.33.0
MEDIUM virtualenv 20.35.4 GHSA-597g-3phw-6986 20.36.1
LOW Pygments 2.19.2 GHSA-5239-wwwm-4pmq 2.20.0
LOW flask 3.1.2 GHSA-68rp-wp8r-4726 3.1.3
LOW pip 25.3 GHSA-6vgw-5pg2-w6jp 26.0

Currency Signals

Package Installed Latest Latest Release Cadence (days) Signals
PyYAML 6.0.3 6.0.3 2025-09-25T21:31:46Z 360.8 slow_release_cadence
bandit 1.8.6 1.9.4 2026-02-25T06:44:13Z 58.5 none
breathe 4.36.0 4.36.0 2025-02-22T18:36:01Z 278.5 slow_release_cadence
flask 3.1.2 3.1.3 2026-02-19T05:00:56Z 170.6 none
flask-cors 6.0.1 6.0.2 2025-12-12T20:31:41Z 72.9 none
flask-socketio 5.5.1 5.6.1 2026-02-21T13:07:51Z 127.0 none
myst-parser 4.0.1 5.0.0 2026-01-15T09:08:16Z 157.9 major_version_lag:1
openai 2.6.1 2.32.0 2026-04-15T22:28:17Z 8.3 none
pyoslog 1.2.0 1.2.0 2025-05-28T08:32:44Z 247.2 slow_release_cadence
python-dotenv 1.2.1 1.2.2 2026-03-01T16:00:25Z 85.3 none
python-socketio 5.14.3 5.16.1 2026-02-06T23:42:05Z 25.1 none
sphinx 8.2.3 9.1.0 2025-12-31T15:09:25Z 6.9 major_version_lag:1
sphinx-autodoc-typehints 3.5.2 3.10.2 2026-04-15T22:09:47Z 5.7 none
sphinx-rtd-theme 3.0.2 3.1.0 2026-01-12T16:03:28Z 115.0 none
sphinxcontrib-mermaid 1.0.0 2.0.1 2026-03-05T14:10:40Z 24.9 major_version_lag:1

Used-Symbol Summary

Unresolved usage flags: - dynamic_import (PyYAML): run_agent.py:64

Impact Summary

Package Upgrade Breakage Confidence
Pygments 2.19.2 -> 2.20.0 LOW (0.12) MEDIUM
Werkzeug 3.1.3 -> 3.1.4 LOW (0.05) MEDIUM
Werkzeug 3.1.3 -> 3.1.8 LOW (0.12) MEDIUM
black 25.9.0 -> 26.3.1 LOW (0.15) MEDIUM
filelock 3.20.0 -> 3.20.1 LOW (0.05) MEDIUM
filelock 3.20.0 -> 3.29.0 LOW (0.12) MEDIUM
flask 3.1.2 -> 3.1.3 NONE (0.02) HIGH
pip 25.3 -> 26.0 LOW (0.15) MEDIUM
pip 25.3 -> 26.1 LOW (0.15) MEDIUM
pytest 8.4.2 -> 9.0.3 MEDIUM (0.45) MEDIUM
python-dotenv 1.2.1 -> 1.2.2 LOW (0.12) MEDIUM
requests 2.32.5 -> 2.33.0 LOW (0.12) MEDIUM
requests 2.32.5 -> 2.33.1 LOW (0.12) MEDIUM
urllib3 2.5.0 -> 2.6.0 LOW (0.12) MEDIUM
urllib3 2.5.0 -> 2.6.3 LOW (0.12) MEDIUM
virtualenv 20.35.4 -> 20.36.1 LOW (0.15) MEDIUM
virtualenv 20.35.4 -> 21.2.4 MEDIUM (0.45) MEDIUM

Dependency Graph

/Users/paulzanna/Github/Staff CacheControl CacheControl filelock filelock CacheControl->filelock pytest pytest CacheControl->pytest requests requests CacheControl->requests Flask Flask python-dotenv python-dotenv Flask->python-dotenv werkzeug werkzeug Flask->werkzeug Flask-SocketIO Flask-SocketIO Flask-SocketIO->Flask Pygments Pygments Sphinx Sphinx Sphinx->Pygments Sphinx->pytest Sphinx->requests Staff Staff Staff->Flask Staff->Pygments Werkzeug Werkzeug Staff->Werkzeug black black Staff->black Staff->filelock flask flask Staff->flask pip pip Staff->pip Staff->pytest Staff->python-dotenv Staff->requests urllib3 urllib3 Staff->urllib3 virtualenv virtualenv Staff->virtualenv babel babel babel->pytest boolean.py boolean.py boolean.py->black boolean.py->pytest breathe breathe breathe->pytest execnet execnet execnet->pytest flask->python-dotenv flask->werkzeug flask-cors flask-cors flask-cors->Werkzeug flask-cors->flask flask-socketio flask-socketio flask-socketio->Flask httpx httpx pygments pygments httpx->pygments idna idna idna->pytest license-expression license-expression license-expression->pytest markdown-it-py markdown-it-py markdown-it-py->pytest mdit-py-plugins mdit-py-plugins mdit-py-plugins->pytest mypy mypy mypy->pip myst-parser myst-parser myst-parser->pygments myst-parser->pytest packageurl-python packageurl-python packageurl-python->black packageurl-python->pytest pip-api pip-api pip-api->pip pip_audit pip_audit pip_audit->pytest pip_audit->requests platformdirs platformdirs platformdirs->pytest pluggy pluggy pluggy->pytest pre_commit pre_commit pre_commit->virtualenv psutil psutil psutil->black psutil->pytest psutil->requests psutil->virtualenv pytest->pygments pytest->requests pytest-asyncio pytest-asyncio pytest-asyncio->pytest pytest-benchmark pytest-benchmark pytest-benchmark->pytest pytest-cov pytest-cov pytest-cov->pytest pytest-cov->virtualenv pytest-mock pytest-mock pytest-mock->pytest pytest-xdist pytest-xdist pytest-xdist->filelock pytest-xdist->pytest python-engineio python-engineio python-engineio->requests python-socketio python-socketio python-socketio->requests pytokens pytokens pytokens->black pytokens->pytest requests->urllib3 responses responses responses->pytest responses->requests responses->urllib3 rich rich rich->pygments roman-numerals-py roman-numerals-py roman-numerals-py->pytest setuptools setuptools setuptools->filelock setuptools->pip setuptools->pytest setuptools->virtualenv simple-websocket simple-websocket simple-websocket->pytest sphinx sphinx sphinx->Pygments sphinx->pytest sphinx->requests sphinx-autodoc-typehints sphinx-autodoc-typehints sphinx-autodoc-typehints->pytest sphinxcontrib-applehelp sphinxcontrib-applehelp sphinxcontrib-applehelp->pytest sphinxcontrib-devhelp sphinxcontrib-devhelp sphinxcontrib-devhelp->pytest sphinxcontrib-htmlhelp sphinxcontrib-htmlhelp sphinxcontrib-htmlhelp->pytest sphinxcontrib-jsmath sphinxcontrib-jsmath sphinxcontrib-jsmath->pytest sphinxcontrib-mermaid sphinxcontrib-mermaid sphinxcontrib-mermaid->pytest sphinxcontrib-qthelp sphinxcontrib-qthelp sphinxcontrib-qthelp->pytest sphinxcontrib-serializinghtml sphinxcontrib-serializinghtml sphinxcontrib-serializinghtml->pytest tqdm tqdm tqdm->pytest tqdm->requests types-requests types-requests types-requests->urllib3 virtualenv->filelock virtualenv->pytest
Key:HighMediumLowNo fix available

Ranked Remediation Paths

Balanced

Exposure0.076Breakage0.15ConfidenceMEDIUM

This path prioritizes fixing all HIGH-severity issues and the majority of MEDIUMs while avoiding the highest breakage upgrade (pytest 9.0.3). It uses candidate versions from the impact reports that have low-to-moderate breakage scores to keep regression risk manageable. One medium-severity pytest CVE is deferred to reduce churn during the upgrade wave; operational hardening should be used for the pip no-fix CVE. Confidence is medium because most impact reports are complete but several items have unresolved usage flags.

Package From To Fixes
python-dotenv 1.2.1 1.2.2 GHSA-mf9w-mj56-hr94
flask 3.1.2 3.1.3 GHSA-68rp-wp8r-4726
requests 2.32.5 2.33.0 GHSA-gc5v-m9x4-r6x2
urllib3 2.5.0 2.6.3 GHSA-2xpw-w6gg-jr37, GHSA-38jv-5279-wg99, GHSA-gm62-xv2j-4w53
pip 25.3 26.0 GHSA-6vgw-5pg2-w6jp
black 25.9.0 26.3.1 GHSA-3936-cmfr-pm3m
Werkzeug 3.1.3 3.1.8 GHSA-29vq-49wr-vm6x, GHSA-87hc-h4r5-73f7, GHSA-hgf8-39gv-g3f2
Pygments 2.19.2 2.20.0 GHSA-5239-wwwm-4pmq
filelock 3.20.0 3.29.0 GHSA-qmgc-5h2g-mvrw, GHSA-w853-jp5j-5j7f
virtualenv 20.35.4 20.36.1 GHSA-597g-3phw-6986
No Fix AvailableGHSA-58qw-9mgm-455v Open: GHSA-6w46-j5rx-g56g

Maximum Coverage

Exposure0.038Breakage0.45ConfidenceMEDIUM

This path applies all candidate upgrades available in the impact reports that map to fixes, eliminating every fixable CVE in the project. It accepts higher-risk upgrades (notably pytest) to maximize coverage; impact reports show pytest as the largest single breakage contributor. The trade-off is more testing and possible compatibility work during rollout. The pip CVE with no vendor fix is left as a no-fix and should be mitigated by operational controls.

Package From To Fixes
python-dotenv 1.2.1 1.2.2 GHSA-mf9w-mj56-hr94
flask 3.1.2 3.1.3 GHSA-68rp-wp8r-4726
requests 2.32.5 2.33.0 GHSA-gc5v-m9x4-r6x2
urllib3 2.5.0 2.6.3 GHSA-2xpw-w6gg-jr37, GHSA-38jv-5279-wg99, GHSA-gm62-xv2j-4w53
pip 25.3 26.0 GHSA-6vgw-5pg2-w6jp
black 25.9.0 26.3.1 GHSA-3936-cmfr-pm3m
Werkzeug 3.1.3 3.1.8 GHSA-29vq-49wr-vm6x, GHSA-87hc-h4r5-73f7, GHSA-hgf8-39gv-g3f2
pytest 8.4.2 9.0.3 GHSA-6w46-j5rx-g56g
Pygments 2.19.2 2.20.0 GHSA-5239-wwwm-4pmq
filelock 3.20.0 3.29.0 GHSA-qmgc-5h2g-mvrw, GHSA-w853-jp5j-5j7f
virtualenv 20.35.4 20.36.1 GHSA-597g-3phw-6986
No Fix AvailableGHSA-58qw-9mgm-455v

Minimum Breakage

Exposure0.392Breakage0.15ConfidenceMEDIUM

This path upgrades only the packages that address the highest-severity findings (all urllib3 HIGH CVEs and the BLACK HIGH CVE), minimizing the number of changes while removing immediate critical exposure. Both upgrades are present in the impact reports with low-to-moderate breakage estimates. Remaining CVEs (including a pip CVE with no fix) are left for a later maintenance window to avoid broader churn. Recommended mitigations for the no-fix pip CVE: restrict pip usage in production images, pin pip where needed, and monitor for vendor fixes.

Package From To Fixes
urllib3 2.5.0 2.6.3 GHSA-2xpw-w6gg-jr37, GHSA-38jv-5279-wg99, GHSA-gm62-xv2j-4w53
black 25.9.0 26.3.1 GHSA-3936-cmfr-pm3m
No Fix AvailableGHSA-58qw-9mgm-455v Open: GHSA-29vq-49wr-vm6x, GHSA-5239-wwwm-4pmq, GHSA-597g-3phw-6986, GHSA-68rp-wp8r-4726, GHSA-6vgw-5pg2-w6jp, GHSA-6w46-j5rx-g56g, GHSA-87hc-h4r5-73f7, GHSA-gc5v-m9x4-r6x2, GHSA-hgf8-39gv-g3f2, GHSA-mf9w-mj56-hr94, GHSA-qmgc-5h2g-mvrw, GHSA-w853-jp5j-5j7f

Limitations and Confidence Notes