Skip to content

fix(ci): bring verify-published-checksums tests to the publish-manifest contract (D-1105) - #488

Merged
acamarata merged 1 commit into
mainfrom
dw3-plugins-2
Oct 26, 2026
Merged

acamarata merged 1 commit into
mainfrom
dw3-plugins-2

Conversation

@acamarata

Copy link
Copy Markdown
Contributor

What

PR #473 (D-1105) made scripts/verify-published-checksums.sh --signatures require --published-sha256 (the publish job's approved manifest). scripts/ci/tests/test_verify_published_checksums.py still called it with --signatures alone, so 13 tests failed and the Hygiene tracked-binaries step has been red on main since.

Changes (tests only, script enforcement untouched)

  • verify() now builds a published-sha256.txt (sha256sum lines of every served tarball) and passes --published-sha256 on every signed run. published=None omits it and a Path supplies a custom manifest.
  • New test_signatures_without_published_manifest_is_refused: --signatures without --published-sha256 exits 1, names the flag, and leaves releases.json untouched.
  • New test_tarball_changed_since_the_manifest_stops_the_write: a platform or source tarball that differs from the manifest is UNAPPROVED, exits 1, and writes nothing.

No script bug turned up, so the script is unchanged.

Verification

  • python3 -m unittest discover -s scripts/ci/tests: 88 tests OK (13 failures before).
  • python3 scripts/ci/check-tracked-binaries.py: pass.
  • bash scripts/release/verify-published-checksums-test.sh: all cases passed.
  • Other Hygiene steps run locally (compose-password-urls lint and its tests, plugin-counts bundles test, rehearse-args test, compose-network-literals, attribution --all): all pass.

Not fixed here

The Hygiene file-size step also fails on main, independent of this change: free/ci/internal/nodes/registry/registry.go (342 lines), free/github-runner/internal/trust.go (416) and scripts/verify-published-checksums.sh (347) exceed the 300-line limit. Fixing that means splitting source files, so it is out of scope for this PR. The Hygiene gate stays red until it is handled.

…st contract (D-1105)

Signed runs now pass --published-sha256 with a manifest of every served tarball. Adds tests that --signatures without --published-sha256 is refused and that a tarball differing from the manifest stops the write.
@acamarata
acamarata merged commit 99abe44 into main Oct 26, 2026
25 of 26 checks passed
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