Skip to content

Verify the release package on a runtime the release runner can execute - #10

Merged
Miguel249 merged 1 commit into
mainfrom
ci/release-verify-host
Aug 10, 2026
Merged

Verify the release package on a runtime the release runner can execute#10
Miguel249 merged 1 commit into
mainfrom
ci/release-verify-host

Conversation

@Miguel249

Copy link
Copy Markdown
Owner

v0.4.0's release run failed, before the push. Nothing reached nuget.org —
0.1.0, 0.2.0 and 0.3.0 are still all that is there, and no GitHub release
object was created either, because both of those steps come after the one that
failed.

What broke. The publish job verifies that a fresh consumer can install and
run the packages before pushing them, and it asked for linux-x64. That was
correct while the job ran on ubuntu-latest. 8597427 moved it to macOS so the
iOS workload could be installed — there is no Linux host pack for it — and this
step stayed behind. verify-package.ps1 publishes a consumer and runs a
simulation through it
, so the RID has to be one the runner can execute:

Program 'consumer' failed to run ... Exec format error

a perfectly good ELF binary, built on a Mac.

Not the runner migration. v0.3.0 published from ubuntu-latest with this
same line, and #9 only changed macos-14 to macos-15. The break arrived with
the mobile PR and was invisible for two days because release.yml runs on a tag
and nothing else — a break in it survives any number of green CI runs and
surfaces at the one moment it is most expensive.

The fix is osx-arm64, the host's own identifier. CI already covers the
other five against the same packed .nupkg on runners that can run them; what
this step adds is that the exact files about to become permanent were installed
and executed once more, which it can only do for this machine.

After this merges, v0.4.0 gets deleted and re-pushed. The tag published
nothing and has no release attached, so there is nothing to supersede.

🤖 Generated with Claude Code

The publish job checks that a fresh consumer can install and run the packages
before it pushes them, and it asked for linux-x64. That was right while the job
ran on ubuntu. It moved to macOS in 8597427, so that the iOS workload could be
installed at all - there is no Linux host pack for it - and this step did not
move with it.

verify-package.ps1 does not merely restore the package. It publishes a consumer
and runs a simulation through it, so the runtime identifier has to be one the
runner can execute. Building an ELF binary on a Mac and starting it gets:

  Program 'consumer' failed to run ... Exec format error

which is what v0.4.0's first attempt died on. Nothing had been pushed, because
this step runs before the push - that ordering is the reason the failure cost
nothing but a re-tag.

osx-arm64 is the host's own identifier. CI covers the other five against the
same packed .nupkg on runners that can run them; what this step adds is that
the exact files about to become permanent were installed and executed once
more, and it can only do that for this machine.

Worth noting where this hid: release.yml runs on a tag and nothing else, so a
break in it survives any number of green CI runs and surfaces at the one moment
it is most expensive.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Miguel249
Miguel249 merged commit 656593e into main Aug 10, 2026
23 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