Skip to content

[release] F: Preserve immutable SDK releases#116

Merged
ppenna merged 1 commit into
mainfrom
fix/idempotent-sdk-release
Jul 13, 2026
Merged

[release] F: Preserve immutable SDK releases#116
ppenna merged 1 commit into
mainfrom
fix/idempotent-sdk-release

Conversation

@ppenna

@ppenna ppenna commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Summary

When an SDK release coordinate already exists, compare all immutable provenance fields except the source commit. Matching tuples now leave the existing release and assets untouched and suppress downstream and Windows publication; skew still fails closed.

This fixes zutils-only/default-branch follow-ups such as BusyBox without weakening release immutability. SHA-qualified callers retain their intentionally unique coordinates.

Validation

  • 15 foundation tests
  • ShellCheck and shfmt
  • Actionlint v1.7.11

Treat an existing release with the same package and SDK tuple as a successful no-op, while failing on tuple skew and suppressing downstream/Windows publication. This keeps source-only follow-ups green without replacing assets.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 3a354ddf-0f65-44b2-a2cb-81d4662a3587
Copilot AI review requested due to automatic review settings July 13, 2026 04:38
@ppenna ppenna merged commit 1243c7d into main Jul 13, 2026
3 checks passed
@ppenna ppenna deleted the fix/idempotent-sdk-release branch July 13, 2026 04:39

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.

Pull request overview

This PR adjusts the Nanvix CI release workflow to preserve immutability for existing SDK releases by comparing provenance while ignoring the source_commit, and conditionally suppresses downstream redispatch/Windows publication when an identical immutable tuple already exists.

Changes:

  • Add a release_published job output and gate downstream dispatches/Windows release on it.
  • For existing SDK releases, compare provenance with source_commit removed; if identical, keep existing assets untouched and exit successfully without republishing.
  • Add a shell test asserting the new provenance-compare and suppression behavior is present in the workflow.
Show a summary per file
File Description
tests/run-tests.sh Adds assertions that the workflow strips source_commit, emits release_published=false, and gates follow-on jobs on release_published.
.github/workflows/nanvix-ci.yml Introduces provenance tuple comparison for existing SDK releases and suppresses downstream/Windows publication when the release is unchanged.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Low

! cmp -s sdk-provenance.json existing-release/sdk-provenance.json; then
echo "::error::Refusing to clobber $RELEASE_TAG from a different SDK build"
--dir existing-release; then
echo "::error::Existing SDK release has no provenance asset"
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.

2 participants