Skip to content

ci: speed up windows tests and snapshot tests - #3688

Merged
sxlijin merged 1 commit into
canaryfrom
sam/ci-restructure
Jun 5, 2026
Merged

sxlijin merged 1 commit into
canaryfrom
sam/ci-restructure

Conversation

@sxlijin

@sxlijin sxlijin commented Jun 4, 2026 •

Copy link
Copy Markdown
Contributor
  • windows sdk tests build faster now (less redundant uv sync / pnpm install)
  • use 8vcpu windows runners (they schedule faster)
  • on 8vcpu windows runners, use -j16 to better saturate cpu (sccache usage means build is i/o bound)
  • use mise for tool installation always
  • make snapshot tests use an 8vcpu machine

Summary by CodeRabbit

  • Chores
    • Consolidated tool installation into a shared setup, added nextest/insta tooling, and updated cache versioning.
    • Adjusted self-hosted runner targets and job-level build parallelism for faster, more consistent CI runs.
  • Tests
    • Streamlined SDK and snapshot test workflows and improved Windows Python test setup by prebuilding and installing shared wheels.

@vercel

vercel Bot commented Jun 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
beps Ready Ready Preview, Comment Jun 5, 2026 10:38am
new-boundaryml-website Error Error Jun 5, 2026 10:38am
promptfiddle Ready Ready Preview, Comment Jun 5, 2026 10:38am
promptfiddle2 Error Error Jun 5, 2026 10:38am

Request Review

@github-actions

github-actions Bot commented Jun 4, 2026 •

Copy link
Copy Markdown

⏭️ Performance benchmarks were skipped

Perf benchmarks (CodSpeed) are opt-in on pull requests — they no longer run on every push. They always run automatically after merge to canary/main.

To run them on this PR, do any of the following, then push a commit (or re-run CI):

  • Add RUN_CODSPEED=1 to the PR description, or
  • Include run-perf or /perf in the PR title or any commit message.

@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 08:46 Inactive
@coderabbitai

coderabbitai Bot commented Jun 4, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: fee4de6c-b873-4fcd-95e3-4b1810e3cc34

📥 Commits

Reviewing files that changed from the base of the PR and between eab40b0 and 3b1029c.

📒 Files selected for processing (7)
  • .github/actionlint.yaml
  • .github/actions/setup-mise/action.yml
  • .github/workflows/cargo-tests.reusable.yaml
  • .github/workflows/size-gate.reusable.yaml
  • baml_language/.config/nextest.toml
  • baml_language/sdk_tests/crates/python_pydantic2/setup.ps1
  • mise.toml
✅ Files skipped from review due to trivial changes (2)
  • .github/actionlint.yaml
  • mise.toml
🚧 Files skipped from review as they are similar to previous changes (4)
  • .github/actions/setup-mise/action.yml
  • baml_language/.config/nextest.toml
  • baml_language/sdk_tests/crates/python_pydantic2/setup.ps1
  • .github/workflows/cargo-tests.reusable.yaml

📝 Walkthrough

Walkthrough

This PR consolidates CI tool installation via mise and optimizes build infrastructure. It adds cargo-nextest and cargo-insta to mise configuration, consolidates their installation across all test jobs via setup-mise instead of separate steps, reduces runner sizes on Linux and snapshot tests, switches Windows to a newer 8-vCPU runner with optimized job environment, and refactors Windows Python SDK test builds to prebuild a shared baml_core wheel and reuse it across fixtures.

Changes

CI Tool Consolidation & Windows Python Wheel Caching

