Skip to content

release: publish optional Packslip manifests - #549

Open
jdx wants to merge 2 commits into
basecamp:mainfrom
jdx:feat/packslip-release-manifests
Open

jdx wants to merge 2 commits into
basecamp:mainfrom
jdx:feat/packslip-release-manifests

Conversation

@jdx

@jdx jdx commented Oct 8, 2026 •

Copy link
Copy Markdown

Add an optional signed Packslip manifest to HEY releases, describing the existing archives, their packaged completions, and the release-matched hey agent skill.

mise currently installs HEY through its GitHub backend, which already verifies build attestations. This adds explicit platform, archive, and executable mappings published with each release, so installers can use HEY-owned metadata rather than infer the layout from filenames. It preserves the existing archives and their signing.

The manifest exposes the packaged Bash, Zsh, and Fish completions and the complete skill from the release's source commit. Activated mise can use the completions; mise skills sync links the skill for the installed version. The mise tool page gives consumer context.

The v1 format is intended to remain supported for years; release-workflow or security changes can still require maintenance. Please reshape the integration or omit resources that aren't useful. Reuse by other installers, including DotSlash, is a future goal.

Implementation and validation
  • Adds two optional 10-minute jobs after the existing release. Signing has contents-read/OIDC only; a separate upload-only job has contents-write. Signing or staging failure prevents bundle upload and does not affect the existing release jobs. Deleting these jobs reverses the integration.
  • Pins Packslip v1.6.0's full release commit, whose action internally locks CLI archive digests and verifies build provenance. Links the existing release-job archive attestations rather than creating signing-job build claims. The existing workflow path is the durable signing identity.
  • Disposable-container checks passed against v1.7.0: all ten archive SHA-256 digests/sizes and checksum entries, executable/platform/layout mappings, and all three packaged completion paths; source-matched skill Git blob; local throwaway signing and all-artifact verification; archive and signed-payload tamper rejection.
  • The released action's Linux ARM64/x64 CLI digests and build provenance were verified against its committed lock. Default installer success and tamper-before-extraction checks passed using a local download fixture and actual attestation verification.
  • make check passed in a non-root Go 1.27 container; six release-workflow Bats contracts passed. YAML parsing confirmed every existing job unchanged. ShellCheck passed and Zizmor 1.30.1 reported no findings.

Local signing used a throwaway key; production vendor OIDC signing/upload and non-Linux binary execution were not exercised. No release or registry switch is included. A registry change would follow the first verified signed release and successful mise discovery, retaining the old backend for earlier versions.

AI assistance: OpenAI Codex.


Summary by cubic

Publishes an optional signed Packslip manifest with each HEY release, describing the existing archives, the packaged Bash/Zsh/Fish completions, and the skill from the release's source commit. mise already installs HEY through its GitHub backend with attestation verification; this adds explicit platform, archive, and executable mappings so installers can use HEY-owned metadata instead of inferring layout from filenames.

Implementation

  • Adds two optional 10-minute jobs after the existing release: one signs with contents-read/OIDC only, and a separate upload-only job uses contents-write.
  • Signing or staging failure prevents bundle upload but does not affect the existing release jobs; deleting the jobs reverses the integration.
  • Pins Packslip v1.6.0 and links the existing release-job archive attestations rather than creating new signing-job build claims.
  • Adds Bats contracts covering job ordering (no existing job depends on the Packslip jobs), failure isolation, and permission separation.

Written for commit c35ffb4. Summary will update on new commits.

View guided diff

@jdx
jdx requested a review from a team as a code owner October 8, 2026 15:28
Copilot AI balanced review requested due to automatic review settings October 8, 2026 15:28
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown

Sensitive Change Detection (shadow mode)

This PR modifies control-plane files:

  • .github/workflows/release.yml

Shadow mode — this check is informational only. When activated, changes to these paths will require approval from a maintainer.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 2 files

Reply to a comment to ask cubic a question or push back. It learns from your replies.

View guided diff | Re-trigger cubic

Comment thread tests/e2e/release_workflow.bats Resolved

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The production OIDC signing and release-upload path was not exercised and warrants human release-security review.

0 open findings

What changed in this PR

Adds optional signed Packslip manifests to releases without changing existing publication dependencies.

Changes:

  • Signs metadata for archives, completions, and the version-matched agent skill.
  • Separates signing and release-upload permissions.
  • Adds workflow contract tests for ordering and failure isolation.

[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

File Description
.github/​workflows/​release.yml Adds isolated Packslip signing and upload jobs.
tests/​e2e/​release_workflow.bats Tests ordering, failure gating, and permission separation.

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants