Skip to content

chore(workflows): move the five image pins to what 02c62e4's build published - #95

Merged
garymike merged 1 commit into
mainfrom
chore/move-pins-02c62e4
Oct 30, 2026
Merged

garymike merged 1 commit into
mainfrom
chore/move-pins-02c62e4

Conversation

@garymike

Copy link
Copy Markdown
Owner

The second half of #91 and #93, and the first set of pins that scripts/check-image-pins.py can actually verify. 02c62e4 is the first build that stamps each image with a fingerprint of its build inputs, so until now every pin reported UNVERIFIABLE.

image was now
security-toolbox-base 9be060794ecb 4d1337450ff0
gha-toolbox 4cef3443acbd 9df49b1d2c2b
sast-toolbox edfd4db8752a bdbbdabc07eb
iac-toolbox 08e1338df20c 98d329b49e54
skill-audit-toolbox f5f99b96668f 161cbe2cb220

Callers now get #91's tool bumps (trufflehog 3.99.7, snyk-agent-scan 0.6.9, semgrep 1.182.1) and #93's corrected dev-exec-writes-agent-memory rule. Before this they were still scanning with the pre-#91 toolchain.

Resolved from the per-commit tag, not latest

latest is not trustworthy here, and that is measured rather than assumed. The #91 and #93 builds started 25 seconds apart and ran concurrently, both pushing latest. For iac-toolbox the earlier run's push landed last:

774ab22 build published:    c1d133bb0e97
latest resolved to:         7f5292725111

Each digest here came from resolving <image>:sha-02c62e46ac16, which is race-free and resolved to exactly what that build reported for both images I cross-checked against the build log.

build-toolbox.yml has no concurrency: guard, which is what allowed the race. That is a separate fix, not folded in here.

Verified before writing

For every image, the resolved digest's io.github.garymike.toolbox.build-inputs label was read back out of the registry and compared with the fingerprint this repo computes now. Nothing would have been written if any of the five disagreed. After the move:

  gha-security.yml: gha-toolbox pin is current (inputs aeb8c288dcbb)
  iac-security.yml: iac-toolbox pin is current (inputs 5ecf0c053240)
  sast.yml: sast-toolbox pin is current (inputs f194279f6d1d)
  security-scan.yml: security-toolbox-base pin is current (inputs cd8d4136b02c)
  skill-audit.yml: skill-audit-toolbox pin is current (inputs 3de69ea5f3f9)

All 5 reusable-workflow image pins were built from the current repo inputs.

This should take Image pins green for the first time.

…blished

The second half of #91 and #93, and the first pins that scripts/check-image-pins.py can
actually verify: 02c62e4 is the first build that stamps each image with a fingerprint of its
build inputs, so before this every pin reported UNVERIFIABLE.

Resolved from each image's `sha-02c62e46ac16` tag rather than `latest`. Measured reason: the
#91 and #93 builds started 25 seconds apart and ran concurrently, both pushing `latest`, and
for iac-toolbox the earlier run's push landed last. `latest` resolved to 7f5292725111 while
the 774ab22 build had published c1d133bb0e97. The per-commit tag is race-free. build-toolbox.yml
has no concurrency guard, which is a separate thing to fix.

Each digest was verified before being written: its build-inputs label was read back out of the
registry and compared with the fingerprint this repo computes now, and nothing would have been
written if any of the five disagreed. scripts/check-image-pins.py then reports all five current.
@garymike
garymike merged commit 15c9c0f into main Oct 30, 2026
9 checks passed
@garymike
garymike deleted the chore/move-pins-02c62e4 branch October 30, 2026 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant