Repository navigation
fix(ci): align CodeQL action versions - #189
Conversation
Signed-off-by: John McChesney TenEyck Jr <59268465+jmcte@users.noreply.github.com>
athena-omt
left a comment
There was a problem hiding this comment.
Independent Qwen-family review — APPROVE, bound to head 97da72f.
Reviewer provenance: athena-omt, actual runtime model qwen-token-plan/qwen3.8-max (Qwen3.8-max, Qwen family), effort: think ultra (runtime-attested; provider-attested run e70c0f00-56e5-400b-8f1c-830e1984a3b6, rerouted=false). OpenAI authored this patch; this review is genuine different-family independent assessment, not a rubber stamp. Read-only phase completed before publication; no source changes made by reviewer.
What the delta does and why it is correct:
- Paired init/analyze alignment (v4.38.3). Both security workflows previously pinned codeql-action/init at 2892aa5e (v4.38.2) while analyze ran at 24c54180 (v4.38.3); the mismatched pair failed main run 38690287761. This PR moves both init pins to 24c54180a607b1449ed407dd24f251e4e9147c8d, which I independently verified dereferences from the official github/codeql-action tag v4.38.3 (tag object cee97f8 → commit 24c5418). init and analyze must run the same action version within a CodeQL job; the delta restores that invariant in security.yml and security-pr.yml with no change to events, permissions, runner placement, or release behavior.
- Regression guard over the actual workflows. The new test in tests/action-pins.test.ts parses the real .github/workflows/security.yml and security-pr.yml (not fixtures) and asserts, per job, that every github/codeql-action/* reference resolves to a single immutable SHA. It provably fails the old baseline (init 2892aa5e vs analyze 24c54180 = 2 versions in one job) and passes the aligned state, so the mismatch class cannot silently return.
Evidence and honest limits:
- Verified via GitHub API at exact head: changed-file set and blob SHAs match the intended diff; no existing reviews or unresolved threads.
- Required CI at head: PR Fast CI run 38691110382 (attempt 2) fully green — CI Gate, Fast Checks, Validate Action Pins, Secrets, Governance, Description, Dependabot-only, attest. Attempt-1 failures were the PR-description gate and are superseded. AI Attestation green. Public Security Baseline (codeql/dependency-review/sbom) is intentionally event-skipped on pull_request and earns zero execution credit; trusted-main CodeQL on the aligned pair remains post-merge verification and is NOT claimed passed here.
- Author-reported suite results (270 tests / 24 files, typecheck, build, 42 pins) are corroborated only by the green head CI; the reviewer did not rerun them locally.
Non-blocking observations (follow-ups, not delta defects): the guard enforces per-job consistency rather than cross-file parity (acceptable — the per-run init/analyze pair is the actual correctness constraint); it reads workflow paths relative to cwd (fine under repo-root vitest); security-pr.yml codeql on self-hosted runners predates this PR.
Verdict: content-clean, no introduced defects at exact head 97da72f. Merge execution remains with the repository owner.
Summary
initstayed on 4.38.2 whileanalyzemoved to 4.38.3. Align both security workflows'initactions with the existing immutable 4.38.3 analyze SHA.Governing Issue
Closes #188
Validation
npm run check(typecheck and 270 tests across 24 files),npm run build,bash scripts/ci/check-action-pins.sh(42 pins),git diff --check.autoreviewagainst the intended PR diff with no accepted/actionable findings.~/.codex/skills/autoreview/scripts/autoreview --mode localwith the bounded regression context, before committing the unchanged intended three-file diff againstf29b0e0eb2760a5a4564be50ae2e09d9f3aa06aa: exit 0, no findings, patch correct (0.98 confidence).v4.38.3resolves to24c54180a607b1449ed407dd24f251e4e9147c8d.CI Gate; actual current-head results remain authoritative.Bootstrap Governance
Material change: no
Merge Automation
Auto-merge is unavailable for this task because the user expressly prohibited enabling it. The fallback merge-readiness policy applies: passing required checks, genuine eligible non-author code-owner approval, resolved conversations and a normal maintainer merge.
Notes