Problem
After #234 lands, the two CodeQL workflows are aligned on the same major and same SHA (github/codeql-action v4.36.0), but they still scan overlapping inputs under different query suites on every PR and push to main:
| Workflow |
Trigger |
Languages scanned |
Query suite |
.github/workflows/codeql.yml |
push/pull_request to main |
python |
security-and-quality |
.github/workflows/codeql-advanced.yml |
push/pull_request to main + weekly schedule: |
python + actions |
default |
Every PR therefore runs two Python CodeQL analyses. They produce divergent SARIF (different rule sets), waste CI minutes on overlapping findings, and undermine the "one source of truth for CodeQL config" framing.
Reproducer
grep -nE '^(on:| (push|pull_request|schedule):)' .github/workflows/codeql.yml .github/workflows/codeql-advanced.yml
# Both files trigger on push and pull_request to main.
# After #234 merges:
grep -n 'codeql-action' .github/workflows/codeql*.yml
# Both pin to the same SHA, confirming this is now a configuration overlap, not a version drift.
On any PR touching Python, the Actions tab will show two Analyze (python) jobs from the two workflows, scanning the same source tree under different query suites.
Acceptance criteria
Pick one of the two consolidation strategies below and ship it:
Strategy A: single workflow (preferred)
Strategy B: scope codeql-advanced.yml to schedule-only
Either strategy
Why this is a follow-up, not a #234 expansion
#234's objective is SHA-pinning + major-alignment for supply-chain hygiene (closes #217). Consolidating two workflows changes the findings posture of the repository (different query suites scan different things), which is a separate review surface that deserves its own diff and its own SARIF audit. Bundling it into #234 would mix supply-chain hygiene with security-policy changes and make the round budget on #234 unmanageable.
This follows the same pattern as #217 -> #234 itself: file a tracked follow-up the moment the deferral is identified, so the deferral is credible.
Surfaced from
Related
Problem
After #234 lands, the two CodeQL workflows are aligned on the same major and same SHA (
github/codeql-actionv4.36.0), but they still scan overlapping inputs under different query suites on every PR and push tomain:.github/workflows/codeql.ymlpush/pull_requesttomainpythonsecurity-and-quality.github/workflows/codeql-advanced.ymlpush/pull_requesttomain+ weeklyschedule:python+actionsEvery PR therefore runs two Python CodeQL analyses. They produce divergent SARIF (different rule sets), waste CI minutes on overlapping findings, and undermine the "one source of truth for CodeQL config" framing.
Reproducer
On any PR touching Python, the Actions tab will show two
Analyze (python)jobs from the two workflows, scanning the same source tree under different query suites.Acceptance criteria
Pick one of the two consolidation strategies below and ship it:
Strategy A: single workflow (preferred)
.github/workflows/codeql-advanced.yml..github/workflows/codeql.yml, expand the language matrix to includeactions(currentlypython-only).security-and-qualityquery suite fromcodeql.yml.schedule:cron stanza so weekly extended scans still run.Analyze (python)runs once, not twice.Strategy B: scope
codeql-advanced.ymlto schedule-only.github/workflows/codeql-advanced.yml, remove thepush:andpull_request:triggers; keep onlyschedule:andworkflow_dispatch:.codeql.yml.codeql.yml'sAnalyze (python)runs on PR open.Either strategy
py/unsafe-cyclic-importsuppression behaviour from security(codeql): suppress py/unsafe-cyclic-import on simulation triple (closes #215) #216..github/workflows/codeql*.yml, ORcodeql-advanced.yml'son:keys are a subset of{schedule, workflow_dispatch}).mainto confirm the consolidation is a no-op for findings (or document the intended delta).Why this is a follow-up, not a #234 expansion
#234's objective is SHA-pinning + major-alignment for supply-chain hygiene (closes #217). Consolidating two workflows changes the findings posture of the repository (different query suites scan different things), which is a separate review surface that deserves its own diff and its own SARIF audit. Bundling it into #234 would mix supply-chain hygiene with security-policy changes and make the round budget on #234 unmanageable.
This follows the same pattern as #217 -> #234 itself: file a tracked follow-up the moment the deferral is identified, so the deferral is credible.
Surfaced from
.github/workflows/codeql-advanced.yml(workflow duplication on PR/push).Related
py/unsafe-cyclic-importsuppression -- the suppression posture must remain identical post-consolidation)