ci(security): real scans, tokenless — dependabot, pip-audit over the lock, CodeQL (#291) - #320
Merged
Conversation
…lock, CodeQL (#291) The audit's first run surfaced PYSEC-2026-3552 in cryptography 49.0.0 (fixed in 50.0.0); the lock is upgraded in the same commit so the scan ships green.
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
…sts, the preflight-guard invariant, pyyaml declared
Contributor
Author
|
Review round applied:
Note for post-merge: the five packages/* Dependabot entries share the root uv.lock — if Dependabot's log shows them inert or erroring, collapse to the root entry (tracked in the gate doc). |
This was referenced Aug 17, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Part of #291 (the pre-launch gate's code-quality-scans item, which the gate blocks on): the repo has never had static analysis or dependency scanning —
SONAR_TOKEN/SNYK_TOKENwere names for secrets nobody created. This PR configures both classes of scan using what a public repository gets for free, onGITHUB_TOKENalone:.github/dependabot.yml— weekly, grouped updates for all six Python manifests (root + fivepackages/*) and thegithub-actionsecosystem. A manifest Dependabot doesn't see is a distribution whose dependencies update silently..github/workflows/security.yml— adependenciesjob that auditsuv exportof the locked set (pip-audit; the exact pinned versions deployments get), and acodeqljob (Python) withsecurity-events: write). Runs on push, PRs, and weekly — CVEs are published against already-pinned versions, not only against new commits. Deliberately NOT thetestjob: themainruleset requires thetest` context, and a security finding is information about the state of the world, not a verdict on a proposed change — so these jobs surface findings without gating merges.uv.lock— the audit's first run (locally, verified end-to-end) surfaced PYSEC-2026-3552 in cryptography 49.0.0, fixed in 50.0.0; upgraded in the same commit so the scan ships green rather than red on day one. Full suite green on the upgrade.tests/test_security_scans.py(red-first, 6 tests) pins: every manifest directory watched + schedules present, the audit reads the lock's export with the six own-distributions excluded, CodeQL init+analyze on Python with the upload permission, the weekly schedule trigger, and — the honest part — that no scan step references any secret at all (SONAR_TOKEN/SNYK_TOKENnever existed; a scan that needs them is a scan that doesn't run).Tests-first evidence
Red run: 6/6 failed (no configs existed). Green: 6 passed, full suite 2847 passed / 1 skipped. The pip-audit step was verified end-to-end locally: found the cryptography advisory on the pre-upgrade lock, clean on the upgraded one.
Gates
uv run ruff check keel tests packages— All checks passed!uv run mypy— Success: no issues found in 236 source filesuv run pytest -q— 2847 passed, 1 skippedScope check