DocsDecisions

ADR-0007: Development host is a Linux container; Windows host is a file server

Status: Accepted, 2026-11-08

Context #

Work started on a Windows 11 machine. Mojo 1.2.0 has no Windows build; the mission excludes Windows as a target. The machine has Docker Desktop (WSL2 backend, Linux x86-64, 12 logical cores, 15 GB RAM) and network access. No GPU is exposed to containers, so Vulkan is Mesa lavapipe (software), which is exactly the Linux CI configuration the mission prescribes for golden-image tests.

Two Windows-specific hazards were hit on day one and are recorded here so they are not re-discovered:

  1. The app's session workspace path is ~200 characters. Git submodule clones failed with "Filename too long" and "'$GIT_DIR' too big" because Git's remote helper and loose-object paths exceeded MAX_PATH. Fix: map the folder to a drive letter (subst X: <path>) and run git from X:\. No files move.
  2. MSYS bash rewrites arguments that look like POSIX paths (-w /work became C:/Program Files/Git/work). Fix: MSYS_NO_PATHCONV=1 for docker invocations.

Decision #

  • All compilation, tests and benchmarks run inside cinder-toolchain:0 (docker/Dockerfile.toolchain, Ubuntu 24.04 + pixi v0.63.2 + clang/cmake/ninja + Mesa Vulkan + X11/Wayland dev headers). The project folder is bind-mounted at /work.
  • pixi inside the container installs Mojo 1.2.0 from https://conda.modular.com/max/.
  • The same pixi.toml tasks run unchanged on native Linux and macOS, so nothing in the repository depends on the container.
  • macOS (Metal) verification is not possible on this host. It is an open CI requirement, see docs/STATUS.md and the Blockers section of REPORT.md.

Consequences #

  • Benchmarks measured here are software-rasteriser numbers and do not satisfy section 8's reference hardware; they are reported as such, never as budget results.
  • Build caches (.pixi/, native/build/) live on the bind mount; this is slower than a native volume but keeps everything visible on the host. If it becomes a bottleneck, a named Docker volume for native/build is the first thing to try.
View as MarkdownSource: docs/adr/0007-dev-environment-container.md