Skip to content

ci: run the Rust codegen canary on PRs that touch the Rust backend - #1426

Merged
jasisz merged 1 commit into
mainfrom
ci/rust-codegen-on-prs
Sep 25, 2026
Merged

jasisz merged 1 commit into
mainfrom
ci/rust-codegen-on-prs

Conversation

@jasisz

@jasisz jasisz commented Sep 25, 2026

Copy link
Copy Markdown
Owner

The Rust codegen workflow (corpus check and the btc-listener downstream canary) ran only nightly and on dispatch. #1424 needed a manual dispatch to get the downstream check.

  • rust-codegen.yml now also runs on pull_request to main, limited by paths: to what feeds the Rust backend: src/codegen/rust/**, src/codegen/common.rs, src/codegen/mod.rs, src/codegen/builtin*.rs, src/ir/mir/** (lowering and the own_param pass), src/ir/{alias,escape,last_use}.rs (ownership facts the Rust emitter reads), src/yield_lowering/**, src/provider/**, stdlib/capabilities/**, aver-rt/**, self_hosted/**, tests/rust_codegen_regression.rs and the workflow itself. The nightly cron and dispatch stay.
  • A PR-scoped concurrency group cancels a superseded canary run on a new push; nightly and dispatch runs are never cancelled.
  • Job names (Rust codegen regression, Rust codegen downstream (btc-listener)) are unchanged and do not collide with any CI job. main has no required status checks.

wasm_host_work_spec::javascript_workers_run_the_coordinator_and_progress_independently used node from PATH and failed on Node 20. It now takes AVER_NODE when set, else node on PATH when it is Node 22+, else the newest Node 22+ under ~/.nvm/versions/node. Without one it prints a SKIP line naming what it tried; when CI is set (the wasm-gc lane installs Node 24 with actions/setup-node) a missing Node still fails.

Checked locally: passes with Node 22, 25 and 26 (auto-picked from nvm with Node 20 on PATH); skips with AVER_NODE on Node 20; fails with a clear message under CI=1 and Node 20.

The Rust codegen workflow ran only nightly and on dispatch, so a PR
changing Rust codegen merged without the btc-listener downstream check.
It now also runs on pull requests whose paths feed the Rust backend: the
Rust emitter, shared codegen, MIR and its ownership passes, native
providers and capability contracts, aver-rt, yield lowering and the
self-hosted sources. The nightly schedule stays. A newer push to the same
PR cancels the running canary. Neither job is a required check.

The JS Work host test picked `node` from PATH and failed on Node 20. It
now uses AVER_NODE when set, else `node` on PATH if it is Node 22 or
newer, else the newest suitable nvm install. With none, it skips with a
message naming what it tried; under CI, where the wasm-gc lane installs
Node 24, it still fails.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@jasisz
jasisz merged commit b547df4 into main Sep 25, 2026
28 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