fix(noir): gate the release on noir bundle assets, not deprecated nargo ones - #25499
Merged
Merged
Conversation
AztecBot
force-pushed
the
cb/noir-release-bundle
branch
from
September 17, 2026 09:21
fcc9ff1 to
54b86c1
Compare
TomAFrench
approved these changes
Sep 17, 2026
TomAFrench
marked this pull request as ready for review
September 17, 2026 11:30
TomAFrench
enabled auto-merge
September 17, 2026 11:30
TomAFrench
added this pull request to the merge queue
Sep 17, 2026
ludamad
pushed a commit
to r3sako/aztec-packages
that referenced
this pull request
Sep 17, 2026
…d of asserting asset names (AztecProtocol#25501) Follow-up to [AztecProtocol#25499](AztecProtocol#25499), on review feedback that the script duplicates much of what noirup does. ## Problem That PR fixed the release gate by renaming the pattern it greps for — `nargo-*` → `noir-*.tar.gz`. It works, but it is the same class of bug waiting to happen: the gate encodes how noir names its release artifacts, which is noirup's job, so it goes stale the next time noir renames or restructures them. That rename is exactly what broke the release this morning. The two places in `noir/bootstrap.sh` that reach for a noir release also each spelled out their own noirup fetch. ## Change - `noirup_install <tag> <nargo_home>` — one helper that downloads noirup and installs a release into an isolated `NARGO_HOME`. `install_native_from_release` now calls it instead of inlining the fetch. - The release gate calls the same helper against the pinned tag and fails if it doesn't produce a `nargo`, rather than listing assets. It now checks the thing the error message has always claimed to check — that the install users run works — and no asset name appears in this repo. Side effects: - The gate checks the release for the platform CI runs on. The asset count didn't: a release missing its linux bundle but carrying a darwin one would have passed. - It downloads ~33 MB on the release path (`semver check $REF_NAME` only). `gh` is no longer used in this script. ## Verification Ran the gate block verbatim against real tags, fresh `NARGO_HOME` each time: | Pinned tag | Release contents | Result | | --- | --- | --- | | `v1.0.0-rc.2` (what `next` pins today) | bundle only | passes — `nargo version = 1.0.0-rc.2` | | `v1.0.0-beta.0` | legacy `nargo-*` only | passes — `nargo version = 1.0.0-beta.0`, via noirup's own fallback | | `v9.9.9-nope` | does not exist | exits 1: `noirup cannot install noir release 'v9.9.9-nope'` | `bash -n noir/bootstrap.sh` is clean. noirup exits non-zero on a failed install (checked against both a good and a bogus tag), so the gate does not need to interpret its output. ## Not done here On a release build `noir-repo` HEAD *is* the release tag, so the binaries this gate downloads are the ones the source build then spends ~10 minutes producing. Reusing them would be a real saving, but it changes what a release ships, so it wants its own PR and its own argument. --- *Created by [claudebox](https://claudebox.work/v2/sessions/a2f24d0ad33703de/jobs/6) · group: `slackbot` · requested by Tom (@TomAFrench) · [Slack thread](https://aztecfoundation.slack.com/archives/C02M7VC7TN0/p1789636009085019?thread_ts=1789636009.085019&cid=C02M7VC7TN0)*
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The release build fails in
noir(CI log, parent run):Noir no longer publishes per-binary
nargo-<triple>.tar.gzassets. A release ships one bundle per platform —noir-<arch>-<platform>.tar.gz, containingnargo,noir-execute,noir-profilerandnoir-inspectorat the archive root.nightly-2026-09-17andv1.0.0-rc.2(the current latest release) each carry fivenoir-*.tar.gzassets and zeronargo-*ones, so the preflight gate rejects releases that are in fact complete.Change
noir/bootstrap.sh— the release gate countsnoir-*.tar.gzbundle assets instead ofnargo-*. Its purpose is unchanged: refuse to cut an aztec release whose noirup install path would 404.install_native_from_releasekeeps using noirup, which fetches the bundle. The only other edit is a comment: the bundle shipsnoir-execute, which the old comment said the release omitted.Verification
bash -n noir/bootstrap.sh.The jq filter against real asset lists: 3 matches for a release carrying the bundles (
noir-lang-noir_js.tgz-style assets excluded), 0 for a release with only legacynargo-*assets or no assets — the gate still fails closed.v1.0.0-beta.26carries both namings, so it passes the gate either way;nightly-2026-09-17andv1.0.0-rc.2pass now and failed before.noirup (current
main, after fix: attempt the bundle download rather than probing for it noir-lang/noirup#69) installs from the bundle on a freshNARGO_HOME, so the copy loop ininstall_native_from_releasenow finds all three binaries it looks for:noirup -v …v1.0.0-rc.2nargo1.0.0-rc.2 +noir-execute,noir-inspector,noir-profilernightly-2026-09-17v1.0.0-beta.0nargo1.0.0-beta.0 via the legacy fallbackCreated by claudebox · group:
slackbot· requested by Tom (@TomAFrench) · Slack thread