Skip to content

chore(ci): bump the github-actions group across 1 directory with 8 updates - #371

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/github-actions-b24444c2e3
Closed

chore(ci): bump the github-actions group across 1 directory with 8 updates#371
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/github-actions-b24444c2e3

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 27, 2026

Copy link
Copy Markdown
Contributor

Bumps the github-actions group with 8 updates in the / directory:

Package From To
actions/attest-build-provenance 4.1.0 4.2.2
docker/setup-buildx-action 4.1.0 4.2.0
docker/build-push-action 7.2.0 7.3.0
github/codeql-action/init 4.36.2 4.37.6
github/codeql-action/autobuild 4.36.2 4.37.6
github/codeql-action/analyze 4.36.2 4.37.6
ossf/scorecard-action 2.4.3 2.4.4
github/codeql-action/upload-sarif 4.36.2 4.37.6

Updates actions/attest-build-provenance from 4.1.0 to 4.2.2

Release notes

Sourced from actions/attest-build-provenance's releases.

v4.2.2

[!NOTE] As of version 4, actions/attest-build-provenance is simply a wrapper on top of actions/attest.

Existing applications may continue to use the attest-build-provenance action, but new implementations should use actions/attest instead.

What's Changed

Full Changelog: actions/attest-build-provenance@v4.1.1...v4.2.2

v4.1.1

[!NOTE] As of version 4, actions/attest-build-provenance is simply a wrapper on top of actions/attest.

Existing applications may continue to use the attest-build-provenance action, but new implementations should use actions/attest instead.

What's Changed

Full Changelog: actions/attest-build-provenance@v4.1.0...v4.1.1

Commits

Updates docker/setup-buildx-action from 4.1.0 to 4.2.0

Release notes

Sourced from docker/setup-buildx-action's releases.

v4.2.0

Full Changelog: docker/setup-buildx-action@v4.1.0...v4.2.0

Commits
  • bb05f3f Merge pull request #580 from docker/dependabot/npm_and_yarn/docker/actions-to...
  • 321c814 [dependabot skip] chore: update generated content
  • b9a36ef build(deps): bump @​docker/actions-toolkit from 0.91.0 to 0.92.0
  • ebeab24 Merge pull request #570 from docker/dependabot/npm_and_yarn/undici-6.27.0
  • 5c7b8ae [dependabot skip] chore: update generated content
  • 037e618 build(deps): bump undici from 6.25.0 to 6.27.0
  • 66080e5 Merge pull request #577 from docker/dependabot/npm_and_yarn/sigstore-4.1.1
  • 409aef0 Merge pull request #562 from docker/dependabot/npm_and_yarn/js-yaml-4.2.0
  • 49c6e42 build(deps): bump sigstore from 4.1.0 to 4.1.1
  • 2211273 [dependabot skip] chore: update generated content
  • Additional commits viewable in compare view

Updates docker/build-push-action from 7.2.0 to 7.3.0

Release notes

Sourced from docker/build-push-action's releases.

v7.3.0

Full Changelog: docker/build-push-action@v7.2.0...v7.3.0

Commits
  • 53b7df9 Merge pull request #1572 from docker/dependabot/npm_and_yarn/docker/actions-t...
  • 154298c [dependabot skip] chore: update generated content
  • cb1238b chore(deps): Bump @​docker/actions-toolkit from 0.91.0 to 0.92.0
  • 24f845d Merge pull request #1566 from docker/dependabot/npm_and_yarn/js-yaml-4.2.0
  • 9c69730 [dependabot skip] chore: update generated content
  • bc3a3a5 Merge pull request #1574 from docker/dependabot/github_actions/aws-actions/co...
  • a82c504 chore(deps): Bump js-yaml from 4.1.1 to 4.3.0
  • 0285a75 Merge pull request #1573 from docker/dependabot/github_actions/actions/cache-...
  • c6ad2a3 Merge pull request #1575 from docker/dependabot/github_actions/actions/checko...
  • d37484f Merge pull request #1564 from docker/dependabot/npm_and_yarn/undici-6.27.0
  • Additional commits viewable in compare view

Updates github/codeql-action/init from 4.36.2 to 4.37.6

Release notes

Sourced from github/codeql-action/init's releases.

v4.37.6

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

v4.37.5

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

v4.37.4

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

v4.37.3

No user facing changes.

v4.37.2

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023
  • The CodeQL Action can now make use of configured private registries in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. #4007

v4.37.1

  • Upcoming breaking change: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. #3956
  • Update default CodeQL bundle version to 2.26.1. #4019

v4.37.0

  • Update default CodeQL bundle version to 2.26.0. #3995
  • In addition to the existing input format, the config-file input for the codeql-action/init step will soon support a new [owner/]repo[@ref][:path] format. All components except the repository name are optional. If omitted, owner defaults to the same owner as the repository the analysis is running for, ref to main, and path to .github/codeql-action.yaml. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. #3973

v4.36.3

No user facing changes.

Changelog

Sourced from github/codeql-action/init's changelog.

CodeQL Action Changelog

See the releases page for the relevant changes to the CodeQL CLI and language packs.

[UNRELEASED]

No user facing changes.

4.37.6 - 04 Aug 2026

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

4.37.5 - 03 Aug 2026

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

4.37.4 - 29 Jul 2026

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

4.37.3 - 22 Jul 2026

No user facing changes.

4.37.2 - 21 Jul 2026

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023
  • The CodeQL Action can now make use of configured private registries in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. #4007

4.37.1 - 16 Jul 2026

  • Upcoming breaking change: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. #3956
  • Update default CodeQL bundle version to 2.26.1. #4019

4.37.0 - 08 Jul 2026

  • Update default CodeQL bundle version to 2.26.0. #3995
  • In addition to the existing input format, the config-file input for the codeql-action/init step will soon support a new [owner/]repo[@ref][:path] format. All components except the repository name are optional. If omitted, owner defaults to the same owner as the repository the analysis is running for, ref to main, and path to .github/codeql-action.yaml. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. #3973

4.36.3 - 01 Jul 2026

No user facing changes.

4.36.2 - 04 Jun 2026

  • Cache CodeQL CLI version information across Actions steps. #3943
  • Reduce requests while waiting for analysis processing by using exponential backoff when polling SARIF processing status. #3937
  • Update default CodeQL bundle version to 2.25.6. #3948

... (truncated)

Commits
  • 5595cca Merge pull request #4071 from github/update-v4.37.6-6a9359a1b
  • ec9c757 Add change note for PR 4070
  • 45c8742 Update changelog for v4.37.6
  • 6a9359a Merge pull request #4070 from github/mbg/remote-address/change-file-default
  • 065cdc0 Change DEFAULT_CONFIG_FILE_NAME
  • f99dd5a Merge pull request #4066 from github/dependabot/npm_and_yarn/js-yaml-5.2.2
  • 1804b21 Merge pull request #4068 from github/mergeback/v4.37.5-to-main-d1ba80a1
  • 3020a2f Rebuild
  • 93c3a5a Update changelog and version after v4.37.5
  • d1ba80a Merge pull request #4067 from github/update-v4.37.5-1cd4d01d5
  • Additional commits viewable in compare view

Updates github/codeql-action/autobuild from 4.36.2 to 4.37.6

Release notes

Sourced from github/codeql-action/autobuild's releases.

v4.37.6

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

v4.37.5

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

v4.37.4

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

v4.37.3

No user facing changes.

v4.37.2

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023
  • The CodeQL Action can now make use of configured private registries in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. #4007

v4.37.1

  • Upcoming breaking change: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. #3956
  • Update default CodeQL bundle version to 2.26.1. #4019

v4.37.0

  • Update default CodeQL bundle version to 2.26.0. #3995
  • In addition to the existing input format, the config-file input for the codeql-action/init step will soon support a new [owner/]repo[@ref][:path] format. All components except the repository name are optional. If omitted, owner defaults to the same owner as the repository the analysis is running for, ref to main, and path to .github/codeql-action.yaml. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. #3973

v4.36.3

No user facing changes.

Changelog

Sourced from github/codeql-action/autobuild's changelog.

CodeQL Action Changelog

See the releases page for the relevant changes to the CodeQL CLI and language packs.

[UNRELEASED]

No user facing changes.

4.37.6 - 04 Aug 2026

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

4.37.5 - 03 Aug 2026

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

4.37.4 - 29 Jul 2026

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

4.37.3 - 22 Jul 2026

No user facing changes.

4.37.2 - 21 Jul 2026

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023
  • The CodeQL Action can now make use of configured private registries in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. #4007

4.37.1 - 16 Jul 2026

  • Upcoming breaking change: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. #3956
  • Update default CodeQL bundle version to 2.26.1. #4019

4.37.0 - 08 Jul 2026

  • Update default CodeQL bundle version to 2.26.0. #3995
  • In addition to the existing input format, the config-file input for the codeql-action/init step will soon support a new [owner/]repo[@ref][:path] format. All components except the repository name are optional. If omitted, owner defaults to the same owner as the repository the analysis is running for, ref to main, and path to .github/codeql-action.yaml. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. #3973

4.36.3 - 01 Jul 2026

No user facing changes.

4.36.2 - 04 Jun 2026

  • Cache CodeQL CLI version information across Actions steps. #3943
  • Reduce requests while waiting for analysis processing by using exponential backoff when polling SARIF processing status. #3937
  • Update default CodeQL bundle version to 2.25.6. #3948

... (truncated)

Commits
  • 5595cca Merge pull request #4071 from github/update-v4.37.6-6a9359a1b
  • ec9c757 Add change note for PR 4070
  • 45c8742 Update changelog for v4.37.6
  • 6a9359a Merge pull request #4070 from github/mbg/remote-address/change-file-default
  • 065cdc0 Change DEFAULT_CONFIG_FILE_NAME
  • f99dd5a Merge pull request #4066 from github/dependabot/npm_and_yarn/js-yaml-5.2.2
  • 1804b21 Merge pull request #4068 from github/mergeback/v4.37.5-to-main-d1ba80a1
  • 3020a2f Rebuild
  • 93c3a5a Update changelog and version after v4.37.5
  • d1ba80a Merge pull request #4067 from github/update-v4.37.5-1cd4d01d5
  • Additional commits viewable in compare view

Updates github/codeql-action/analyze from 4.36.2 to 4.37.6

Release notes

Sourced from github/codeql-action/analyze's releases.

v4.37.6

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

v4.37.5

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

v4.37.4

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

v4.37.3

No user facing changes.

v4.37.2

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023
  • The CodeQL Action can now make use of configured private registries in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. #4007

v4.37.1

  • Upcoming breaking change: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. #3956
  • Update default CodeQL bundle version to 2.26.1. #4019

v4.37.0

  • Update default CodeQL bundle version to 2.26.0. #3995
  • In addition to the existing input format, the config-file input for the codeql-action/init step will soon support a new [owner/]repo[@ref][:path] format. All components except the repository name are optional. If omitted, owner defaults to the same owner as the repository the analysis is running for, ref to main, and path to .github/codeql-action.yaml. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. #3973

v4.36.3

No user facing changes.

Changelog

Sourced from github/codeql-action/analyze's changelog.

CodeQL Action Changelog

See the releases page for the relevant changes to the CodeQL CLI and language packs.

[UNRELEASED]

No user facing changes.

4.37.6 - 04 Aug 2026

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

4.37.5 - 03 Aug 2026

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

4.37.4 - 29 Jul 2026

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

4.37.3 - 22 Jul 2026

No user facing changes.

4.37.2 - 21 Jul 2026

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023
  • The CodeQL Action can now make use of configured private registries in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. #4007

4.37.1 - 16 Jul 2026

  • Upcoming breaking change: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. #3956
  • Update default CodeQL bundle version to 2.26.1. #4019

4.37.0 - 08 Jul 2026

  • Update default CodeQL bundle version to 2.26.0. #3995
  • In addition to the existing input format, the config-file input for the codeql-action/init step will soon support a new [owner/]repo[@ref][:path] format. All components except the repository name are optional. If omitted, owner defaults to the same owner as the repository the analysis is running for, ref to main, and path to .github/codeql-action.yaml. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. #3973

4.36.3 - 01 Jul 2026

No user facing changes.

4.36.2 - 04 Jun 2026

  • Cache CodeQL CLI version information across Actions steps. #3943
  • Reduce requests while waiting for analysis processing by using exponential backoff when polling SARIF processing status. #3937
  • Update default CodeQL bundle version to 2.25.6. #3948

... (truncated)

Commits
  • 5595cca Merge pull request #4071 from github/update-v4.37.6-6a9359a1b
  • ec9c757 Add change note for PR 4070
  • 45c8742 Update changelog for v4.37.6
  • 6a9359a Merge pull request #4070 from github/mbg/remote-address/change-file-default
  • 065cdc0 Change DEFAULT_CONFIG_FILE_NAME
  • f99dd5a Merge pull request #4066 from github/dependabot/npm_and_yarn/js-yaml-5.2.2
  • 1804b21 Merge pull request #4068 from github/mergeback/v4.37.5-to-main-d1ba80a1
  • 3020a2f Rebuild
  • 93c3a5a Update changelog and version after v4.37.5
  • d1ba80a Merge pull request #4067 from github/update-v4.37.5-1cd4d01d5
  • Additional commits viewable in compare view

Updates ossf/scorecard-action from 2.4.3 to 2.4.4

Release notes

Sourced from ossf/scorecard-action's releases.

v2.4.4

What's Changed

This update bumps the Scorecard version to the v5.5.0 release. For a complete list of changes, please refer to the Scorecard v5.4.0 release notes and the Scorecard v5.5.0 release notes.

Full Changelog: ossf/scorecard-action@v2.4.3...v2.4.4

Commits
  • 2d11466 Bump action tag for v2.4.4 release (#1688)
  • 1bd3285 🌱 Bump the docker-images group across 1 directory with 2 updates (#1...
  • 913edce 🌱 Bump github.com/containerd/containerd from 1.7.32 to 1.7.33 (#1671)
  • 0957b8f 🌱 Bump golang.org/x/net from 0.56.0 to 0.57.0 (#1680)
  • f0061eb 🌱 Bump google.golang.org/grpc from 1.81.1 to 1.82.1 (#1687)
  • 20ee732 🌱 Bump github.com/sigstore/cosign/v2 from 2.6.3 to 2.6.4 (#1685)
  • 9f295ef 🌱 Bump the github-actions group with 6 updates (#1686)
  • 69bf556 🌱 Bump github.com/sigstore/sigstore-go from 1.1.4 to 1.2.0 (#1681)
  • 94e8b96 🌱 Bump github.com/sigstore/rekor from 1.5.0 to 1.5.2 (#1673)
  • c7a1b37 🌱 Bump github.com/sigstore/fulcio from 1.8.5 to 1.8.6 (#1675)
  • Additional commits viewable in compare view

Updates github/codeql-action/upload-sarif from 4.36.2 to 4.37.6

Release notes

Sourced from github/codeql-action/upload-sarif's releases.

v4.37.6

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

v4.37.5

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

v4.37.4

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

v4.37.3

No user facing changes.

v4.37.2

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023
  • The CodeQL Action can now make use of configured private registries in Default Setup to retrieve CodeQL configuration files from remote repositories that require authentication. This will allow customers to store their CodeQL configuration in a single repository that can then be referenced by Default Setup workflows in other repositories. We expect to roll this and other, related changes out to everyone in July. #4007

v4.37.1

  • Upcoming breaking change: Add a deprecation warning for customers using CodeQL version 2.20.6 and earlier. These versions of CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise Server 3.16, and will be unsupported by the next minor release of the CodeQL Action. #3956
  • Update default CodeQL bundle version to 2.26.1. #4019

v4.37.0

  • Update default CodeQL bundle version to 2.26.0. #3995
  • In addition to the existing input format, the config-file input for the codeql-action/init step will soon support a new [owner/]repo[@ref][:path] format. All components except the repository name are optional. If omitted, owner defaults to the same owner as the repository the analysis is running for, ref to main, and path to .github/codeql-action.yaml. Support for this format ships in this version of the CodeQL Action, but will only be enabled over the coming weeks. #3973

v4.36.3

No user facing changes.

Changelog

Sourced from github/codeql-action/upload-sarif's changelog.

CodeQL Action Changelog

See the releases page for the relevant changes to the CodeQL CLI and language packs.

[UNRELEASED]

No user facing changes.

4.37.6 - 04 Aug 2026

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere.

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github-actions Pull requests that update GitHub Actions labels Jul 27, 2026
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github-actions Pull requests that update GitHub Actions labels Jul 27, 2026
@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown

Semgrep Scan Results

Repository: api | Commit: adcd5aa

Check Status Details
⚠️ Semgrep Warning 1 warning(s), 5 total

Scanned at 2026-08-10 09:30 UTC

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown

Security Scan Results

Repository: api | Commit: adcd5aa

Check Status Details
✅ Secret Scan Pass No secrets detected
⚠️ Dependencies (Trivy) High 1 high, 3 total
⚠️ Dependencies (Grype) High 1 high, 3 total
📦 SBOM Generated 523 components (CycloneDX)

Scanned at 2026-08-10 09:31 UTC

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown

📊 Statement coverage

Measured on the documented included set (see docs/TESTING.md → Coverage scope). Observe-only — no regression gate is enforced yet.

Scope This PR main baseline Δ
Included set (Gold-tier denominator) 90.4% 90.4% +0.0 pp
Full set (whole repo, transparency) 28.4% 28.4% +0.0 pp

Baseline: main @ e9dbb9d

Cre-eD added a commit that referenced this pull request Aug 3, 2026
…lities 8 → 10) (#372)

## Summary

OpenSSF Scorecard's **Vulnerabilities** check is at **8/10** with 8 open
advisories. This PR takes it to **10/10**.

- **7 fixed by version bump** — 3 Go, 4 Python (all severities, nothing
deferred).
- **1 unfixable by design** — `GO-2026-5932` has `introduced: 0` and no
fix event in OSV. Declared `not_affected` with reachability evidence.
- **2 stale suppressions retired** — `GO-2022-0635` / `GO-2022-0646` no
longer apply; removed rather than carried forward.

`osv-scanner scan source -r .` → **No issues found** (was 8). Scorecard
runs the same scanner (`osvscanner.DoScan` via `clients/osv.go`) against
the repo root, so the check flips on merge to `main`.

## Fixed

| Package | Old → New | Advisory | Sev | Where |
|---|---|---|---|---|
| `github.com/klauspost/compress` | 1.18.4 → 1.18.7 | GO-2026-5841 /
GHSA-259r-337f-4rfw — OOB read in `s2` | HIGH | `go.mod` (indirect) |
| `google.golang.org/grpc` | 1.81.1 → 1.82.1 | GO-2026-6061 /
GHSA-hrxh-6v49-42gf — xDS RBAC + HTTP/2 server | HIGH | `go.mod`
(indirect) |
| `click` | 8.1.8 → 8.4.2 | PYSEC-2026-2132 / CVE-2026-7246 | MEDIUM |
`docs/requirements.txt` |
| `pymdown-extensions` | 10.21.3 → 11.0.1 | GHSA-9xwg-3r6f-jcx2 /
CVE-2026-61632 — `b64` path traversal | MEDIUM | `docs/requirements.txt`
|
| `setuptools` | 82.0.1 → 83.0.0 | PYSEC-2026-3447 / CVE-2026-59890 |
MEDIUM | `docs/requirements.txt` |
| `soupsieve` | 2.8.3 → 2.9.1 | PYSEC-2026-3071 / CVE-2026-49476 —
memory exhaustion | HIGH | `docs/requirements.txt` |
| `soupsieve` | 2.8.3 → 2.9.1 | PYSEC-2026-3072 / CVE-2026-49477 — ReDoS
in selector parser | HIGH | `docs/requirements.txt` |

Side-effect bumps pulled in by the above: `x/crypto` 0.53.0 → 0.54.0,
`x/sys` 0.46.0 → 0.47.0, `x/term` 0.44.0 → 0.45.0,
`opentelemetry-operations-go/detectors/gcp` 1.31.0 → 1.32.0,
`contrib/detectors/gcp` 1.42.0 → 1.43.0, plus the `tools.go` chain (see
*CI ordering* below).

### How the Python side was done

`docs/requirements.in` gains explicit patched floors for the four
packages, following the pattern already established for `requests` /
`urllib3` after #264 — pinning the floor in the `.in` file is what stops
a future `pip-compile` from silently resolving back to a vulnerable
version. `docs/requirements.txt` was then regenerated with `pip-compile
--allow-unsafe --generate-hashes --upgrade`.

`mkdocs-material` 9.7.7 declares `pymdown-extensions>=10.2` with no
upper bound, so the 11.x major is in range for the theme — no theme pin
change needed, and the docs site builds clean (evidence below). The
`b64` extension that carries CVE-2026-61632 is not enabled in
`docs/mkdocs.yml` at all; the bump closes the advisory rather than a
live exposure.

## Not fixable — `GO-2026-5932` (`golang.org/x/crypto/openpgp`)

> The `golang.org/x/crypto/openpgp` package is unmaintained, unsafe by
design, and has known security issues.

This is a permanent "this package should not be used" notice, not a
patchable defect. In OSV it is `introduced: 0` with **no fix event**, so
no version of `x/crypto` clears it — bumping to 0.54.0 (done here
anyway, for hygiene) changes nothing.

**Reachability:**

1. **Where in the tree** — `x/crypto` is a direct dependency, required
for `chacha20poly1305` in `pkg/api/secrets/ciphers`. The advisory covers
only `openpgp` and its six subpackages.
2. **Is it in the artifact** — no. `go list -deps ./... | grep
x/crypto/openpgp` returns nothing, and Go's linker does not emit
packages no import path reaches. The vulnerable code is not present in
any binary this repo produces.
3. **Is the vulnerable code called** — no. `govulncheck -mode=source
./...` reports **0 reachable vulnerabilities**; this advisory lands in
its "modules you require, but your code doesn't appear to call" bucket.
4. **What OpenPGP work actually runs** —
`github.com/ProtonMail/go-crypto/openpgp`, which is the maintained fork
the advisory text itself recommends as the replacement.
5. **What would change the answer** — any new import of
`x/crypto/openpgp/*`. That would flip the VEX statement to `affected`
and block the gate.

Recorded as `status: not_affected`, `justification:
vulnerable_code_not_present` in [`vex/openvex.json`](vex/openvex.json),
mirrored into [`osv-scanner.toml`](osv-scanner.toml) — Scorecard's check
has no VEX input, so the mirror is the only channel that reaches it. No
`.trivyignore`, no `# nosec`, nothing hidden.

## Re-triage of existing suppressions

Both entries that predate this PR were re-checked rather than carried
forward:

| Advisory | Was | Now | Why |
|---|---|---|---|
| GO-2022-0635 (aws-sdk-go v1 s3crypto) | `not_affected` + ignore |
`fixed`, ignore removed | `github.com/aws/aws-sdk-go` (v1) is no longer
in `go.mod` — the Pulumi upgrades dropped the last build-graph edge and
Go module pruning removed it. `osv-scanner` reported the entry as an
**unused ignore**. |
| GO-2022-0646 (same subpackage) | `not_affected` + ignore | `fixed`,
ignore removed | Same. |

VEX statements are kept one release as an audit trail; the
`osv-scanner.toml` entries are gone.

## Governance changes

- **CODEOWNERS** — `/vex/` and `/osv-scanner.toml` are now named
explicitly. A `not_affected` statement hides a real advisory from both
the scanners and the Scorecard badge; that is the same class of change
as touching a workflow, and it should not merge on a generic `*` match.
- **`docs/DEPENDENCIES.md`** — documents (a) that `osv-scanner.toml` is
a *derivative* mirror which may only carry an ID that already exists in
VEX, and (b) that every SCA pass re-triages both files, with `unused
ignores` as the removal signal. Previously the policy said suppressions
live "never in a scanner-suppression file" while `osv-scanner.toml`
existed; policy and practice now agree.
- **`osv-scanner.toml`** — added a note that `reason` must stay a
single-line TOML basic string. A newline in it makes osv-scanner discard
the **entire** config (`strings cannot contain newlines`) and silently
re-report every ignored advisory. Hit while writing this PR.

## CI ordering (`tools.go` pre-bake)

`build-setup` runs `go get $(tools.go imports)` → `go mod download` →
`go generate -tags tools` → `go mod tidy`. Because `go get` resolves
tools to *latest* and `tidy` only runs afterwards, a tool minor landing
between runs breaks `go generate` with `missing go.sum entry`. The
post-`go get` state is pre-baked into this commit so CI's `go get` is a
no-op: `go-jsonschema` 0.23.1 → 0.24.1, `go-internal` 1.14.1 → 1.15.0,
`gofumpt` 0.10.0 → 0.11.0, `x/mod` 0.37.0 → 0.38.0, `x/net` 0.56.0 →
0.57.0, `x/tools` 0.47.0 → 0.48.0, `x/telemetry` bumped.

## Dependabot reconciliation

Open alerts before this PR: 5 — `pymdown-extensions`, `setuptools`,
`soupsieve` ×2, `grpc`. All 5 are closed by the bumps above; they
auto-resolve once this lands on `main`. `click` (PYSEC-2026-2132) and
`klauspost/compress` (GO-2026-5841) were **not** alerted by Dependabot
but are flagged by OSV — fixed here too.

Open Dependabot PRs:

| PR | Disposition |
|---|---|
| #361 `soupsieve 2.8.3 → 2.8.4` | Superseded — this PR goes to 2.9.1.
Dependabot closes it automatically when the manifest lands. |
| #371, #352, #351, #334, #333, #326 | Untouched — `github-actions` /
`docker` streams, unrelated to this PR. |

No config change needed: `.github/dependabot.yml` already covers `gomod`
(/), `pip` (/docs), `docker`, and `github-actions`.

## Evidence

<details>
<summary><code>osv-scanner scan source -r .</code> — before</summary>

```
click              8.1.8    [PyPI] -> PYSEC-2026-2132
pymdown-extensions 10.21.3  [PyPI] -> GHSA-9xwg-3r6f-jcx2
setuptools         82.0.1   [PyPI] -> PYSEC-2026-3447, GHSA-h35f-9h28-mq5c
soupsieve          2.8.3    [PyPI] -> PYSEC-2026-3071, PYSEC-2026-3072,
                                      GHSA-2wc2-fm75-p42x, GHSA-836r-79rf-4m37
klauspost/compress 1.18.4   [Go]   -> GO-2026-5841
golang.org/x/crypto 0.53.0  [Go]   -> GO-2026-5932
google.golang.org/grpc 1.81.1 [Go] -> GO-2026-6061, GHSA-hrxh-6v49-42gf

osv-scanner.toml has unused ignores:
 - GO-2022-0635
 - GO-2022-0646
```
</details>

<details>
<summary><code>osv-scanner scan source -r .</code> — after</summary>

```
Scanned docs/requirements.txt file and found 36 packages
Scanned go.mod file and found 486 packages
Loaded filter from: osv-scanner.toml
GO-2026-5932 has been filtered out because: VEX not_affected
  (vulnerable_code_not_present) ...
Filtered 1 vulnerability from output

No issues found
```
</details>

<details>
<summary><code>govulncheck -mode=source ./...</code> — after</summary>

```
=== Symbol Results ===

No vulnerabilities found.

Your code is affected by 0 vulnerabilities.
This scan also found 0 vulnerabilities in packages you import and 1
vulnerability in modules you require, but your code doesn't appear to call
these vulnerabilities.
```

The 1 module-level finding is GO-2026-5932, covered above.
</details>

## Test plan

- [x] `go build ./...`
- [x] `go generate -tags tools` (post-pre-bake, matches CI's build-setup
order)
- [x] `go test ./pkg/api/secrets/... ./pkg/security/... -count=1` — all
pass
- [x] Docs built exactly as CI does it: `docker run --rm -v
$PWD/docs:/docs -w /docs python@sha256:401f6e1a... sh -c "pip install
--require-hashes -r requirements.txt && mkdocs build"` → `Documentation
built in 3.39 seconds`, hash check clean, no new warnings
- [x] `jq empty vex/openvex.json`
- [ ] CI: govulncheck, CodeQL, Semgrep, build matrix

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
@dependabot @github

dependabot Bot commented on behalf of github Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot tried to update this pull request, but something went wrong. We're looking into it, but in the meantime you can retry the update by commenting @dependabot recreate.

…dates

Bumps the github-actions group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) | `4.1.0` | `4.2.2` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `4.1.0` | `4.2.0` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | `7.2.0` | `7.3.0` |
| [github/codeql-action/init](https://github.com/github/codeql-action) | `4.36.2` | `4.37.6` |
| [github/codeql-action/autobuild](https://github.com/github/codeql-action) | `4.36.2` | `4.37.6` |
| [github/codeql-action/analyze](https://github.com/github/codeql-action) | `4.36.2` | `4.37.6` |
| [ossf/scorecard-action](https://github.com/ossf/scorecard-action) | `2.4.3` | `2.4.4` |
| [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.36.2` | `4.37.6` |



Updates `actions/attest-build-provenance` from 4.1.0 to 4.2.2
- [Release notes](https://github.com/actions/attest-build-provenance/releases)
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)
- [Commits](actions/attest-build-provenance@a2bbfa2...4d10147)

Updates `docker/setup-buildx-action` from 4.1.0 to 4.2.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@d7f5e7f...bb05f3f)

Updates `docker/build-push-action` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@f9f3042...53b7df9)

Updates `github/codeql-action/init` from 4.36.2 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@8aad20d...5595cca)

Updates `github/codeql-action/autobuild` from 4.36.2 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@8aad20d...5595cca)

Updates `github/codeql-action/analyze` from 4.36.2 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@8aad20d...5595cca)

Updates `ossf/scorecard-action` from 2.4.3 to 2.4.4
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](ossf/scorecard-action@4eaacf0...2d11466)

Updates `github/codeql-action/upload-sarif` from 4.36.2 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@8aad20d...5595cca)

---
updated-dependencies:
- dependency-name: actions/attest-build-provenance
  dependency-version: 4.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: docker/build-push-action
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.37.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: ossf/scorecard-action
  dependency-version: 2.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
@Cre-eD

Cre-eD commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Superseded by #377, a consolidated SCA pass that includes this bump. All 8 updates in this group are in #377 at the same SHAs.

Closing to keep the queue consistent with what landed. Full before/after scan evidence and per-finding reachability analysis are in #377.

@Cre-eD Cre-eD closed this Aug 10, 2026
@dependabot @github

dependabot Bot commented on behalf of github Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests.

To ignore these dependencies, configure ignore rules in dependabot.yml

@dependabot
dependabot Bot deleted the dependabot/github_actions/github-actions-b24444c2e3 branch August 10, 2026 15:30
Cre-eD added a commit that referenced this pull request Aug 11, 2026
…nd CI pins (#377)

## Summary

Full SCA pass over source, all 5 published container images, and the CI
pin surface. Consolidates the **7 open Dependabot PRs** into one review
and adds 5 findings none of them could see.

| | Fixed | Deferred | Documented unfixable |
|---|---|---|---|
| CRITICAL | 0 | 0 | 0 |
| HIGH | 1 source + 102 image | 0 | 8 |
| MEDIUM | 1 source + 32 image | 0 | 4 |
| LOW | 0 + 1 image | 0 | 0 |

Locally-built images, `origin/main` vs this branch, identical build
inputs:

| image | trivy (main → branch) | grype `--only-fixed` (main → branch) |
|---|---|---|
| `kubectl` | 21 → **8** | 39 → **11** |
| `caddy` | 28 → **3** | 37 → **9** |
| `cloud-helpers` | 64 → **0** | 27 → **4** |
| `github-actions` | 34 → **1** | 44 → **5** |
| **total** | **147 → 12** (−92%) | **147 → 29** (−80%) |

Every one of the 12 remaining findings sits inside a third-party
prebuilt binary already at its newest available version. Nothing fixable
is left unfixed, and no suppression was added.

> **Read Round 2 at the bottom too.** A six-model review panel plus two
real preview builds followed this round; it corrected two defects in the
diff below (cache scoping, and a weakened pin in `welder.yaml`) and
found three pre-existing ones, including a Pulumi checksum gate that
could not fail and a published image that cannot start.

## Fixed

| Package | Old → New | CVE / advisory | Sev | Source |
|---|---|---|---|---|
| `github.com/go-git/go-git/v5` | 5.19.1 → 5.19.2 | CVE-2026-71556
(`GHSA-hc8v-wwc9-vgxm`) worktree ops follow symlinks | HIGH | trivy fs,
osv-scanner, Dependabot alert #75 |
| `github.com/go-git/go-git/v5` | 5.19.1 → 5.19.2 | CVE-2026-71557
(`GHSA-qgq7-7hm3-q39j`) malicious ref names write outside ref storage |
MEDIUM | trivy fs, osv-scanner, Dependabot alert #76 |
| Caddy binary (`xcaddy build`) | v2.11.3 → v2.11.4 | CVE-2026-52844,
CVE-2026-52845 (HIGH), CVE-2026-52846 (MEDIUM) | H×2 M×1 | trivy image |
| `alpine` base (×4 stages) | 3.23 → 3.24 | 30 distro CVEs → 0; also
lifts `py3-cryptography` 46.0.7 → 47.0.0 | H2 M8 L20 | trivy image |
| `caddy:2.11.4` + `-builder` | digest refresh | 55 → 25 in the base
layer | H12 M23 L20 | trivy image |
| `alpine/kubectl:latest` | digest refresh | 68 → 8 in the base layer |
H20 M28 L20 | trivy image |
| `lambda/provided:al2023` | digest refresh | 64 → 0 in the base layer |
H58 M5 L1 | trivy image |
| gcloud CLI | 567.0.0 → 579.0.0 | rolls up vendored Go deps in the
bundled binaries; SHA-256 recomputed from the real tarball | — | trivy
image |
| `python:3.9.18` → `python@sha256:229a2c5b` (3.12-slim) (welder
`build-docs`) | EOL runtime | 10110 → 213 image vulns (C248→4, H2293→23)
| C/H/M/L | trivy image |

### CI pin bumps

`actions/checkout` v6.0.3 → **v7.0.1** (Dependabot proposed v7.0.0;
v7.0.1 adds the `--unset` escaping and default-input fixes) ·
`actions/cache` + `actions/cache/save` v5.0.5 → **v6.1.0** ·
`actions/setup-go` v6 → **v7.0.0** · `actions/attest-build-provenance`
v4.1.0 → **v4.2.2** · `docker/setup-buildx-action` v4.1.0 → **v4.2.0** ·
`docker/build-push-action` v7.2.0 → **v7.3.0** · `ossf/scorecard-action`
v2.4.3 → **v2.4.4** · `github/codeql-action` v4 SHA refresh (comment
corrected to `# v4.37.6` in round 2).

All SHAs resolved through the GitHub git-ref API, annotated tags
dereferenced to commits. Compatibility checked before applying:

- **ESM majors are safe here.** `checkout` v7, `cache` v6 and `setup-go`
v7 are all "migrate to ESM" releases. Both the old and new versions
declare `using: node24`, so no runner requirement changes on
`blacksmith-8vcpu-ubuntu-2204`, `ubuntu-24.04` or `ubuntu-latest`.
- **`checkout` v7's fork-PR block does not bite.** v7 refuses to check
out fork PR code under `pull_request_target` / `workflow_run` unless
`allow-unsafe-pr-checkout` is set. This repo has no
`pull_request_target` at all; the three `workflow_run` workflows either
do not check out (`security-scan-comment.yml`, `semgrep-comment.yml`) or
check out the base repo with no `ref:` (`verify-attestations.yml`). The
one PR-head checkout (`dco.yml`, `ref:
github.event.pull_request.head.sha`) runs on `pull_request`, which the
block does not cover.

### Stale pin comment

`build-staging.yml` pinned `actions/cache@27d5ce7f` with a `# v4.3.0`
comment, while `push.yaml` annotated the *same* SHA as `# v5.0.5`. The
GitHub tag API confirms 27d5ce7f is **v5.0.5**; the v4.3.0 comment was
wrong and made the pin look two majors older than it was. Corrected as
part of the bump.

## Two findings Dependabot could not see

### 1. `caddy.Dockerfile` shipped a binary one patch behind its own base
image

The file header says *"Bumping requires editing all three '2.11.x' sites
below (two FROMs + xcaddy)"*. Both `FROM` lines were on `caddy:2.11.4`,
but `xcaddy build "v2.11.3"` was left behind, and the built binary is
what `COPY --from=builder /usr/bin/caddy` puts in the final image. So
the shipped Caddy was 2.11.3 and still carried CVE-2026-52844 +
CVE-2026-52845. Dependabot tracks `FROM` lines, not `xcaddy` arguments,
so this class of drift is invisible to it. Verified after the fix:

```
$ docker run --rm --entrypoint sh <built> -c 'cat /etc/alpine-release; caddy version; caddy list-modules | grep -E "rate_limit|gcs"'
3.23.5
v2.11.4 h1:XKxkMTgNSizEvKG6QHue6cAsFOteU2qA61w2tKkCWi0=
caddy.storage.gcs
http.handlers.rate_limit
```

### 2. Published images do not match the Dockerfiles that supposedly
built them

`simplecontainer/caddy:latest` is byte-identical to `:2026.8.3` (both
`sha256:83b0e6bb…`, pushed 2026-08-10 11:52 UTC, today). What is inside
it:

```
$ docker run --rm --entrypoint sh simplecontainer/caddy:latest -c \
    'cat /etc/alpine-release; caddy version; ls -la /usr/bin/caddy; caddy list-modules | grep -E "rate_limit|gcs"'
3.20.4
v2.8.4 h1:q3pe0wpBj1OcHFZ3n/1nl4V4bxBrYoSoab7rL9BMYNk=
-rwxr-xr-x 1 root root 41582744 Apr 27 08:56 /usr/bin/caddy
caddy.storage.gcs
```

Three things are wrong at once: alpine **3.20.4** where the pinned base
resolves to 3.23.5, Caddy **v2.8.4** where the Dockerfile builds 2.11.x,
a `/usr/bin/caddy` timestamped **Apr 27**, and
**`http.handlers.rate_limit` absent**. That last one is decisive:
`caddy.Dockerfile` asserts on that module at build time (`caddy
list-modules | grep -qE '^http\.handlers\.rate_limit$'`), so the
published image cannot be the output of that Dockerfile. Its `apk`
database also reports alpine 3.20.4 while a fresh build of the same file
reports 3.23.5.

Cost of that in the artifact consumers actually pull (`trivy image`,
published `:latest` tags):

| published image | C | H | M | L | total |
|---|---|---|---|---|---|
| `simplecontainer/caddy:latest` | **6** | 69 | 68 | 27 | 170 |
| `simplecontainer/github-actions:latest` | **2** | 67 | 51 | 8 | 128 |
| `simplecontainer/cloud-helpers:aws-latest` | 0 | 73 | 13 | 1 | 87 |
| `simplecontainer/kubectl:latest` | 0 | 21 | 38 | 24 | 83 |

Among caddy's 6 CRITICALs: `smallstep/certificates` v0.26.1
(CVE-2025-44005, CVE-2026-30836), `grpc` v1.64.0 (CVE-2026-33186),
`libcrypto3`/`libssl3` 3.3.2-r1 (CVE-2026-31789), Go `stdlib` v1.23.4
(CVE-2025-68121) — plus the four Caddy admin-socket / fastcgi
auth-bypass HIGHs (CVE-2026-27586/27587/27588/27590) that
`caddy.Dockerfile`'s own header claims to have closed. This matters more
than usual because the SC composite actions run these images by floating
tag rather than digest, so consumers inherit whatever `:latest` points
at.

**Probable mechanism, and the change here.** Every
`docker/build-push-action` step in the repo used `cache-from: type=gha`
/ `cache-to: type=gha,mode=max` with **no `scope:`**, so all builds
shared one cache namespace: the 5-way image matrix in `push.yaml` (all
writing `mode=max` concurrently), both images in `build-staging.yml`,
and the preview matrix in `branch-preview.yaml`. Concurrent `mode=max`
writers into a single GHA cache scope is a known way to get cache-index
collisions across unrelated Dockerfiles. This PR scopes the cache per
build — see **Round 2** below, which corrects the first attempt at this:
scoping per *image* still let `push.yaml` and `branch-preview.yaml`
collide on `github-actions`, so the final design keys scopes by **trust
tier**.

I want to be precise about confidence: the *observation* above is proven
by direct execution, and unscoped shared cache is the most plausible
mechanism, but I have not reproduced the collision inside GitHub's cache
backend. If the next release still publishes a stale caddy after this
lands, the next place to look is the welder image-build path rather than
buildx. Either way scoping the cache is correct on its own merits.

## Documented unfixable (12 remaining, 0 CRITICAL)

Every residual finding lives in a third-party prebuilt binary that we do
not compile, each already at the newest published version. No
`.trivyignore`, no VEX statement added for any of these — a scanner
finding against a current upstream artifact is honest signal and should
keep showing until upstream ships.

**`/usr/local/bin/kubectl` (8) — upstream Kubernetes v1.36.3.**
`golang.org/x/net` v0.49.0 (CVE-2026-25681, CVE-2026-27136,
CVE-2026-39821, CVE-2026-33814 HIGH; CVE-2026-25680, CVE-2026-42502,
CVE-2026-42506 MEDIUM) and `golang.org/x/text` v0.33.0 (CVE-2026-56852).
*Reachability:* `kubectl` here is a CI-driven CLI speaking TLS to a
trusted, authenticated API server endpoint; the x/net HTTP/2 and proxy
parsing paths need a hostile server or hostile URL, and the x/text issue
is an infinite loop on invalid input (DoS of a short-lived CI process).
`alpine/kubectl:latest` is already the newest digest. *Closes when:*
upstream k8s rebuilds against x/net ≥ 0.55.0.

**`/usr/bin/caddy` (3) — vendored into Caddy v2.11.4's own module
graph.** `x/text` v0.37.0 (CVE-2026-56852), `grpc` v1.81.0
(`GHSA-hrxh-6v49-42gf`, xDS RBAC fail-open + HTTP/2), `cel-go` v0.28.1
(`GHSA-gcjh-h69q-9w9g`, `json:"-"` fields readable from CEL).
*Reachability:* Caddy is genuinely internet-facing, so these deserve the
least benefit of the doubt — but both non-`x/text` findings sit in
features this build does not use. The grpc advisory is scoped to
`internal/xds/rbac` and the HTTP/2 *server* transport; Caddy links grpc
as a client for its own internals and has no xDS RBAC authorization
engine. `cel-go` is reached only through
`ext.NativeTypes(ParseStructTag("json"))` over user-submitted CEL, which
requires a CEL expression surface this build does not expose (the plugin
set is `certmagic-gcs` + `caddy-ratelimit`). Overriding Caddy's module
graph via xcaddy would mean shipping a Caddy built against dependency
versions upstream has not tested, which trades a narrow unreachable
finding for a broad untested one. *Closes when:* Caddy 2.11.5+ ships.

**`/opt/google-cloud-sdk/bin/gke-gcloud-auth-plugin` (1) — Google-built,
gcloud 579.0.0 (newest).** `x/text` v0.38.0, CVE-2026-56852.
*Reachability:* a short-lived credential helper parsing Google's own
token responses, not attacker-supplied text; the advisory is an infinite
loop on invalid input. *Closes when:* Google rebuilds the plugin against
x/text ≥ 0.39.0.

**`/usr/local/bin/aws-lambda-rie` (4, grype only) — AWS-built, part of
`lambda/provided:al2023`.** `x/sys` v0.21.0 (`GO-2026-5024`),
`go-chi/chi/v5` v5.2.4 (`GO-2026-5774/5775/5777`). *Reachability:* the
Runtime Interface Emulator is a local-testing shim AWS ships in the base
image; it is not the entrypoint (`ENTRYPOINT ["/cloud-helpers"]`) and
never runs in Lambda. *Closes when:* AWS refreshes the base image.

**`py3-cryptography` 47.0.0 (4, grype only) — Alpine's newest, in
`github-actions`.** `GHSA-537c-gmf6-5ccf`, `GHSA-jwv3-5hgf-82ww`,
`GHSA-g6cj-pr64-35w5` (HIGH), `GHSA-m2h6-j472-rp4c` (MEDIUM). The fixes
need 48.0.1 / 49.0.0 / 50.0.0, and Alpine ships 47.0.0-r0 on **both 3.24
and edge** — there is no branch to bump to. *Reachability:* pulled in by
apk-managed `aws-cli` and used by gcloud auth; the PKCS#7 Bleichenbacher
oracle and the `permittedSubtrees` wildcard escape need
attacker-controlled PKCS#7 blobs or hostile certificate chains, neither
of which is on the CI credential path. *Why not force it:* `pip install
cryptography>=48` over the apk package would break Alpine's
`externally-managed-environment` marker and desynchronise the
`aws-cli`/gcloud dependency set — worse than the finding. The 3.23 →
3.24 bump in this PR already moved it 46.0.7 → 47.0.0. *Closes when:*
Alpine packages 48.0.1+.

Note this is a real trivy/grype split worth knowing: trivy scores
`py3-cryptography` as an Alpine package with no distro fix and stays
quiet, grype catalogues the same files as a PyPI dist-info and matches
the GHSA advisories. Neither is wrong. Both tools are run here for
exactly this reason.

## VEX re-triage

`vex/openvex.json` v2 → v3. Nothing was added; two statements were
corrected and one re-confirmed.

| advisory | was | now | why |
|---|---|---|---|
| GO-2022-0635 (CVE-2020-8911) | `fixed` | `not_affected` /
`component_not_present` | see below |
| GO-2022-0646 (CVE-2020-8912) | `fixed` | `not_affected` /
`component_not_present` | see below |
| GO-2026-5932 (x/crypto/openpgp) | `not_affected` /
`vulnerable_code_not_present` | unchanged, evidence re-verified | grep
and call-path evidence still hold; `x/crypto` v0.54.0 is the latest
release |

**The two `fixed` statements were not fixable, and that made them
indefinite suppressions.** OSV lists both aws-sdk-go advisories with
`{"introduced": "0"}` and **no fix event** — AWS never patched the v1
`s3crypto` client, the remediation is migrating to the V2 encryption
client. So `fixed` described a state that could never be reached, while
still suppressing the finding in any VEX-aware scanner. The prior
`impact_statement` also asserted the module had "left `go.mod` entirely
through Go module pruning", which is not what the tree shows:

```
$ go list -m all | grep '^github.com/aws/aws-sdk-go '
github.com/aws/aws-sdk-go v1.55.8              # present in the requirement graph
$ go list -deps ./... | grep -c '^github.com/aws/aws-sdk-go/'
0                                              # zero packages linked into any binary
$ go mod why -m github.com/aws/aws-sdk-go
(main module does not need module github.com/aws/aws-sdk-go)
```

`component_not_present` is the accurate justification: the module is a
requirement-graph edge from a transitive `go.mod`, no package from it
reaches the linker, and `s3crypto` specifically is never imported (S3
goes through aws-sdk-go-v2). Neither `govulncheck -mode=source` nor
`osv-scanner` reports these against the repo, so no `osv-scanner.toml`
mirror entry is needed; the header comment there is updated to say why
they stay out and under what condition they would come back.

`osv-scanner.toml` keeps exactly one `IgnoredVulns` entry
(GO-2026-5932), unchanged. `CODEOWNERS` already gates `/vex/` and
`/osv-scanner.toml`.

## Dependabot reconciliation

All 7 open bot PRs are superseded by this one. Note
`.github/dependabot.yml` is deliberately configured so majors fall
outside the version groups and open individual PRs "for isolated
review/testing" — that config is working as designed and is left
untouched; this PR is the isolated review.

| PR | What it proposed | Action | Why |
|---|---|---|---|
| #374 | `go-git/v5` 5.19.1 → 5.19.2 (`gomod-security`) | superseded |
identical bump; also closes Dependabot alerts #75/#76 |
| #371 | github-actions group, 8 updates | superseded | all 8 included,
same SHAs |
| #352 | `actions/cache` 5.0.5 → 6.1.0 | superseded | included; also
fixes the stale `# v4.3.0` comment it would have left behind |
| #351 | `actions/cache/save` 5.0.5 → 6.1.0 | superseded | included. Its
checks were red (`SBOM + Dependency Scan`, `Security Status`) on the
go-git baseline, which this PR clears |
| #334 | `actions/checkout` 6.0.3 → 7.0.0 | superseded, **improved** |
went to v7.0.1 instead; v7.0.0 predates the `--unset` escaping fix |
| #333 | `alpine` 3.23 → 3.24 | superseded | same digest `28bd5fe8…` |
| #326 | `caddy` digest `f2b9891` → `ea6e54f` | superseded, **improved**
| that digest was already stale (opened Jun 15; upstream rebuilt Jul 7).
Used the current `198d47ea…` / `844f60b6…` instead |

Two Dependabot alerts (#75 HIGH, #76 MEDIUM) are the only open ones and
both close on merge.

## Follow-ups, not done here

- **`reecetech/version-increment` is pinned at `2024.10.1`; `2026.8.4`
is out** (`28d33de033e97a304f77238d6a5db26039ca15d6`). Not bumped on
purpose: no CVE, and the diff touches `version-increment.sh` +
`shared.sh`, the calver logic that decides every release tag in
`push.yaml` and `branch-preview.yaml`. Changing release versioning
inside an SCA PR is the wrong blast radius. Worth its own PR with a
dry-run.
- **`simple-container-com/actions` refs are inconsistent**: 8 pins at
`0af5a697…` and `semgrep.yml` at `5061c0a2…`, both commented `# main`.
Not a vulnerability, but the drift is worth a sweep.

## Evidence

<details><summary>Source scanners, this branch</summary>

```
$ trivy fs --severity CRITICAL,HIGH,MEDIUM,LOW .
main:   HIGH   github.com/go-git/go-git/v5 v5.19.1 -> 5.19.2  CVE-2026-71556
        MEDIUM github.com/go-git/go-git/v5 v5.19.1 -> 5.19.2  CVE-2026-71557
branch: 0 findings

$ govulncheck -mode=source ./...
0 reachable; 1 module-level (GO-2026-5932, VEX not_affected)

$ osv-scanner scan source -L go.mod
main:   2 vulnerabilities (1 HIGH, 1 MEDIUM), 2 fixable
branch: No issues found   (GO-2026-5932 filtered, justified)

$ pip-audit -r docs/requirements.txt
No known vulnerabilities found
```
</details>

<details><summary>Base-image layers, old digest vs new</summary>

```
alpine:3.23 (old)   C=0 H=2  M=8  L=20  total=30
alpine:3.24 (new)   C=0 H=0  M=0  L=0   total=0
caddy:2.11.4 (old)  C=0 H=12 M=23 L=20  total=55
caddy:2.11.4 (new)  C=0 H=10 M=15 L=0   total=25
alpine/kubectl old  C=0 H=20 M=28 L=20  total=68
alpine/kubectl new  C=0 H=5  M=3  L=0   total=8
lambda al2023 old   C=0 H=58 M=5  L=1   total=64
lambda al2023 new   C=0 H=0  M=0  L=0   total=0
                                        217 -> 33
```
</details>

<details><summary>python base image comparison (welder
build-docs)</summary>

```
python:3.9.18     C=248 H=2293 M=5849 L=1720   total=10110   (EOL Oct 2025)
python:3.12       C=60  H=334  M=687  L=1178   total=2259
python:3.12-slim  C=4   H=23   M=86   L=99     total=212     <- chosen
python:3.13-slim  C=4   H=19   M=56   L=66     total=145
```

3.12-slim over 3.13-slim on purpose: `docs/requirements.txt` is
`pip-compile`d for Python 3.12 with `--generate-hashes`, so 3.12 is the
version the lockfile was resolved against. The 67-finding gap is all
LOW/MEDIUM distro noise. Build verified end to end against the real
lockfile:

```
$ docker run --rm -v "$PWD/docs:/w" -w /w python:3.12-slim sh -c \
    'pip install -r requirements.txt && mkdocs build'
INFO - Documentation built in 2.86 seconds
```

(The pre-existing `ai-assistant/examples/*` broken-link warnings are
unchanged and unrelated.) `mkdocs.yml` uses only `search` + `mermaid2`,
no git-dependent plugins, so `-slim` is sufficient.
</details>

## Test plan

- `go mod tidy` clean; `go build ./cmd/github-actions
./cmd/cloud-helpers` succeeds. Our own `dist/github-actions` links
`golang.org/x/text v0.40.0` (patched) per `go version -m`.
- All 5 images build from a clean context on both `origin/main` and this
branch; the before/after tables above come from those builds, not from
published tags.
- `caddy` image smoke-verified post-bump: v2.11.4, alpine 3.23.5, both
`caddy.storage.gcs` and `http.handlers.rate_limit` registered, so the
Dockerfile's build-time module assertion passes.
- `github-actions` image build-time smoke test (`pulumi version`,
`gcloud version`, `gke-gcloud-auth-plugin` present, `aws --version`,
`sc` symlink) passes on alpine 3.24 + gcloud 579.0.0.
- docs build verified in `python:3.12-slim` against the real hashed
lockfile.
- Action SHAs verified against the GitHub git-ref API with annotated
tags dereferenced; no pin was hand-written.

---

# Round 2: multi-model review + preview build

Six independent reviewers (four Claude lenses, OpenAI Codex, Google
Gemini). Every claim below was re-verified before acting on it; two
findings were defects in round 1's own diff, and one review claim turned
out to be a probe artifact.

## Verified in a real pipeline

`branch-preview.yaml` dispatched twice, once per commit. Both **13/13
jobs green**, including the docker builds — the second run with fully
cold caches, since every scope name changed.

| | round 1 (`35cde9a`) | round 2 (`64ddbee`) |
|---|---|---|
| preview version | `v2026.8.4-pre.35cde9a-preview.35cde9a` |
`v2026.8.4-pre.64ddbee-preview.64ddbee` |
| `github-actions` image | C0 **H1** M0 — total 1 | C0 **H1** M0 — total
1 |
| `cloud-helpers` image | — | C0 H0 M0 — **total 0** |

The CI-built image reports `alpine 3.24.1`, `Google Cloud SDK 579.0.0`,
`pulumi v3.245.0`, `gke-gcloud-auth-plugin` present. Against the
published `:latest` from main (128 findings, 2 CRITICAL) that is **128 →
1**, and the one residual is the documented `x/text v0.38.0` inside
Google's auth plugin. The gcloud `SHA256` pin verified inside a real
build, which is the authoritative check on that value.

## Two defects in round 1's own diff

**1. The cache scoping was wrong, not merely inconsistent.** Round 1
scoped per image — but `github-actions` is a matrix value in *both*
`push.yaml` (`matrix.image`) and `branch-preview.yaml`
(`matrix.target`), so they collided on one scope. `branch-preview` is
dispatchable from any branch and `mode=max` exports builder stages, so a
preview build could seed the very layer a release build restores — and a
cache hit means the SHA-256-verified gcloud and Pulumi downloads never
execute. Round 1 separated staging but not preview, which made the gap
easy to miss.

Scopes are now keyed by **trust tier**: releases read and write `prod-*`
only; staging and preview write their own tier and read `prod-*` as a
warm fallback, which is the safe direction (reading higher-trust cannot
poison it). `branch-preview` gained an explicit `cache_scope` so its
fallback matches push.yaml's image naming (`cloud-helpers-aws`, not
`cloud-helpers`) — Gemini and two Claude lenses independently flagged
that mismatch. Expect one cold release build after merge; that is the
scope rename, not a regression.

**2. `welder.yaml` weakened a pin.** Round 1 replaced `python:3.9.18`
with a floating `python:3.12-slim` and a bare `pip install`, against
this repo's own documented digest-pin + `--require-hashes` policy —
while `push.yaml:376` already pinned the same tool by digest. Now
digest-pinned and hash-enforced, identical to the CI docs build, and
**both** refreshed to the current digest (round 1 left push.yaml's three
months stale).

## Pre-existing defects the panel surfaced

**The Pulumi integrity gate could not fail the build.** `... &&
sha256sum -c - && ... && strip … || true && upx … || true` parses as
`((chain || true) && upx) || true`: `&&` and `||` are equal precedence
and left-associative, and errexit does not apply to non-final commands
in an AND-OR list. Verified both ways — with a deliberately wrong
expected hash, the old shape exits **0**, the brace-grouped shape now
**fails**:

```
#8 1.650 sha256sum: WARNING: 1 of 1 computed checksums did NOT match
#8 ERROR: process "/bin/sh -c set -euo pipefail ..." did not complete successfully: exit code: 1
```

The gcloud chain terminates on a real command and was already
fail-closed, so the gcloud claim in this PR was accurate. Fixed in both
github-actions Dockerfiles.

**`simplecontainer/cloud-helpers:aws-latest` cannot start.**
`actions/upload-artifact` does not preserve the executable bit, and
`push.yaml` has no `chmod` for this binary — `branch-preview.yaml:324`
does. The published image has `/cloud-helpers` at `-rw-r--r--` with
`ENTRYPOINT ["/cloud-helpers"]`. Asserted in the Dockerfile rather than
a workflow so it holds whichever path builds it; the CI-built preview
image now reports `-rwxr-xr-x`.

**Docs example images carried the CVEs this PR claims to close.**
`docs/DEPENDENCIES.md` lists example dirs in the tracked Docker surface,
but `dependabot.yml` scanned only the root level and rationalised the
gap in a comment. `blog-platform/caddy.Dockerfile` pinned caddy
**2.11.3** — the exact version whose CVEs this PR fixes at the root —
and six files pinned node **22.22.3** (CVE-2026-48618, CVE-2026-48933,
both HIGH; fixed in 22.23.0). All bumped to digests re-resolved against
the live registry, the docker ecosystem now globs
`docs/docs/examples/**`, and one example moves off EOL `python:3.9`.

## Caddy: version now single-sourced from the base image

Rather than keep three `2.11.x` literals guarded by a comment, `xcaddy`
now builds `"${CADDY_VERSION}"` — the env var the caddy base images set
themselves. There is no second literal to forget, which is precisely
what shipped a 2.11.3 binary on a 2.11.4 base. Both stages assert the
built binary against their own base's version, and `certmagic-gcs` joins
`rate_limit` in the module assertions (a silently dropped storage plugin
means per-pod ACME state and Let's Encrypt lockout).

Worth recording how this landed: my first attempt compared the binary to
a hand-maintained `ARG`, and the negative test showed it passing on a
deliberate skew — self-consistent by construction, proving nothing. My
second negative test was also invalid, because the digest I picked for
"2.11.3" was actually the old 2.11.4 rebuild. Only the third attempt,
against the genuine `caddy:2.11.3` digest, demonstrated the gate firing:

```
ERROR: process "/bin/sh -c test -n \"${CADDY_VERSION}\" && caddy version | grep -qF \"${CADDY_VERSION} \"" did not complete successfully: exit code: 1
```

## VEX corrections

The GO-2026-5932 statement claimed x/crypto was "a direct dependency for
chacha20poly1305 only" while stamped *re-confirmed against the current
tree*. It is not: **24** x/crypto packages link, including `ssh`,
`ssh/agent`, `ssh/knownhosts`, `pkcs12` and `ocsp`, and
`pkg/api/secrets` imports `ssh` directly. The conclusion is unchanged —
openpgp linkage is 0 — but understating the linked surface on the one
artifact an auditor reads is worse than not writing it, and
`x/crypto/ssh` is the subpackage with the CVE history. Two reviewers
caught this independently.

The evidence commands now specify `-buildvcs=false`: a plain `go list
-deps` can exit non-zero on a VCS error and print nothing, which greps
identically to a clean result — the same masking failure mode as `||
true`.

On the aws-sdk-go statements, one reviewer argued
`component_not_present` contradicts an impact_statement that mentions
`go list -m all`, and proposed `vulnerable_code_not_present`. I kept
`component_not_present` and made the scope explicit instead: for the
shipped artifact the component genuinely is absent — 0 packages linked,
**0 `go.sum` entries**, 0 in the built binary's BuildInfo — and the
residual `go list -m all` edge is a requirement-graph reference from a
transitive `go.mod`. `vulnerable_code_not_present` would wrongly imply
the component ships and only the vulnerable function is absent.

## Doc contracts this pass contradicted

`DEPENDENCIES.md` stated that every `not_affected` is mirrored into
`osv-scanner.toml`, and that a superseded one gets flipped to `status:
fixed` — the rule that produced the bug round 1 reverted. Both are now
qualified: the mirror covers only advisories osv-scanner actually
reports (an unused ignore is itself a finding), and an advisory with
`introduced: 0` and no fix event can never reach `fixed`.

## One review claim that did not survive

Codex reported a **different gcloud SHA-256** than the pin. That was its
own probe artifact: it fetched with `curl -C -` (resume) against a
leftover file, producing 97,127,837 bytes and `gzip: trailing garbage
ignored`. A clean download is 96,066,973 bytes hashing to `a9a7fbe5…`,
matching the pin — and CI's own verification passed inside the preview
build. No change needed. Codex otherwise reported clean.

## Deliberately deferred

These are real but wrong to fold into a dependency PR:

- **go-git 5.19.2 hardens worktree paths.** One lens demonstrated that
`AddFileToGit` now rejects a path whose leading component is a symlink
(`pkg/provisioner/common.go` passes `.sc/cfg.yaml.template`), where
5.19.1 accepted it — and that the test suite passes on *both* versions,
so nothing would catch it. The repo has zero `os.Symlink` usage in
tests. Reverting would reintroduce the CVEs, so the fix is a test plus
an actionable error message, and it needs a decision on whether a
symlinked `.sc` is a supported layout. Worth its own issue.
- **`reecetech/version-increment`** at `2024.10.1` (latest `2026.8.4`,
SHA `28d33de0`). Its diff touches the calver logic that names every
release tag.
- **`github-actions-staging.Dockerfile` duplicates ~95 lines** of its
sibling under a "keep in sync" comment; this PR had to edit the alpine
digest and both gcloud ARGs twice.
- **A pin-consistency CI gate** (action SHA vs its `# vX.Y.Z` comment,
gcloud version/SHA parity across the two Dockerfiles). Round 1 found a
`# v4.3.0` comment on a v5.0.5 SHA by hand; a 20-line `gh api` check
would have caught it. `# v4` on the codeql pins is corrected to `#
v4.37.6` here.
- **`DEPENDENCIES.md` claims `trivy image` runs per published image** —
no trivy/grype step exists in any workflow; the shared scan is
source-tree only. That is why the stale caddy binary went unnoticed for
months.
- **No PR-time build of any Dockerfile**; the first build happens
post-merge on `push.yaml`. A `docker build --load` job on a path filter
would close it.
- `certmagic-gcs` v0.1.7→v0.1.8, `golangci-lint` v1→v2, pulumi SDK 11
minors, `mermaid` 10.6.1 in the docs site.

---------

Signed-off-by: Dmitrii Creed <creeed22@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github-actions Pull requests that update GitHub Actions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant