Skip to content

WI-001: Set up WSL2 and relocate the repository

WI-001: Set up WSL2 and relocate the repository

Problem

Development is currently on the Windows filesystem. ADR-0014 requires WSL2 with the repository inside the Linux filesystem, because Wrangler and Expo tooling are materially more reliable there and /mnt/c file-watching is unreliable in ways that present as flaky tooling.

Doing this before any real work exists avoids re-treading it later mid-feature.

In scope

  • WSL2 with Ubuntu installed and set as default.
  • Repository cloned fresh to ~/code/tabletop-tracker inside the WSL filesystem (cloning is cleaner than moving files across the boundary — the remote already exists).
  • Node pinned via .nvmrc; pnpm enabled via corepack.
  • Docker Desktop with WSL2 integration enabled for the distro.
  • gh CLI installed and authenticated.
  • git config core.hooksPath .githooks set in the WSL clone — without it there is no protection on main at all (ADR-0018).
  • docs/standards/environment.md verified accurate against what was actually done.

Out of scope

  • Any application code, dependency, or package scaffolding — that is WI-002.
  • Docker Compose Postgres definition — that is WI-006.
  • CI configuration — that is WI-003.

Definition of done

  • wsl -l -v shows Ubuntu running WSL version 2.
  • pwd inside WSL returns a path under ~, and does not contain /mnt/c.
  • node --version matches .nvmrc.
  • pnpm --version resolves, installed via corepack (not a global npm install).
  • docker run --rm hello-world succeeds from inside WSL.
  • gh auth status reports an authenticated account.
  • git config core.hooksPath returns .githooks, and git push origin main is rejected by the pre-push hook.
  • Editor connects over the WSL remote, not through \\wsl$\.
  • Any step in docs/standards/environment.md that turned out wrong is corrected in the same PR.

Verification

Terminal window
wsl -l -v # from PowerShell
# then, inside WSL:
pwd # must be under ~, not /mnt/c
node --version && cat .nvmrc
pnpm --version
docker run --rm hello-world
gh auth status

Notes

Much of this is human-performed setup rather than agent work — installing WSL2, authenticating gh, enabling Docker integration. The agent-owned part is verifying the result and correcting docs/standards/environment.md.

Windows files stay reachable at /mnt/c for occasional copies. Nothing in the working set lives there.