The engine ships as WASM-in-Node (covered by the WASM + JS workspaces job);
there is no native Windows target and CGAL/SUNDIALS aren't provisioned on
the Windows runner, so the job only ever failed at configure. Keep the
Linux + macOS native builds, which validate the C++ that compiles to WASM.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- wasm-web: bump Node 20 -> 22 so the global WebSocket used by the /ws
integration test exists (it was ReferenceError on Node 20).
- build-and-test: point cmake at core/ (cmake -S core); there is no root
CMakeLists.txt, so Configure failed with 'does not contain CMakeLists.txt'
(pre-existing failure on main).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per ADR-005 tests run against the real WASM engine, so CI must build it
first. Add a wasm-web job: pinned emsdk (cached) -> pnpm build:wasm ->
build -> lint -> test. Wire turbo so 'test' dependsOn build:wasm and
^build:wasm, and point build:wasm outputs at the @ymir/wasm runtime.
Task: task_09. Verified turbo ordering locally (rm runtime -> turbo test
rebuilds it); full pipeline runs on GitHub Actions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CMake project structure with ymir_core, ymir_naval, and ymir_adapters
static library targets. Catch2 and nlohmann/json via FetchContent;
SUNDIALS and CGAL probed as optional system deps (required from M1/M2).
Smoke tests pass on macOS ARM64. Docker multi-stage image for Linux
x86_64. GitHub Actions CI matrix: Linux x86_64, macOS ARM64, Windows
x86_64. Code quality tooling: .clang-format, .clang-tidy, Doxyfile.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>