Summary
Three metadatastician repos run two CodeQL configurations at once, and they are mutually
exclusive. GitHub's default setup is enabled and an advanced workflow
(CodeQL Security Analysis) is committed. The default setup succeeds; the advanced workflow runs
to completion and is then rejected at SARIF upload:
##[error]Code Scanning could not process the submitted SARIF file:
CodeQL analyses from advanced configurations cannot be processed when the default setup is enabled
Measured on main on 2026-09-23:
| repo |
CodeQL (default setup) |
CodeQL Security Analysis (advanced) |
failing before? |
metadatastician/first-post |
✅ success |
❌ failure |
no — was startup_failure, newly visible |
metadatastician/harvard-dehallucinator |
✅ success |
❌ failure |
yes, pre-existing |
metadatastician/metadatastician-governance |
✅ success |
❌ failure |
yes, pre-existing |
How it surfaced
These were found while landing the estate-wide codeql-action re-pin (hyperpolymath/standards#1005).
On first-post the advanced workflow had been dead at startup — its actions.lock recorded
github/codeql-action@v4.37.9 while the workflow pinned @v4.38.1, and GitHub compares those by
literal string, so the run never started. Fixing the pin brought the workflow back to life, and it
immediately hit the same conflict the other two already had.
This is not a regression. Nothing was broken by the re-pin; a workflow that had not executed for
some time started executing and revealed a configuration conflict that was already there.
failure here means "did not complete", not "found a vulnerability" — no security finding is
implied by any of these three reds, and none of them is currently producing alerts from the
advanced configuration.
Why it should not be left
The advanced workflow is doing real work — checkout, build, database creation, the full analysis —
and then throwing the result away at the last step. So the repo pays the whole cost of a scan,
reports a red check, and gets no alerts from it. Meanwhile the default setup is quietly doing
the actual scanning. The red is also indistinguishable at a glance from a genuine security failure,
which is the more expensive problem.
The decision to make
These are mutually exclusive by design; one of them has to go. Both are defensible:
- Keep default setup, delete the advanced workflow — simplest, zero maintenance, and it is what
is actually producing alerts today. Loses per-language/query customisation and any custom
queries: or paths-ignore: the workflow carries.
- Keep the advanced workflow, disable default setup — needed if any of the three requires a
custom query pack, a non-default language matrix, or build-mode control. Requires a settings
change per repo (Settings → Code security → Code scanning → default setup → disable).
⚠ Whichever way it goes, it should be the same choice in all three, and ideally an estate rule
in standards, since this will recur every time a repo gains default setup while carrying a
committed CodeQL workflow.
Acceptance criteria
Not in scope
The four repos still showing an unrelated startup_failure on main — betlang
(Comprehensive Quality Gates, Test), universal-chat-extractor (Secret Scanner), burble
(Hypatia Security Scan, OSSF Scorecard), first-post (SonarQube). All were verified dead on the
pre-merge parent as well; they are separate defects with separate causes.
🤖 Generated with Claude Code
https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm
Summary
Three
metadatasticianrepos run two CodeQL configurations at once, and they are mutuallyexclusive. GitHub's default setup is enabled and an advanced workflow
(
CodeQL Security Analysis) is committed. The default setup succeeds; the advanced workflow runsto completion and is then rejected at SARIF upload:
Measured on
mainon 2026-09-23:CodeQL(default setup)CodeQL Security Analysis(advanced)metadatastician/first-poststartup_failure, newly visiblemetadatastician/harvard-dehallucinatormetadatastician/metadatastician-governanceHow it surfaced
These were found while landing the estate-wide codeql-action re-pin (
hyperpolymath/standards#1005).On
first-postthe advanced workflow had been dead at startup — itsactions.lockrecordedgithub/codeql-action@v4.37.9while the workflow pinned@v4.38.1, and GitHub compares those byliteral string, so the run never started. Fixing the pin brought the workflow back to life, and it
immediately hit the same conflict the other two already had.
This is not a regression. Nothing was broken by the re-pin; a workflow that had not executed for
some time started executing and revealed a configuration conflict that was already there.
failurehere means "did not complete", not "found a vulnerability" — no security finding isimplied by any of these three reds, and none of them is currently producing alerts from the
advanced configuration.
Why it should not be left
The advanced workflow is doing real work — checkout, build, database creation, the full analysis —
and then throwing the result away at the last step. So the repo pays the whole cost of a scan,
reports a red check, and gets no alerts from it. Meanwhile the default setup is quietly doing
the actual scanning. The red is also indistinguishable at a glance from a genuine security failure,
which is the more expensive problem.
The decision to make
These are mutually exclusive by design; one of them has to go. Both are defensible:
is actually producing alerts today. Loses per-language/query customisation and any custom
queries:orpaths-ignore:the workflow carries.custom query pack, a non-default language matrix, or build-mode control. Requires a settings
change per repo (Settings → Code security → Code scanning → default setup → disable).
⚠ Whichever way it goes, it should be the same choice in all three, and ideally an estate rule
in
standards, since this will recur every time a repo gains default setup while carrying acommitted CodeQL workflow.
Acceptance criteria
decision in
standardsso new repos inherit it. Owner call; blocks AC2.metadatastician/first-post. Apply AC1. Afterwardsmainshows exactly one CodeQLworkflow and it concludes
success.metadatastician/harvard-dehallucinator. Same, verified the same way.metadatastician/metadatastician-governance. Same, verified the same way.confirm no custom
queries:,paths-ignore:,config-file:or extra language is being lost.If something is, that repo takes the other arm of AC1 and the reason is recorded here.
committed CodeQL workflow, so this is caught at the point it is introduced rather than the next
time someone reads a red check. If a repo is a deliberate exception, it carries a documented
exemption rather than a permanent red.
Not in scope
The four repos still showing an unrelated
startup_failureonmain—betlang(Comprehensive Quality Gates, Test),
universal-chat-extractor(Secret Scanner),burble(Hypatia Security Scan, OSSF Scorecard),
first-post(SonarQube). All were verified dead on thepre-merge parent as well; they are separate defects with separate causes.
🤖 Generated with Claude Code
https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm