ADR-0014: WSL2 as the development environment
ADR-0014: WSL2 as the development environment
- Status: Accepted
- Date: 2026-07-30
- Supersedes: —
- Superseded by: —
Context
The developer’s machine is Windows 11. docs/architecture.md §4 already flags that Wrangler tooling is more reliable on Linux and advises planning for WSL rather than debugging Windows-specific runtime issues.
For an agent-driven build this matters more than usual: a platform quirk that a human recognises and works around in seconds can consume an entire agent loop iteration, and the failure looks like a code bug rather than an environment bug.
Decision
All development, testing and deployment happens in WSL2.
The repository must live inside the WSL filesystem (~/code/tabletop-tracker), not under /mnt/c.
Rationale
Wrangler, Expo and the Docker Postgres of ADR-0011 all sit on well-trodden Linux paths.
The /mnt/c restriction is separate and equally important: cross-filesystem I/O through the 9p protocol is slow, and file-watching is unreliable there. Dev servers miss changes and node_modules operations crawl. Both symptoms present as flaky tooling rather than as a filesystem problem, which is exactly the kind of thing that burns agent iterations.
Consequences
- WI-001 includes relocating the repository into the WSL filesystem. Doing this first avoids re-treading it later with real work in flight.
- Docker Desktop must have WSL2 integration enabled for the test database.
- Editors connect over the WSL remote (VS Code Remote - WSL or equivalent), not to the Windows path.
- Recorded in
AGENTS.mdanddocs/standards/environment.md, because “just run it on Windows” is the default behaviour this contradicts.
Alternatives considered
Native Windows. No setup cost. Rejected: path, symlink and Wrangler runtime quirks would burn agent iterations on non-problems.
Devcontainer / Docker. Most reproducible and the best story for future collaborators. Rejected for now on setup weight and slower file I/O on Windows hosts. Reconsider if a second developer joins — this decision would be superseded rather than amended.