Skip to content

A production release's acceptance holds, and its flow is rehearsed in CI - #157

Merged
DevomB merged 4 commits into
mainfrom
production-acceptance
Sep 29, 2026
Merged

DevomB merged 4 commits into
mainfrom
production-acceptance

Conversation

@DevomB

@DevomB DevomB commented Sep 29, 2026

Copy link
Copy Markdown
Owner

The release flow in docs/release-keys.md (a production build by hand, then make acceptance, then the tag and the page) had never been run, and it would not have passed:

  • The boot tests enrolled the developer Secure Boot certificate (<work>/keys/sb/kryptik-sb.crt), which does not exist in a fresh production tree and is not what signed a production release's kernels, so media-smoke-secureboot and integrity-test would fail; the export published that developer certificate as the release's. Now acceptance.sh reads the certificate out of the medium under test (/kryptik/kryptik-sb.crt on its ESP), enrols that one, and the export carries it in PEM and DER form. The integrity suite checks its controls against the same certificate.
  • A tag from v1.0.0 up would have built a developer-signed 1.0.0 and drafted it on the Releases page as a pre-release, so the hand-built release could not be published under the same tag. Now such a tag's run builds and tests the revision as a production release signed with a throwaway key medium, the same commands the instructions give, and drafts nothing; only a v0.x tag is drafted. A workflow_dispatch input role=production rehearses that flow on any ref.
  • The instructions did not say that the update suite needs a release to update from, or that the pair must be built first: they now build the pair, then 0.0.0, then the release, test, tag and publish, in that order.

Stacked on signed-testctl (#155): it carries that branch's commits until #155 merges. Its Distro run is dispatched with role=production.

…tl key the medium's anchor lists signed its file, in that key's own namespace: a third key beside the release and statement keys, made by the ceremony and by the build for the suites, kept with the production pair; mk-testctl.sh signs, testctl.sh verifies against the medium's anchor and names a disk it ignores, and the install suite boots one signed by a stranger
…lease's media honour (KRYPTIK_TESTCTL_KEY passes through sudo like the rest of the contract), the instructions name it, and the medium's check, the suites' default key and the pair's copy are written once
… CI: the boot tests enrol the Secure Boot certificate the medium under test carries and the export publishes that certificate, not the developer key's; a production version's run (a tag from v1.0.0, or the role asked for) builds and tests the revision signed with a throwaway key medium and drafts nothing from it; the instructions build the pair and a 0.0.0 release before the release, and test before tagging
…trust, of either role: what the guest refuses is the signer, and a production release under test has only production builds to hand it
@DevomB
DevomB merged commit 1adb605 into main Sep 29, 2026
20 of 21 checks passed
@DevomB
DevomB deleted the production-acceptance branch September 30, 2026 04:35
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