Layer / File(s) Summary
Tool configuration and cache versioning
mise.toml, .github/actions/setup-mise/action.yml
Add cargo-nextest and cargo-insta to mise tool mappings; increment setup-mise cache prefix from mise-baml1 to mise-baml2.
Cargo test workflow consolidation
.github/workflows/cargo-tests.reusable.yaml, .github/workflows/size-gate.reusable.yaml, .github/actionlint.yaml
Consolidate tool installation into setup-mise across Linux, macOS, Windows, SDK test matrix, and snapshot jobs; remove standalone taiki-e install steps; change Linux/snapshot runner sizes and switch Windows jobs to blacksmith-8vcpu-windows-2025; add CARGO_BUILD_JOBS: "16" where specified; update allowed self-hosted runner labels.
Windows Python SDK test wheel caching
baml_language/sdk_tests/crates/python_pydantic2/setup.ps1, baml_language/.config/nextest.toml
Prebuild baml_core once via maturin build into target/wheels, set UV_FIND_LINKS, remove fixture [tool.uv.sources], and run per-fixture uv sync to install the wheel; update nextest comment to document platform-specific setup.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • BoundaryML/baml#3553: Standardizes CI tool installation around ./.github/actions/setup-mise and added cargo tooling via mise.
  • BoundaryML/baml#3644: Modifies sdk-test-matrix / sdk-tests to install cargo-nextest via setup-mise and consolidates tool installation.
  • BoundaryML/baml#3590: Related changes to Windows setup.ps1 for building/installing baml_core into fixture environments.

Poem

🐰 I hopped through mise to fetch new tools,

One wheel was built, then used by many schools,
Fewer cores, same tests, a tidy run,
Fixtures sip the wheel—no builds for each one,
Hooray, the CI garden's neatly done!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'ci: speed up windows tests and snapshot tests' clearly and concisely summarizes the main changes: upgrading Windows runners to 8vCPU, adding CARGO_BUILD_JOBS=16, consolidating tool installation via mise, and upgrading snapshot tests to 8vCPU machines.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sam/ci-restructure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sxlijin
sxlijin marked this pull request as ready for review June 4, 2026 08:50
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 08:51 Inactive
@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from 6c664dc to fe2f9af Compare June 4, 2026 08:52
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 08:52 Inactive

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6c664dcc85

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

anyhow = { workspace = true }
flate2 = { workspace = true }
reqwest = { workspace = true, features = [ "blocking", "rustls" ] }
reqwest = { workspace = true, features = [ "blocking", "rustls-no-provider" ] }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Restore a rustls provider for release downloads

When this crate is used by the standalone baml wrapper (which now also enables only rustls-no-provider in crates/baml/Cargo.toml:19 and has no sys_native/baml_lsp_server dependency), no code calls rustls::crypto::*::install_default() before download_bytes() builds its blocking HTTPS client. reqwest's no-provider mode requires a process-default rustls provider, so install/update paths that fetch GitHub releases fail at client construction instead of downloading. Please either keep a provider feature on these downloader crates or install one before building the client.

Useful? React with 👍 / 👎.

@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 08:53 Inactive
@github-actions

github-actions Bot commented Jun 4, 2026 •

Copy link
Copy Markdown

Binary size checks passed

✅ 7 passed

Artifact Platform File Gzip Gated on Baseline Delta Status
✅ baml-cli Linux 🔒 17.8 MB 7.6 MB file 24.1 MB -6.3 MB (-26.0%) OK
✅ packed-program Linux 🔒 12.9 MB 5.5 MB file 15.1 MB -2.2 MB (-14.4%) OK
✅ baml-cli macOS 🔒 13.6 MB 6.6 MB file 18.2 MB -4.6 MB (-25.3%) OK
✅ packed-program macOS 🔒 9.9 MB 4.8 MB file 11.5 MB -1.6 MB (-14.3%) OK
✅ baml-cli Windows 🔒 14.6 MB 6.7 MB file 19.6 MB -5.0 MB (-25.4%) OK
✅ packed-program Windows 🔒 10.4 MB 4.8 MB file 12.2 MB -1.8 MB (-14.8%) OK
✅ bridge_wasm WASM 11.9 MB 🔒 3.4 MB gzip 3.9 MB -501.0 KB (-12.9%) OK

🔒 = the size this artifact is GATED on (ceiling + delta). Binaries gate on file size (installed binary); WASM gates on gzip (download size). The other size is shown for information only.


Generated by cargo size-gate · workflow run

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/cargo-tests.reusable.yaml:
- Around line 59-66: Add an explicit CI validation step that actually
compiles/tests with the RING_FEATURES environment to catch any missing/typo
features or compilation regressions: in the reusable workflow where
RING_FEATURES is defined, add a job/step that exports RING_FEATURES and runs
`cargo check --no-default-features --features "$RING_FEATURES"` (or `cargo
build`/`cargo test` as appropriate) and make it robust to network flakiness by
enabling cargo retry/cache or increasing fetch timeout so the CI run validates
the crypto-provider migration and heap_debug/ring-crypto feature combinations
referenced by the RING_FEATURES variable.

In `@baml_language/crates/baml_release/Cargo.toml`:
- Line 22: baml_release enables reqwest with rustls-no-provider but never
installs a rustls crypto provider; update the crate so the provider is installed
before any blocking HTTPS requests by calling the provider installer (e.g.
rustls_crypto_provider::install_default() or
sys_native::ensure_rustls_crypto_provider()) from inside baml_release: either
invoke it at crate initialization or call it in Fetcher::new (and/or at the
start of download_bytes()) so every Fetcher/request guarantees the provider is
present before using reqwest::blocking::Client.

In `@baml_language/crates/baml/Cargo.toml`:
- Line 19: The project enables reqwest with rustls-no-provider in baml's
Cargo.toml which requires a concrete rustls crypto provider at runtime; add
explicit wiring so every shipped binary that depends on baml declares a
sys_native dependency (with ring-crypto or aws-crypto features) or ensure baml
itself calls sys_native::ensure_rustls_crypto_provider() /
CryptoProvider::install_default() during guaranteed runtime initialization;
locate the reqwest = { workspace = true, features =
["blocking","rustls-no-provider"] } entry and either add a corresponding
sys_native dependency in each consuming Cargo.toml or move the
ensure_rustls_crypto_provider()/CryptoProvider::install_default() call into
baml's init path so consumers no longer must declare the provider.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: ef72151c-ea1a-4c06-9c24-6349215459ff

📥 Commits

Reviewing files that changed from the base of the PR and between 51eb9c0 and 6c664dc.

📒 Files selected for processing (6)
  • .github/workflows/cargo-tests.reusable.yaml
  • baml_language/crates/baml/Cargo.toml
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/baml_tests/Cargo.toml
  • baml_language/crates/bex_engine/Cargo.toml
  • mise.toml

Comment thread baml_language/crates/baml/Cargo.toml Resolved
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 09:00 Inactive
@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from fe2f9af to f8806e4 Compare June 4, 2026 09:03
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 09:03 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 09:04 Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (3)
.github/workflows/cargo-tests.reusable.yaml (3)

239-245: 💤 Low value

macOS archive job doesn't collect cargo timings or sccache stats.

The cross-build step at line 242 uses cargo nextest archive without --timings, and the job has no sccache stats collection steps. The merged artifact jobs (lines 945-957) now depend on this job but won't receive any timing/stats artifacts from it.

If tracking cross-build performance is valuable, consider adding --timings to the archive command and the sccache stats steps (similar to lines 138-163 in the Linux job). Otherwise, this is fine as-is since cross-build metrics may be less actionable.

Also applies to: 945-957

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/cargo-tests.reusable.yaml around lines 239 - 245, The
macOS cross-build archive invocation using cargo nextest archive (the command
creating "$RUNNER_TEMP/macos-tests.tar.zst") is missing timing and sccache stats
collection; update that command to include the --timings flag and add the same
sccache stats steps used in the Linux job (the block that collects sccache
--show-stats output and uploads it as artifact) so the merged-artifact jobs that
depend on this run (the jobs referenced around the merged artifact block) will
receive timing and sccache artifacts as well.

166-254: 💤 Low value

Missing Swatinem/rust-cache step in the macOS archive job.

The Linux job (line 98-104) uses Swatinem/rust-cache to cache the Cargo registry and git checkouts, but this cross-build job doesn't include it. While sccache handles compilation artifacts, the registry/git cache can still save significant fetch time for the large git forks mentioned in the header comments.

Consider adding a rust-cache step with a darwin-specific shared-key (e.g., "linux-darwin-cross") if cross-target builds can share registry state with native Linux builds, or confirm this omission is intentional because the job already benefits from the cargo fetch and sccache hitting warm artifacts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/cargo-tests.reusable.yaml around lines 166 - 254, Add the
missing Swatinem/rust-cache step into the cargo-test-macos-archive job to cache
Cargo registry/git checkouts: insert a step using Swatinem/rust-cache (e.g.,
uses: Swatinem/rust-cache@v1) before the "Fetch cargo dependencies" step,
configure it to cache cargo registry and git checkouts and set a darwin-aware
shared-key like "linux-darwin-cross" (or an appropriate shared-key per your
cache policy) so cross-builds reuse the registry/git cache; ensure the step runs
in the same job "cargo-test-macos-archive" and does not conflict with existing
sccache usage.

255-279: 💤 Low value

Consider adding failure artifact upload for the macOS run job.

The Linux job (lines 129-136) uploads test failures (*.snap.new, target/nextest/) when tests fail, but this macOS run job doesn't have an equivalent step. While the binaries are prebuilt, uploading nextest output on failure would help debug test failures without re-running locally.

📦 Optional: Add failure artifact upload
      - name: "Upload test results on failure"
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: test-failures-macos
          path: |
            baml_language/**/target/nextest/
          if-no-files-found: ignore
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/cargo-tests.reusable.yaml around lines 255 - 279, The
macOS job cargo-test-macos-run lacks a failure artifact upload step; add a step
after the "Run prebuilt tests (no build)" step that runs only on failure (if:
failure()), uses actions/upload-artifact@v7, and uploads nextest outputs and
snapshot diffs (e.g., baml_language/**/target/nextest/ and any *.snap.new files)
with a descriptive artifact name like test-failures-macos and if-no-files-found:
ignore so debugging artifacts are available when tests fail.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/cargo-tests.reusable.yaml:
- Around line 239-245: The macOS cross-build archive invocation using cargo
nextest archive (the command creating "$RUNNER_TEMP/macos-tests.tar.zst") is
missing timing and sccache stats collection; update that command to include the
--timings flag and add the same sccache stats steps used in the Linux job (the
block that collects sccache --show-stats output and uploads it as artifact) so
the merged-artifact jobs that depend on this run (the jobs referenced around the
merged artifact block) will receive timing and sccache artifacts as well.
- Around line 166-254: Add the missing Swatinem/rust-cache step into the
cargo-test-macos-archive job to cache Cargo registry/git checkouts: insert a
step using Swatinem/rust-cache (e.g., uses: Swatinem/rust-cache@v1) before the
"Fetch cargo dependencies" step, configure it to cache cargo registry and git
checkouts and set a darwin-aware shared-key like "linux-darwin-cross" (or an
appropriate shared-key per your cache policy) so cross-builds reuse the
registry/git cache; ensure the step runs in the same job
"cargo-test-macos-archive" and does not conflict with existing sccache usage.
- Around line 255-279: The macOS job cargo-test-macos-run lacks a failure
artifact upload step; add a step after the "Run prebuilt tests (no build)" step
that runs only on failure (if: failure()), uses actions/upload-artifact@v7, and
uploads nextest outputs and snapshot diffs (e.g.,
baml_language/**/target/nextest/ and any *.snap.new files) with a descriptive
artifact name like test-failures-macos and if-no-files-found: ignore so
debugging artifacts are available when tests fail.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: de62007b-8950-4b99-a572-06a5c36668f8

📥 Commits

Reviewing files that changed from the base of the PR and between 6c664dc and fe2f9af.

📒 Files selected for processing (6)
  • .github/workflows/cargo-tests.reusable.yaml
  • baml_language/crates/baml/Cargo.toml
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/baml_tests/Cargo.toml
  • baml_language/crates/bex_engine/Cargo.toml
  • mise.toml
✅ Files skipped from review due to trivial changes (2)
  • baml_language/crates/baml_tests/Cargo.toml
  • baml_language/crates/baml/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (3)
  • mise.toml
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/bex_engine/Cargo.toml

@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 09:09 Inactive
@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from f8806e4 to 3f6ba20 Compare June 4, 2026 09:09
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 09:10 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 09:10 Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/cargo-tests.reusable.yaml:
- Line 181: Replace tag-pinned GitHub Action references with immutable commit
SHAs: find the `uses:` entries referencing actions like
`useblacksmith/checkout@v1` (and the other tag-pinned uses at the mentioned
locations) and update each to the corresponding full commit SHA (e.g.,
`useblacksmith/checkout@<full-commit-sha>`). Ensure you look for the exact
`uses:` lines in the workflow and substitute the tag suffix (`@v1`, `@v6`,
`@v7`, etc.) with the full commit SHA for that action repository so the workflow
is pinned immutably.
- Around line 171-176: The cargo-test-macos-archive job currently always runs
and will hard-fail on fork PRs lacking R2 secrets; modify the workflow to gate
the archive path on the presence of the required secrets (or implement the
native-Mac fallback) by adding a conditional that checks the R2 secret variables
before running the cargo-test-macos-archive job (and the related archive steps
referenced around cargo-test-macos-run); ensure you target the job name
cargo-test-macos-archive and any archive/fetch steps so they only execute when
the R2 secrets exist (apply the same conditional to the other affected job block
around lines 207-219).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: fd06c961-c748-48b2-a558-39886beb93a1

📥 Commits

Reviewing files that changed from the base of the PR and between fe2f9af and f8806e4.

📒 Files selected for processing (6)
  • .github/workflows/cargo-tests.reusable.yaml
  • baml_language/crates/baml/Cargo.toml
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/baml_tests/Cargo.toml
  • baml_language/crates/bex_engine/Cargo.toml
  • mise.toml
✅ Files skipped from review due to trivial changes (2)
  • baml_language/crates/baml/Cargo.toml
  • mise.toml
🚧 Files skipped from review as they are similar to previous changes (3)
  • baml_language/crates/baml_tests/Cargo.toml
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/bex_engine/Cargo.toml

@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 09:16 Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
.github/workflows/cargo-tests.reusable.yaml (1)

173-219: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Gate the macOS archive path when the SDK credentials are absent.

These secrets are optional at the workflow boundary, but Line 207 still unconditionally attempts the private SDK download. If either env var is empty, aws s3 cp fails before the archive upload, so cargo-test-macos-run never gets an artifact to execute. Gate this job on credential presence or keep the native-mac fallback for secretless runs.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/cargo-tests.reusable.yaml around lines 173 - 219, The job
cargo-test-macos-archive unconditionally tries to download the private macOS SDK
using BAML_SCCACHE_R2_ACCESS_KEY_ID and BAML_SCCACHE_R2_SECRET_ACCESS_KEY; guard
that step (or the whole job) so it only runs when those secrets are present.
Change the "Download macOS SDK from R2 + set SDKROOT" step to check the env vars
(BAML_SCCACHE_R2_ACCESS_KEY_ID and BAML_SCCACHE_R2_SECRET_ACCESS_KEY) and skip
the aws s3 cp / SDKROOT export if they are empty (or alternatively gate the
entire cargo-test-macos-archive job with an if: that requires those env vars),
ensuring cargo-test-macos-run still receives a valid artifact or the workflow
falls back to the native-mac path when credentials are absent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In @.github/workflows/cargo-tests.reusable.yaml:
- Around line 173-219: The job cargo-test-macos-archive unconditionally tries to
download the private macOS SDK using BAML_SCCACHE_R2_ACCESS_KEY_ID and
BAML_SCCACHE_R2_SECRET_ACCESS_KEY; guard that step (or the whole job) so it only
runs when those secrets are present. Change the "Download macOS SDK from R2 +
set SDKROOT" step to check the env vars (BAML_SCCACHE_R2_ACCESS_KEY_ID and
BAML_SCCACHE_R2_SECRET_ACCESS_KEY) and skip the aws s3 cp / SDKROOT export if
they are empty (or alternatively gate the entire cargo-test-macos-archive job
with an if: that requires those env vars), ensuring cargo-test-macos-run still
receives a valid artifact or the workflow falls back to the native-mac path when
credentials are absent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 33413d5a-632c-495e-8bf8-2a3d016687f9

📥 Commits

Reviewing files that changed from the base of the PR and between f8806e4 and 3f6ba20.

📒 Files selected for processing (6)
  • .github/workflows/cargo-tests.reusable.yaml
  • baml_language/crates/baml/Cargo.toml
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/baml_tests/Cargo.toml
  • baml_language/crates/bex_engine/Cargo.toml
  • mise.toml
✅ Files skipped from review due to trivial changes (2)
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/baml_tests/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (2)
  • baml_language/crates/bex_engine/Cargo.toml
  • baml_language/crates/baml/Cargo.toml

@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from 3f6ba20 to bb23aa8 Compare June 4, 2026 09:24
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 09:24 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 09:25 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 09:30 Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.github/workflows/cargo-tests.reusable.yaml (1)

966-967: 💤 Low value

macOS jobs don't produce sccache stats or cargo timings artifacts.

The merged aggregation jobs now depend on cargo-test-macos-archive and cargo-test-macos-run, but neither job uploads sccache stats or cargo timings artifacts. The archive job runs the cross-build but lacks the "Dump sccache stats" and "Upload cargo timings" steps present in other jobs. The run job uses a prebuilt archive (no compilation/sccache).

This is likely intentional (run job has no build, archive job could add stats), but worth confirming the merge patterns cargo-timings-* and sccache-stats-* won't fail or produce misleading results when these jobs contribute no matching artifacts.

Also applies to: 986-987

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/cargo-tests.reusable.yaml around lines 966 - 967, The
macOS CI jobs cargo-test-macos-archive and cargo-test-macos-run are not
producing sccache stats or cargo timings artifacts, which can cause the
aggregation jobs that look for cargo-timings-* and sccache-stats-* to miss data
or fail; update cargo-test-macos-archive to include the same "Dump sccache
stats" and "Upload cargo timings" steps used by other build jobs (so it emits
sccache-stats-* and cargo-timings-* artifacts) and/or make the aggregation jobs
tolerant of missing artifacts from cargo-test-macos-run (which legitimately has
no build) by skipping or conditionally aggregating when matching artifacts are
absent. Ensure changes target the job definitions named cargo-test-macos-archive
and cargo-test-macos-run and the aggregation patterns cargo-timings-* and
sccache-stats-*.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/cargo-tests.reusable.yaml:
- Around line 966-967: The macOS CI jobs cargo-test-macos-archive and
cargo-test-macos-run are not producing sccache stats or cargo timings artifacts,
which can cause the aggregation jobs that look for cargo-timings-* and
sccache-stats-* to miss data or fail; update cargo-test-macos-archive to include
the same "Dump sccache stats" and "Upload cargo timings" steps used by other
build jobs (so it emits sccache-stats-* and cargo-timings-* artifacts) and/or
make the aggregation jobs tolerant of missing artifacts from
cargo-test-macos-run (which legitimately has no build) by skipping or
conditionally aggregating when matching artifacts are absent. Ensure changes
target the job definitions named cargo-test-macos-archive and
cargo-test-macos-run and the aggregation patterns cargo-timings-* and
sccache-stats-*.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 7bc21f6e-ff79-49ce-b66d-c65101b49f17

📥 Commits

Reviewing files that changed from the base of the PR and between 3f6ba20 and bb23aa8.

📒 Files selected for processing (6)
  • .github/workflows/cargo-tests.reusable.yaml
  • baml_language/crates/baml/Cargo.toml
  • baml_language/crates/baml_release/Cargo.toml
  • baml_language/crates/baml_tests/Cargo.toml
  • baml_language/crates/bex_engine/Cargo.toml
  • mise.toml
🚧 Files skipped from review as they are similar to previous changes (5)
  • baml_language/crates/bex_engine/Cargo.toml
  • baml_language/crates/baml/Cargo.toml
  • baml_language/crates/baml_release/Cargo.toml
  • mise.toml
  • baml_language/crates/baml_tests/Cargo.toml

@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from bb23aa8 to a802e05 Compare June 4, 2026 09:41
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 11:15 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle June 4, 2026 11:28 Inactive
@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from ad54f8a to 0c3c9c6 Compare June 4, 2026 11:39
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 11:39 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 11:40 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 11:45 Inactive
@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from 0c3c9c6 to a039189 Compare June 4, 2026 11:50
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 11:50 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 11:51 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 11:57 Inactive
@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from a039189 to a9e8b10 Compare June 4, 2026 12:00
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 12:01 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 12:01 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 12:07 Inactive
@sxlijin
sxlijin force-pushed the sam/ci-restructure branch from a9e8b10 to 772ea49 Compare June 4, 2026 12:14
@vercel
vercel Bot temporarily deployed to Preview – new-boundaryml-website June 4, 2026 12:14 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 12:15 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 12:20 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle June 4, 2026 12:33 Inactive
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 21:56 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 22:02 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle June 4, 2026 22:14 Inactive
@sxlijin sxlijin changed the title ci: restructure cargo + sdk tests (mise, ring-crypto, build-on-Linux/run-on-target) ci: restructure cargo + sdk tests (mise, ring-crypto) Jun 4, 2026
@vercel
vercel Bot temporarily deployed to Preview – beps June 4, 2026 23:42 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 4, 2026 23:47 Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@baml_language/sdk_tests/crates/python_pydantic2/setup.ps1`:
- Around line 70-80: The current loop uses $skip to drop lines until a blank
line, which will also drop a following TOML section header if there's no blank
line; update the inner skip handling so that when $skip is true and a new
section header (match '^\[.*\]$') is seen you clear $skip and allow that header
to be processed (i.e., do not continue). Specifically modify the block that
tests if ($skip) to also detect '^\[.*\]$': if it matches, set $skip = $false
and let the code fall through to $out.Add($line); otherwise keep the existing
blank-line behavior and continue skipping.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 4efc01d6-8da6-4ed3-93dd-088db652ea26

📥 Commits

Reviewing files that changed from the base of the PR and between 3f6ba20 and eab40b0.

📒 Files selected for processing (6)
  • .github/actionlint.yaml
  • .github/actions/setup-mise/action.yml
  • .github/workflows/cargo-tests.reusable.yaml
  • baml_language/.config/nextest.toml
  • baml_language/sdk_tests/crates/python_pydantic2/setup.ps1
  • mise.toml
✅ Files skipped from review due to trivial changes (3)
  • baml_language/.config/nextest.toml
  • .github/actions/setup-mise/action.yml
  • .github/actionlint.yaml

…ing, native per-platform, windows sdk uv dedupe

This branch was previously deployed

4 inactive (1 outdated) deployments
Preview – promptfiddle — 3b1029ce Deployed Jun 5, 2026 by vercel[bot]
Preview – promptfiddle2 — 3b1029ce Deployed Jun 5, 2026 by vercel[bot]
Preview – beps — 3b1029ce Deployed Jun 5, 2026 by vercel[bot]
Preview – new-boundaryml-website — 772ea497 Deployed Jun 4, 2026 by vercel[bot]
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