ci: run the dependency audit on dev pull requests - #2189
Conversation
security.yml triggered on push and pull_request to master only. Every exec PR targets dev, and master receives it later at a release promotion, so the dependency audit never ran on a pull request at all. Confirmed on the live queue: all 23 open PRs target dev, and no audit or security check is reported on any of them. The effect is that a vulnerable dependency could be introduced in a PR, merge into dev and ship in a beta with nothing having looked at it. The weekly cron still covers master, but only after the fact and on the branch the work has already left. Verified before enabling so this does not block the open queue: pip-audit against the dev environment reports no known vulnerabilities, so the job goes green on dev today. Prompted by taos-website hitting the same class from the other direction, where the audit read requirements.txt and missed the file that actually carried the test dependency, and a pinned pytest turned out to carry PYSEC-2026-1845. taOS is not exposed to that one (pytest is pinned >=9.1.1, above the 9.0.3 fix) and its audit does install the dev extras, so the gap here is the trigger rather than the coverage.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe security workflow now runs on pull requests targeting both ChangesSecurity workflow coverage
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Previous Review Summary (commit 4082bbd)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 4082bbd)Status: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Reviewed by step-3.7-flash · Input: 119.5K · Output: 11.9K · Cached: 242.8K |
PR Summary by QodoCI: run dependency audit on dev pull requests
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
Code Review by Qodo
1.
|
Folding qodo's finding on #2189, verified against the tree: ci.yml carries a concurrency block and security.yml did not. That gap was harmless while the audit only ran on master, and started to matter the moment this PR made it run on every dev PR update, since each push would otherwise leave an orphaned audit running. Same guard as ci.yml: pushes to master and dev are never cancelled so the branch record stays complete; PR runs cancel their superseded predecessors.
|
Merging on my own verification, stated explicitly: no bot has reviewed this head. The concurrency fold created a new commit and there are zero bot comments after it, so the earlier ticks on this PR cover the previous tree, not this one. What I verified rather than what CI reported: The fold is qodo's finding, checked before folding. It said the Security workflow now runs on nearly every PR update with no concurrency cancellation, unlike ci.yml. Confirmed against the tree: The change proves itself. Verified green before proposing, so it does not block the queue. Required checks all present and green: test (3.12), test (3.13), lint, spa-build, plus dependency-audit. Nothing failing. Nothing is renamed by this change, so no required context is orphaned. |
* ci: run the dependency audit on dev pull requests security.yml triggered on push and pull_request to master only. Every exec PR targets dev, and master receives it later at a release promotion, so the dependency audit never ran on a pull request at all. Confirmed on the live queue: all 23 open PRs target dev, and no audit or security check is reported on any of them. The effect is that a vulnerable dependency could be introduced in a PR, merge into dev and ship in a beta with nothing having looked at it. The weekly cron still covers master, but only after the fact and on the branch the work has already left. Verified before enabling so this does not block the open queue: pip-audit against the dev environment reports no known vulnerabilities, so the job goes green on dev today. Prompted by taos-website hitting the same class from the other direction, where the audit read requirements.txt and missed the file that actually carried the test dependency, and a pinned pytest turned out to carry PYSEC-2026-1845. taOS is not exposed to that one (pytest is pinned >=9.1.1, above the 9.0.3 fix) and its audit does install the dev extras, so the gap here is the trigger rather than the coverage. * ci: cancel superseded security runs, matching ci.yml Folding qodo's finding on jaylfc#2189, verified against the tree: ci.yml carries a concurrency block and security.yml did not. That gap was harmless while the audit only ran on master, and started to matter the moment this PR made it run on every dev PR update, since each push would otherwise leave an orphaned audit running. Same guard as ci.yml: pushes to master and dev are never cancelled so the branch record stays complete; PR runs cancel their superseded predecessors.
* ci: run the dependency audit on dev pull requests security.yml triggered on push and pull_request to master only. Every exec PR targets dev, and master receives it later at a release promotion, so the dependency audit never ran on a pull request at all. Confirmed on the live queue: all 23 open PRs target dev, and no audit or security check is reported on any of them. The effect is that a vulnerable dependency could be introduced in a PR, merge into dev and ship in a beta with nothing having looked at it. The weekly cron still covers master, but only after the fact and on the branch the work has already left. Verified before enabling so this does not block the open queue: pip-audit against the dev environment reports no known vulnerabilities, so the job goes green on dev today. Prompted by taos-website hitting the same class from the other direction, where the audit read requirements.txt and missed the file that actually carried the test dependency, and a pinned pytest turned out to carry PYSEC-2026-1845. taOS is not exposed to that one (pytest is pinned >=9.1.1, above the 9.0.3 fix) and its audit does install the dev extras, so the gap here is the trigger rather than the coverage. * ci: cancel superseded security runs, matching ci.yml Folding qodo's finding on jaylfc#2189, verified against the tree: ci.yml carries a concurrency block and security.yml did not. That gap was harmless while the audit only ran on master, and started to matter the moment this PR made it run on every dev PR update, since each push would otherwise leave an orphaned audit running. Same guard as ci.yml: pushes to master and dev are never cancelled so the branch record stays complete; PR runs cancel their superseded predecessors.
The gap
security.ymltriggers onpushandpull_requestto master only. Every exec PR targets dev, and master receives the work later at a release promotion.So the dependency audit has never run on a pull request. Confirmed against the live queue rather than inferred:
devA vulnerable dependency introduced in a PR could merge into dev and ship in a beta with nothing having looked at it. The weekly cron still covers master, but after the fact and on the branch the work has already left.
The change
One line:
pull_request.branchesbecomes[master, dev]. Nothing is renamed, so no required-context is orphaned, and thedependency-auditjob itself is untouched.Verified before enabling
pip-audit --ignore-vuln CVE-2026-3219against the dev environment reports no known vulnerabilities, so this goes green on dev today and does not block the open queue.Why now
taos-websitehit the same class from the other direction: its audit readrequirements.txtand missed the file that actually carried the test dependency, and the pinned pytest turned out to carry PYSEC-2026-1845.taOS is not exposed to that CVE (pytest pinned
>=9.1.1, above the 9.0.3 fix) and its audit does install the dev extras viapip install -e ".[dev,proxy,worker]". So our gap is the trigger, not the coverage.Summary by CodeRabbit
masteranddevbranches are covered.