Local Validation
Moltis provides a local validation script that runs the same checks as CI (format, lint, test, e2e), plus a native macOS app build check on macOS hosts.
Why this exists
- Faster feedback for Rust-heavy branches (no long runner queues for every push)
- Better parity with a developer’s local environment while iterating
- Clear visibility in the PR UI (
fmt,biome,zizmor,clippy,test,macos-app,e2e)
Run local validation
Run all checks on your current checkout:
./scripts/local-validate.sh
When working on a pull request, pass the PR number to also publish commit statuses to GitHub:
./scripts/local-validate.sh 63
The script runs these checks:
local/fmtlocal/biomelocal/zizmorlocal/lockfile— verifiesCargo.lockis in sync (cargo fetch --locked)local/lintlocal/testlocal/macos-app— validates the native Swift macOS app build (Darwinonly)local/e2e— runs gateway UI Playwright coverage
In PR mode, the PR workflow verifies these contexts and surfaces them as checks in the PR.
Notes
- The script requires a clean working tree (no uncommitted or untracked changes). Commit or stash local changes before running.
- On macOS without CUDA (
nvcc), the script automatically falls back to non-CUDA test/coverage defaults for local runs. - On Linux,
local/lintandlocal/testuse--all-features. If you want the opt-in Vulkan path covered locally, install the Vulkan development packages first, for examplelibvulkan-devandglslang-toolson Debian/Ubuntu (on Ubuntu 22.04, installglslcfrom the LunarG Vulkan SDK). local/lintuses the same clippy flags as CI and release:cargo +nightly-2025-11-30 clippy -Z unstable-options --workspace --all-features --all-targets --timings -- -D warnings.zizmoris installed automatically (Homebrew on macOS, apt on Linux) when not already available.zizmoris advisory in local runs and does not block lint/test execution.- Test output is suppressed unless tests fail.
local/macos-appruns only on macOS; on Linux it is marked skipped.- Override or disable macOS app validation with:
LOCAL_VALIDATE_MACOS_APP_CMDandLOCAL_VALIDATE_SKIP_MACOS_APP=1. local/e2eauto-runsnpm cionly whencrates/web/ui/node_modulesis missing, then runsnpm run e2e:installandnpm run e2e. Override withLOCAL_VALIDATE_E2E_CMD.
Merge and release safety
This local-first flow is for pull requests. Full CI still runs on GitHub
runners for non-PR events (for example push to main, scheduled runs, and
release paths).