Context
GitHub reports 69 open Dependabot vulnerabilities on the default branch: 3 critical, 33 high, 25 moderate, 8 low.
https://github.com/BitPolito/bitcoin-academy/security/dependabot
Issue #90 previously resolved all open alerts (merged May 2026), so this backlog has accumulated since — a sign that dependency updates are not part of the routine.
Tasks
Acceptance criteria
- Zero critical and high alerts, or each remaining one has a written justification
- All test suites green after the upgrades
- RAG evaluation shows no regression where ML/parsing dependencies moved
- An agreed, configured update cadence
Note
Prioritise reachability over raw count. Three critical alerts in a transitive dev-only dependency matter less than one high alert in the PDF parsing path that processes untrusted user uploads — and this application parses user-supplied PDFs, PPTX and DOCX, which is exactly the kind of input that makes parser vulnerabilities exploitable.
Context
GitHub reports 69 open Dependabot vulnerabilities on the default branch: 3 critical, 33 high, 25 moderate, 8 low.
https://github.com/BitPolito/bitcoin-academy/security/dependabot
Issue #90 previously resolved all open alerts (merged May 2026), so this backlog has accumulated since — a sign that dependency updates are not part of the routine.
Tasks
services/ai(uv/pip),apps/web(npm),workers/qvac-service(npm)Acceptance criteria
Note
Prioritise reachability over raw count. Three critical alerts in a transitive dev-only dependency matter less than one high alert in the PDF parsing path that processes untrusted user uploads — and this application parses user-supplied PDFs, PPTX and DOCX, which is exactly the kind of input that makes parser vulnerabilities exploitable.