ci: add a nightly toolchain canary - #169
Conversation
`moonbitlang/core` 0.10.12 removed `moonbitlang/core/strconv`, and the dead import in `rabbita/url/moon.pkg` only surfaced when a user's build failed package solving — `check.yml` pins the stable toolchain, so nothing in CI saw it coming. Run `moon check` for js, native, and wasm at the workspace root, so every `moon.work` member is covered and a package a nightly `core` release drops is caught while resolving imports, before anything compiles. Verified against nightly (moonc v0.10.11+9de356786-nightly): the workspace is clean, and re-adding the `strconv` import fails the step with "Cannot find import 'moonbitlang/core/strconv'". Deliberately no `--deny-warn`, `moon fmt`, or `moon info` here. Nightly deprecates ahead of stable and formats differently, so those would fail for reasons that are not regressions; the stable job stays the gate for them. Warnings land in the step summary instead — currently 474 `implicit_impl_as_method` (the deprecation of implicit trait-impl promotion), 2 `unused_errdefer`, and 1 `deprecated`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmoyPMELemz5hdNNdXyAkm
|
The
This PR is therefore blocked on #170, which replaces mocket with Verified both directions locally against nightly (
So: merge #170 first, then this goes green with no change needed here. Happy to rebase this onto #170 instead if you'd rather see it passing before merging either. 🤖 Generated with Claude Code |
moonbitlang/core0.10.12 removedmoonbitlang/core/strconv. The dead import inrabbita/url/moon.pkgwas harmless until then, and when it stopped being harmless it broke consumers — any module depending on rabbita failed package solving before a file was compiled.check.ymlpins the stable toolchain, so nothing in CI saw it coming (#168 was the fix, found the hard way).This adds a scheduled canary against the nightly toolchain.
What it runs
Daily at 04:00 UTC, plus
workflow_dispatch, pluspull_requeston the workflow file itself so changes to it get exercised. It installs nightly viainstall/unix.sh | bash -s nightlyand runsmoon checkfor js, native, and wasm at the workspace root — which covers everymoon.workmember, so a package a nightlycorerelease drops is caught while resolving imports.What it deliberately does not run
No
--deny-warn,moon fmt, ormoon info. Nightly deprecates ahead of stable and formats differently, so all three would fail for reasons that aren't regressions and the job would be permanently red.check.ymlstays the gate for those. Warnings go into$GITHUB_STEP_SUMMARYas a count-by-kind table instead.Verification
Ran against nightly locally (
moonc v0.10.11+9de356786-nightly, installed into a scratchMOON_HOME):corereally has nostrconv— absent fromlib/core, present in stableimplicit_impl_as_method(nightly deprecating implicit trait-impl promotion — this will needpub extend T with Trait::{...}eventually), 2unused_errdefer, 1deprecated(Array::new()). All pre-existing, none blocking."moonbitlang/core/strconv"torabbita/url/moon.pkgand running this workflow's exact step script underbash -eexits non-zero withCannot find import 'moonbitlang/core/strconv', and aborts on the first failing target rather than running all three.🤖 Generated with Claude Code
https://claude.ai/code/session_01AmoyPMELemz5hdNNdXyAkm