Skip to content

fix(noir): gate the release on noir bundle assets, not deprecated nargo ones - #25499

Merged
TomAFrench merged 1 commit into
nextfrom
cb/noir-release-bundle
Sep 17, 2026
Merged

TomAFrench merged 1 commit into
nextfrom
cb/noir-release-bundle

Conversation

@AztecBot

@AztecBot AztecBot commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Problem

The release build fails in noir (CI log, parent run):

Checking noir release nightly-2026-09-17 for nargo binary assets...
Error: Noir release 'nightly-2026-09-17' exists but has no nargo binary assets.

Noir no longer publishes per-binary nargo-<triple>.tar.gz assets. A release ships one bundle per platform — noir-<arch>-<platform>.tar.gz, containing nargo, noir-execute, noir-profiler and noir-inspector at the archive root. nightly-2026-09-17 and v1.0.0-rc.2 (the current latest release) each carry five noir-*.tar.gz assets and zero nargo-* ones, so the preflight gate rejects releases that are in fact complete.

Change

noir/bootstrap.sh — the release gate counts noir-*.tar.gz bundle assets instead of nargo-*. Its purpose is unchanged: refuse to cut an aztec release whose noirup install path would 404. install_native_from_release keeps using noirup, which fetches the bundle. The only other edit is a comment: the bundle ships noir-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 legacy nargo-* assets or no assets — the gate still fails closed.

  • v1.0.0-beta.26 carries both namings, so it passes the gate either way; nightly-2026-09-17 and v1.0.0-rc.2 pass 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 fresh NARGO_HOME, so the copy loop in install_native_from_release now finds all three binaries it looks for:

    noirup -v … release contents result
    v1.0.0-rc.2 bundle only nargo 1.0.0-rc.2 + noir-execute, noir-inspector, noir-profiler
    nightly-2026-09-17 bundle only same four binaries
    (no flag — latest) bundle only same four binaries
    v1.0.0-beta.0 legacy only nargo 1.0.0-beta.0 via the legacy fallback

Created by claudebox · group: slackbot · requested by Tom (@TomAFrench) · Slack thread

@AztecBot AztecBot added ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure claudebox Owned by claudebox. it can push to this PR. labels Sep 17, 2026
@AztecBot AztecBot changed the title fix(noir): pull nargo from the noir release bundle fix(noir): gate the release on noir bundle assets, not deprecated nargo ones Sep 17, 2026
@AztecBot
AztecBot force-pushed the cb/noir-release-bundle branch from fcc9ff1 to 54b86c1 Compare September 17, 2026 09:21
@TomAFrench
TomAFrench marked this pull request as ready for review September 17, 2026 11:30
@TomAFrench
TomAFrench added this pull request to the merge queue Sep 17, 2026
Merged via the queue into next with commit 7e77aff Sep 17, 2026
26 checks passed
@TomAFrench
TomAFrench deleted the cb/noir-release-bundle branch September 17, 2026 12:18
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)*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants