You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Status: implemented on dev, one item blocked on credentials
Verified against origin/dev on 2026-08-09. .github/pins/packaging-tools.json (schema v1) exists and pins every downloaded packaging binary by SHA-256, with .github/pins/README.md documenting the update procedure.
Tool
Pin
Verified
appimagetool
asset 324406882 @ a6d71e2b…
yes
AppImage runtime
asset 456065460 @ 1cc49bcf…
yes
linuxdeployqt
asset 306987716 @ 974a8745…
yes
WiX 3.14.1
versioned release URL @ 6ac824e1…
yes
Windows SDK MakeAppx.exe
10.0.26100.0 @ 00fff202…
needs runner confirmation
Flatpak / flatpak-builder
1.14.6-1ubuntu0.1 / 1.4.2-1build2 on ubuntu-24.04
yes
dpkg
1.22.6ubuntu6.6 on ubuntu-24.04
yes
DigiCert KeyLocker
null
BLOCKED
Each third-party pin records upstream + upstreamCommit alongside the asset ID, so a pin can be audited back to its source tree rather than trusting a release name.
Remaining work
1. BLOCKED — DigiCert KeyLocker pin (needs an operator with DigiCert credentials)
digicertKeylocker.version, .url, and .sha256 are intentionally null. The WindowsInstall MSI signing step now hard-throws when SIGN_MSI == true and the pin block is empty, rather than silently downloading — the fail-loud behaviour this issue asked for.
The previous flow fetched one.digicert.com/.../Keylockertools-windows-x64.msi/download with the SM_API_KEY header. That URL is mutable and therefore unpinnable. Unblocking requires someone with a DigiCert account to:
resolve the exact KeyLocker Tools version in use;
record its concrete, versioned, immutable download URL (not the redirecting /download endpoint);
compute and record the SHA-256;
fill the digicertKeylocker block and confirm a signed MSI still builds.
This is the same credential dependency as #39 (procure the code-signing certificate). Sequence #39 first — there is no reason to pin the signing tool before the certificate that makes it useful.
2. Confirm MakeAppx.exe on a real runner
windowsSdk.makeAppxSha256 was captured on a local machine. A local SDK install and the windows-2022 runner image can ship different binaries for the same nominal SDK version.
Validate the digest on the first Windows CI run; if it differs, pin the runner's value and note in .github/pins/README.md that this digest is runner-image-specific and must be rechecked when the image is bumped.
3. Land the branch
The implementation is on dev and, per the earlier note, was uncommitted at the time of writing.
Confirm it is committed and merged rather than sitting in a dirty working tree.
Acceptance criteria
Every downloaded packaging binary is verified against a recorded SHA-256 before use; a mismatch fails the job loudly.
No packaging step downloads from a mutable or redirecting URL.
GitHub Actions are pinned by commit SHA, not tag.
The vcpkg baseline revision is pinned in vcpkg-configuration.json.
SIGN_MSI=true with an empty digicertKeylocker block fails with an explicit diagnostic — never a silent unverified download.
.github/pins/README.md states how to rotate each pin and which are runner-image-specific.
Verification
# Every non-null pin must carry a 64-hex digest.
jq -e '[paths(type=="object") as $p | getpath($p) | select(has("sha256") and .sha256 != null) | .sha256 | test("^[0-9a-f]{64}$")] | all' \
.github/pins/packaging-tools.json
# No unpinned action references (expect no output).
grep -rnE "uses: .*@(v[0-9]|main|master)" .github/workflows/
Not started as of 2026-07-19 on mberry/mic-155-160-tier2-corpus. Prior audit still holds: CI workflows pin loosely; LinuxInstall downloads continuous …
Reverify the committed branch state and pin-rotation documentation on the exact release candidate. SBOM and artifact provenance are tracked separately by #263.
Status: implemented on
dev, one item blocked on credentialsVerified against
origin/devon 2026-08-09..github/pins/packaging-tools.json(schema v1) exists and pins every downloaded packaging binary by SHA-256, with.github/pins/README.mddocumenting the update procedure.appimagetool324406882@a6d71e2b…456065460@1cc49bcf…linuxdeployqt306987716@974a8745…6ac824e1…MakeAppx.exe10.0.26100.0@00fff202…1.14.6-1ubuntu0.1/1.4.2-1build2onubuntu-24.04dpkg1.22.6ubuntu6.6onubuntu-24.04nullEach third-party pin records
upstream+upstreamCommitalongside the asset ID, so a pin can be audited back to its source tree rather than trusting a release name.Remaining work
1. BLOCKED — DigiCert KeyLocker pin (needs an operator with DigiCert credentials)
digicertKeylocker.version,.url, and.sha256are intentionallynull. TheWindowsInstallMSI signing step now hard-throws whenSIGN_MSI == trueand the pin block is empty, rather than silently downloading — the fail-loud behaviour this issue asked for.The previous flow fetched
one.digicert.com/.../Keylockertools-windows-x64.msi/downloadwith theSM_API_KEYheader. That URL is mutable and therefore unpinnable. Unblocking requires someone with a DigiCert account to:/downloadendpoint);digicertKeylockerblock and confirm a signed MSI still builds.This is the same credential dependency as #39 (procure the code-signing certificate). Sequence #39 first — there is no reason to pin the signing tool before the certificate that makes it useful.
2. Confirm
MakeAppx.exeon a real runnerwindowsSdk.makeAppxSha256was captured on a local machine. A local SDK install and thewindows-2022runner image can ship different binaries for the same nominal SDK version..github/pins/README.mdthat this digest is runner-image-specific and must be rechecked when the image is bumped.3. Land the branch
The implementation is on
devand, per the earlier note, was uncommitted at the time of writing.Acceptance criteria
vcpkg-configuration.json.SIGN_MSI=truewith an emptydigicertKeylockerblock fails with an explicit diagnostic — never a silent unverified download..github/pins/README.mdstates how to rotate each pin and which are runner-image-specific.Verification
Dependencies
loupe-ocr/; keep the two consistent rather than inventing a second mechanism.Migration provenance (imported record)
Labels: P1-high, needed, audit:partial-rescope, scope:m, area:infra, surface:packaging, chore, surface:ci-build
Source: mberrys/Frisket-pdf#83 (created 2026-08-06T19:11:23Z)
Alignment amendment — 2026-08-10
This issue remains open in 0.0.2 for two explicit gates:
MakeAppx.exedigest on the hosted Windows runner and record any runner-image-specific value.Reverify the committed branch state and pin-rotation documentation on the exact release candidate. SBOM and artifact provenance are tracked separately by #263.