v2.16.1
Changed
- Every third-party GitHub Action in this repo’s workflows and in
examples/workflows/is now pinned to a full commit SHA with a# vX.Y.Zcomment (issue #955). A tag can be repointed by a compromised action publisher, andpublish-image.ymlpushes the container image with a write token, so the mutable@vNtags were the real exposure.renovate.jsonnow extendshelpers:pinGitHubActionDigestsand also coversexamples/workflows/, so Renovate keeps the SHAs and comments current. Workflows copied from the examples are now pinned as well. Snippets indocs/still show@vNtags because Renovate cannot maintain them, so pin those to commit SHAs yourself if you copy them. - The
e2e-gatecheck is now a required branch-protection status check onmain. A push to a non-draftrelease/*PR now runs the live e2e legs on that SHA, where before it reported a passing gate without running them.workflow_dispatchand scheduled runs reporte2e-gate (manual)so they cannot satisfy the required check. - The
e2e-livedeployment environment gate is removed from the live e2e matrix job, and the weekly credential check can now also be started withworkflow_dispatch.max_cost_usdstill caps spend per run.
Fixed
- The
deep-preflightgit clone-auth check no longer fails with “Repository not found” in CI (issue #962).git ls-remoteinherited the checked-out repo’s working directory, so the job’s ownGITHUB_TOKENheader was sent alongside the reviewer token’s header. The check now runs isolated from ambient checkout credentials. - The e2e verifier no longer reports a false
product_failurefor a finding that overflowed into the review body. The body-fallback check is now scoped to individual bullets in the body’s “Findings not attached to specific lines” section. Python (3.14)no longer gets stuck at “Expected” on PRs that touch no Python files. Thepaths:filter onlint.yml’spull_requesttrigger is removed.
There are no changes to the review engine or to action inputs and outputs in this release.
See CHANGELOG.md for full technical detail.