Repository navigation
ci: drop redundant CodeQL scan, fix Scorecard ARM64 incompatibility #1398
Description
Summary
Two changes to align CI with our ARM64-only runner policy and remove a redundant security scanner: drop codeql.yml (duplicate coverage, incompatible with ARM64), and replace the docker-based step in scorecard.yml with a native ARM64 binary (currently failing every run).
Motivation
Triggered by a CI audit (config review + 100-run history analysis + upstream verification). Two issues found:
-
codeql.ymlruns onubuntu-24.04(x86_64), the only workflow in the repo not on our-armfleet. This isn't a bug to fix by switching runners —codeql-actiondoes not support Linux ARM64 today (confirmed via upstream: open, unmerged github/codeql-action#4072 "Add support for Linux Arm64 runners", and open issue github/codeql-action#2700 "Linux ARM: exec format error"; the officialcodeql-cli-binariesreleases ship onlycodeql-linux64.zip, no arm64 asset). The job only scans theactionslanguage (workflow YAML, not our Rust source). Comparing the CodeQLactionsquery pack against thezizmoraudits already running inci.yml(min-severity: high) shows every CodeQL rule maps to an existing zizmor audit already covering this repo on ARM64:CodeQL actions query (CWE) Zizmor audit (already running) CodeInjection / EnvVarInjection (077, 094) template-injection,insecure-commandsUseOfKnownVulnerableAction (1395) known-vulnerable-actionsMissingActionsPermissions (275) excessive-permissions,undocumented-permissionsExcessiveSecretsExposure / SecretsInArtifacts (312) secrets-outside-env,unredacted-secrets,secrets-inheritCachePoisoning x3 (349) cache-poisoningUnpinnedActionsTag / ArtifactPoisoning (829) unpinned-uses,stale-action-refs,impostor-commit,artipackedThe one real gap:
zizmoris set tomin-severity: high, which suppresses medium-severity findings that CodeQL doesn't filter. -
scorecard.ymlhas failed every scheduled run since at least 2026-07-20 (5/5 most recent runs checked, weekly cadence) withexec /scorecard-action: exec format error. Confirmed root cause:ghcr.io/ossf/scorecard-action:v2.4.4publishes an amd64-only image (docker manifest inspectreports"architecture": "amd64", single-platform manifest, not a manifest list) run onubuntu-24.04-arm. Upstream has an open, unresolved issue for this: ossf/scorecard-action#1697 "Provide ARM64 docker image" (latest release v2.4.4, 2026-07-23, no fix). No maintained third-party action fills this gap (checked GitHub repo search and web search; all forks found are stale, 0-star, no ARM fix).Two things confirmed this is safe to fix without losing anything today:
api.scorecard.dev/projects/github.com/clouatre-labs/aptu-coderreturns 404 — there is no published Scorecard score currently, consistent with every run failing for the past month.publish_results: truehas not been producing a result to publish.- Our OpenSSF Best Practices "silver" badge (
bestpractices.devproject 12275,badge_level: silver) is a separate, self-attested program with no dependency on this workflow orpublish_results.
Removal Safety (CodeQL)
Verified this won't be silently re-enforced after removal:
- Required checks on both the classic branch protection API and the "Protect main branch" ruleset list only
CI Result— CodeQL is not required on either. - Org
clouatre-labshas a "GitHub recommended" code-scanning-default-setup config, but it's attached to zero repos and isn't the org default (code-security/configurations/17/repositoriesempty;.../configurations/defaultsreturns[]). - This repo's
code-scanning/default-setupreportsnot-configuredand only activates via explicit action, not automatically. - Zero open CodeQL alerts exist in the Security tab — nothing left dangling.
Proposed Changes
1. Remove codeql.yml
- Delete
.github/workflows/codeql.yml. - In
.github/workflows/ci.yml, change thezizmorstep'smin-severityfromhightomediumto retain equivalent severity coverage.
2. Replace the scorecard-action docker step with a native ARM64 binary
Same pattern already used for commitlint (native tool install, no docker container) and cargo-semver-checks (checksum-verified binary download) in ci.yml:
- Download
scorecard_<version>_linux_arm64.tar.gzfrom the ossf/scorecard releases (notscorecard-action— the core CLI ships a real linux/arm64 build; verify against the release'sscorecard_checksums.txt). - Run
ENABLE_SARIF=1 scorecard --repo=github.com/clouatre-labs/aptu-coder --format=sarif --show-details > results.sarif(confirmed:options/options.gogates SARIF output behind theENABLE_SARIFenv var — this is exactly whatscorecard-action's Dockerfile sets internally before invoking the same binary). - Upload via the existing
github/codeql-action/upload-sarifaction (confirmed arch-agnostic:runs: using: node24, no docker). - Drop
publish_results: true— no CLI equivalent exists (it's implemented as an OIDC-signed call insidescorecard-actionitself, not exposed as a CLI flag), and there is currently no published score to preserve (see Motivation).
Constraints
- No change to required status checks;
CI Resultremains the sole required check. zizmorand the replacement scorecard step must stay onubuntu-24.04-arm, consistent with the rest of the fleet.- Scorecard binary download must be checksum-verified before execution, matching the existing
cargo-semver-checkspattern. - If a public OSSF Scorecard badge/API listing is wanted later, that requires either an
ubuntu-24.04exception forpublish_resultsor waiting on Provide ARM64 docker image ossf/scorecard-action#1697 — out of scope here.
Acceptance Criteria
-
.github/workflows/codeql.ymlremoved -
zizmorstep inci.ymlset tomin-severity: medium -
scorecard.ymlno longer usesossf/scorecard-action; runs the checksum-verifiedlinux_arm64CLI binary onubuntu-24.04-arm - SARIF output uploaded via
github/codeql-action/upload-sarif, visible in the Security tab -
scorecard.ymlrun succeeds (noexec format error) - No
.github/workflows/**references tocodeql-action/initorcodeql-action/analyzeremain
Activity
ci: drop redundant CodeQL scan, fix Scorecard ARM64 incompatibility (#…