Goal and scope
Clear the Node 20 deprecation warnings and update the stale Trivy scanner. Non-goals: no change to scan policy or the signature-verification logic. Another change is fixing the rescan signature loop; this PR only touches the action-pin and Trivy-digest lines in container-rescan.yml (lines 47, 52, 176).
Change map and risk
Mechanical pin updates, all to commit SHAs or image digests:
docker/login-actionv3.7.0 → v4.7.0 (81c6f93d…)docker/setup-buildx-actionv3.12.0 → v4.4.1 (f87e5991…). The v4 major removed deprecated inputs; none of our uses pass them (buildkitd-config-inlineis still supported).aquasec/trivy0.72.0 → 0.76.1 (sha256:790fd66d…) in CI scans andphlo plugin check(src/phlo/cli/commands/plugin/check.py).
Risk: a newer Trivy database or matcher can report new findings, which surface as policy failures instead of being hidden.
Verification
-
pytest tests/tooling/test_container_security_workflows.py tests/tooling/test_generated_image_publication.py tests/tooling/test_postgres_concurrency_workflow.py tests/cli/test_cli_plugin.py tests/scripts/test_container_security.py→ 132 passed. -
A Trivy 0.76.1 JSON report of a locally built MinIO image passes
container_security.py apply-policy(report format compatible). -
Not checked: the workflows themselves run only on GitHub; CI on this PR covers
ci.yml. -
Not applicable: dependency pin update, no behaviour fix.
Recovery and maintainer decisions
Revert restores the previous pins. No publication or settings change.
Activity
302Reviewed the pin bump at 662af24.
Verified against upstream
docker/login-action@81c6f93d…is tagv4.7.0anddocker/setup-buildx-action@f87e5991…is tagv4.4.1; bothaction.ymlfiles declareruns.using: node24, and every input used here still exists (registry/username/password,buildkitd-config-inline). The v4.0.0 notes list dependency updates only.aquasec/trivy@sha256:790fd66d…is the published multi-arch index digest for 0.76.1, so the amd64 and arm64 lanes pull the same image. The report contract stays put in 0.76.1:SchemaVersion = 2(writer.go) andArtifactType/Metadata.ImageIDare still emitted (report.go), so theci.ymljq assertion andapply-policykeep working. The image still runs as root, so thephlo plugin checkcache mount at/root/.cache/trivyremains writable.- The sweep is complete: all six
docker/login-actionand sixdocker/setup-buildx-actionreferences and all eight Trivy references (seven workflow invocations plus theTRIVY_IMAGEconstant) are updated, and the one pin assertion intests/tooling/test_postgres_concurrency_workflow.pymoved with them. I found no stale pin in the other workflows, theMakefile, the CLI, or the tests and docs I checked. - Waiver fingerprints hash only
(VulnerabilityID, PkgName)pairs (_vulnerability_evidence_sha256), so existing user waivers are not invalidated by the version change; newly matched CVEs still fail closed, as the description says.
No actionable findings.
Still unverified: at review time only pr / changed lanes, containers / safety / container contracts and security / introduced dependency risk had finished (all successful); the Python and container-build jobs were still queued. The lanes that exercise the new pins for real — build-service-images.yml, container-rescan.yml, upstream-image-visibility.yml and the release staging/promotion workflows — only run on GitHub, so this PR's CI has not yet exercised a 0.76.1 scan or a v4 login.
github.comment.notice: falsein.github/pr-lens.ymlturns this note off