Skip to content

ci: pin nushell version to 0.112.2#2440

Merged
max-sixty merged 1 commit intomainfrom
fix-ci-pin-nushell-version
Apr 28, 2026
Merged

ci: pin nushell version to 0.112.2#2440
max-sixty merged 1 commit intomainfrom
fix-ci-pin-nushell-version

Conversation

@worktrunk-bot
Copy link
Copy Markdown
Collaborator

Summary

  • The version: '*' specifier in hustcer/setup-nu@v3 started failing on macOS arm64 around 2026-04-27 16:48Z with No release for Nushell matching version specifier * of default feature. The action SHA was unchanged, so this is an upstream regression in the wildcard resolution path.
  • Earlier successful runs (e.g. 25003041167) resolved * to 0.112.2, so pinning to that version restores the previous behavior and makes the build reproducible.
  • Same pinning philosophy as a985e24 (pre-commit hook revs) — concrete versions over moving refs.

Fixes the failing test (macos) check on #2438 and on main.

Test plan

  • test (linux) passes
  • test (macos) passes — the previously failing job
  • test (windows) passes (nushell step is skipped on Windows; unaffected)
  • code-coverage and benchmarks jobs still install nushell successfully

The `version: '*'` specifier in `hustcer/setup-nu@v3` started failing
on macOS arm64 around 2026-04-27 16:48Z with "No release for Nushell
matching version specifier *". The action SHA was unchanged, so this
is an upstream regression in the wildcard resolution path. Earlier
runs resolved `*` to 0.112.2, so pinning to that version restores
the previous behavior and makes the build reproducible.

This matches the pinning approach taken for pre-commit hook revs in
a985e24 — concrete versions over moving refs.
Copy link
Copy Markdown
Collaborator Author

@worktrunk-bot worktrunk-bot left a comment

Choose a reason for hiding this comment

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

The pin doesn't actually unblock CI. This run's test (linux), test (macos), code-coverage, and benchmarks all fail at the Install nushell step with:

##[error]No release for Nushell matching version specifier 0.112.2 of default feature.

(See e.g. test (macos) job.)

The PR description's diagnosis — "an upstream regression in the wildcard resolution path" — doesn't match the action's code. * and 0.112.2 both flow through filterMatch(response, versionSpec, 'default') in hustcer/setup-nu's src/setup.ts (source). The only difference is the final semver.satisfies(rel.version, versionSpec) check, which accepts 0.112.2 against either spec. So pinning shouldn't change the outcome — and empirically it doesn't.

The actual symptom is that the action runs octokit.repos.listReleases for nushell/nushell and ends up with no asset-bearing entries on the first page (it done()s after the first page regardless of match). That suggests an upstream / API-side issue with the action, not a worktrunk-side fix surface. Possible angles to try instead:

  • Bump the action (e.g. test against develop SHA 22f3623) to see whether the recent dep upgrade helps.
  • Replace hustcer/setup-nu with a direct cargo install nu --locked --version 0.112.2 or a curl-and-extract from nu-0.112.2-x86_64-unknown-linux-gnu.tar.gz, removing the action dependency entirely.
  • File an issue against hustcer/setup-nu with the failing run logs — the maintainer may already be tracking this.

Recommendation: close this PR. The pin doesn't change behavior, and the underlying setup-nu failure needs a different fix.

@worktrunk-bot
Copy link
Copy Markdown
Collaborator Author

Confirming the review's diagnosis. The pin to 0.112.2 fails with the same upstream error on this run (test (linux), test (macos), code-coverage, benchmarks all fail at Install nushell), and release 0.112.2 exists upstream with all expected assets — the failure is in hustcer/setup-nu's asset discovery, not version specifier handling. Deferring to @max-sixty on whether to close this and pursue an alternative.

@max-sixty
Copy link
Copy Markdown
Owner

check again

@max-sixty
Copy link
Copy Markdown
Owner

add bumping this to our weekly-maintenence job

@max-sixty
Copy link
Copy Markdown
Owner

add bumping this to our weekly-maintenence job

@worktrunk-bot can you add this?

@worktrunk-bot
Copy link
Copy Markdown
Collaborator Author

Rechecked — re-running the failed jobs on the same commit (669e732c, no changes) now passes all checks (test (linux), test (macos), code-coverage, benchmarks).

What this means:

  • The setup-nu@v3 SHA (92c296ba) was identical in the failing 19:31Z run and the now-passing 23:51Z rerun, and identical to the last *-resolved success at 15:09Z. Nothing in our config or upstream's code changed between those runs.
  • Failure timing was suspicious: Try to get assets… → error in ~5ms with no HTTP latency, on every job in parallel, starting 16:48Z. Consistent with octokit.repos.listReleases returning empty response.data due to GitHub API rate limiting (the action gives the same No release for Nushell matching version specifier ... error whether the spec is * or 0.112.2).
  • Once the rate window cleared, the same code worked again.

So the 0.112.2 pin doesn't fix the root cause — the rate-limit behavior is still latent and could recur if many jobs hit setup-nu in parallel. But the pin is still worth keeping for reproducibility, matching the pre-commit-rev pinning philosophy in the PR description.

Up to you whether to merge as-is for the reproducibility win, or replace setup-nu with a direct binary download (curl + tar of the GitHub release asset) to avoid the listReleases call entirely. Happy to draft that change if you'd prefer.

@worktrunk-bot
Copy link
Copy Markdown
Collaborator Author

Opened #2443 to add a "Weekly Maintenance: Nushell Pin" section to the running-tend skill — the weekly job will check nushell/nushell for a newer release and bump all three setup-nu invocations in .github/workflows/ci.yaml.

@max-sixty max-sixty merged commit b839316 into main Apr 28, 2026
33 of 37 checks passed
@max-sixty max-sixty deleted the fix-ci-pin-nushell-version branch April 28, 2026 02:35
max-sixty added a commit that referenced this pull request Apr 28, 2026
## Summary

Adds a `Weekly Maintenance: Nushell Pin` section to `running-tend` so
the weekly job picks up upstream nushell releases. PR #2440 pinned
`hustcer/setup-nu@v3` to a concrete version after the `version: '*'`
path went flaky under GitHub API rate limiting; without an ongoing bump
task the pin will drift.

The new section sits next to the existing weekly entries
(MSRV/Toolchain, Statusline Cache-Check) and points at all three
`setup-nu` invocations in `.github/workflows/ci.yaml`.

Requested in
#2440 (comment).

## Test plan

- [ ] Skill rendering: section appears under the existing "Weekly
Maintenance:" headings, no formatting regressions.

---------

Co-authored-by: worktrunk-bot <254187624+worktrunk-bot@users.noreply.github.com>
Co-authored-by: worktrunk-bot <worktrunk-bot@users.noreply.github.com>
Co-authored-by: Maximilian Roos <5635139+max-sixty@users.noreply.github.com>
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