Skip to content

Move all three CodeQL action pins to v4.37.4 atomically - #364

Merged
samrusani merged 1 commit into
mainfrom
chore/codeql-4.37.4-atomic
Aug 14, 2026
Merged

Move all three CodeQL action pins to v4.37.4 atomically#364
samrusani merged 1 commit into
mainfrom
chore/codeql-4.37.4-atomic

Conversation

@samrusani

Copy link
Copy Markdown
Owner

Supersedes #348, #350, #352. Close those as superseded once this lands.

Why they cannot merge individually

Two independent blockers, either sufficient on its own.

CodeQL refuses a split version. From the CI log on #348: Loaded a configuration file for version '4.37.3', but running version '4.37.4'. Both CodeQL jobs fail on all three PRs. Whichever merged first would leave main's security scanning broken.

The atomic-pin guard fires. test_ci_action_dependency_carrier_uses_exact_atomic_pins asserts the three refs are identical and that each carries the literal version comment.

On the guard, because the distinction matters

A previous dependency backlog in this repo retired two mutation guards silently by moving a value a hardcoded digest depended on. That is the same shape as this guard, so it was the first thing checked.

This time it did not go quiet. It failed loudly and caught a real defect.

So the constants are updated deliberately rather than the guard being softened into deriving the pin from the workflow. The equality-across-three-copies is the atomicity property that just proved its worth. Weakening it would delete the thing that worked.

Re-checked for vacuity after updating: reverting one of the three workflow pins turns it red, restoring turns it green.

Digest provenance

Dereferenced from upstream rather than taken from the PR. Both tags are annotated, so a single-hop read returns the tag object; both followed to the commit.

v4.37.3 -> e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81   (matches what was committed)
v4.37.4 -> f205ea1c3313d32999d8d6a48b4f6530d4437b38   (matches what is applied)

Known, not fixed here

Two latent instances of the same pattern: this test asserts the actions/checkout digest 19 times, and test_phase5_enterprise_handoff_truth.py:488 embeds it inside a multi-line string literal, which is the harder one to spot. A future actions/checkout bump hits both. The repo already solved this correctly twice, in test_single_tenant_deployment.py:544 and test_least_privilege_deployment_workflow.py:257, which derive the pin from the workflow.

Verification

4544 unit passed, 2 skipped. Do not merge on a green unit suite alone — the unit suite sees the digest mismatch but cannot see the split-version failure. Both CodeQL (python) and CodeQL (javascript) must be green on this branch.

Supersedes #348, #350 and #352, which cannot be merged individually. Two
independent reasons, and either alone is sufficient.

CodeQL refuses to run on a split version. The CI log on #348 says it plainly:
"Loaded a configuration file for version '4.37.3', but running version
'4.37.4'". Both CodeQL jobs fail on all three PRs, so whichever merged first
would leave main's security scanning broken until the other two followed.

And test_ci_action_dependency_carrier_uses_exact_atomic_pins asserts the three
refs are identical and that each carries the literal version comment. That guard
fired on all three PRs. It is worth being precise about what happened, because
this repository has been burned by the opposite: a previous dependency backlog
retired two mutation guards silently, by moving a value some hardcoded digest
depended on. This time the guard did not go quiet. It failed loudly and it
caught a real defect. So the constants are updated deliberately here rather than
the guard being softened into deriving the pin from the workflow, because the
equality-across-three-copies IS the atomicity property that just proved its
worth.

Digests dereferenced from upstream rather than taken from the PR. Both tags are
annotated, so a single-hop read returns the tag object; both were followed to
the commit. v4.37.3 is e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 and matches what
was committed. v4.37.4 is f205ea1c3313d32999d8d6a48b4f6530d4437b38 and matches
what is applied.

The guard was re-checked for vacuity after the update: reverting one of the
three workflow pins turns it red, restoring turns it green.

Two latent instances of the same hardcoded-digest pattern remain and are not
touched here. The same test asserts the actions/checkout digest 19 times, and
test_phase5_enterprise_handoff_truth.py embeds that digest inside a multi-line
string literal, which is the harder one to notice. A future actions/checkout
bump hits both. Worth knowing that the repository already solved this correctly
twice, in test_single_tenant_deployment.py and
test_least_privilege_deployment_workflow.py, which derive the pin from the
workflow instead.

Verified: 4544 unit passed, 2 skipped.
@samrusani
samrusani merged commit 3dfb611 into main Aug 14, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant