WSL_VERIFICATION_HANDOFF

WSL_VERIFICATION_HANDOFF

REPO_REMOTE=git@github.com:stallonefennec/remote-dev.git   (private)
BRANCH=main
COMMIT=697d72cc3de4aa95a382d5e16c1d16f1b0921c92
TAG=m1-vps-ready

DEV_ENV=wsl

GET_CODE:
  git clone git@github.com:stallonefennec/remote-dev.git remote-dev && cd remote-dev
  git checkout --detach m1-vps-ready
  test "$(git rev-parse HEAD)" = "697d72cc3de4aa95a382d5e16c1d16f1b0921c92" && echo "TARGET COMMIT OK"
  (clone into the WSL home directory, NOT under /mnt/c)

INSTALL=pnpm install --frozen-lockfile
CHECK=DEV_ENV=wsl scripts/check.sh
TEST_LIGHT=DEV_ENV=wsl scripts/test.sh light
TEST_FULL=DEV_ENV=wsl scripts/test.sh full
BUILD_LIGHT=DEV_ENV=wsl scripts/build.sh light
BUILD_FULL=DEV_ENV=wsl scripts/build.sh full

SERVER_START=pnpm dev:server
  (node --disable-warning=ExperimentalWarning --env-file-if-exists=.env server/src/main.ts, 127.0.0.1:8090)
  (built: node --disable-warning=ExperimentalWarning dist/server.mjs, also serves the web app)
RUNNER_START=pnpm dev:runner
  (node --disable-warning=ExperimentalWarning --env-file-if-exists=.env runner/src/main.ts)
  (built: node --disable-warning=ExperimentalWarning dist/runner.mjs)
WEB_START=pnpm dev:web
  (Vite on 127.0.0.1:5173, proxies /api to 127.0.0.1:8090)

REQUIRED_ENV (names only):
  scripts (check/test/build): DEV_ENV
  running the app by hand:
    RD_RUNNER_TOKEN    required, >= 16 chars, same on server and runner   [secret: choose your own, never commit]
    RD_ADMIN_PASSWORD  required on first server start                      [secret]
    RD_ADMIN_USER      optional (default admin)
    optional: RD_HOST RD_PORT RD_DB_PATH RD_COOKIE_SECURE RD_TRUST_PROXY RD_STATIC_DIR RD_HEARTBEAT_TIMEOUT_MS
              RD_OFFLINE_GRACE_MS RD_SESSION_TTL_MS RD_SERVER_URL RD_RUNNER_ID RD_RUNNER_NAME RD_WORKSPACES
              RD_HEARTBEAT_MS RD_FAKE_DELAY_MS RD_RECONNECT_MIN_MS RD_RECONNECT_MAX_MS RD_MAX_UNACKED
  never set: RD_ALLOW_HEAVY, RD_IGNORE_DISK_ZONE

REQUIREMENTS: Node >= 22.18 (verified on 22.22.1 only), pnpm >= 12 (lockfileVersion 9.0, made with 12.5.1)

EXPECTED: check, test light (54 tests, 0 failures), test full, build light, build full: each ends with
  "RESULT: PASS ... where=wsl"; cost=heavy on the two full runs.

STILL UNTESTED, WSL MUST COVER: real browser UI; mobile widths 360/390/430; keyboard and sticky composer;
  browser reconnect in a real browser; Playwright; suspend/resume. Checklist and report template: docs/WSL-VERIFY.md

DO NOT VERIFY A LATER COMMIT AS THE IMPLEMENTATION TARGET.
main now has one documentation-only commit after the M1 commit (ed641ce6d083523b8597de9d6a962cd56116b35c, adds
docs/reports/M1-IMPLEMENTATION-REPORT.md only). WSL must verify the exact frozen implementation commit
697d72cc3de4aa95a382d5e16c1d16f1b0921c92 (tag m1-vps-ready) first.

WSL MUST NOT: edit source on main (fixes go on a wsl/<topic> branch and are reported); update dependencies or the lockfile;
  edit scripts/lib/guard.sh; push tags; force-push; start M2.

ACCESS NOTE: the VPS deploy key is for the VPS only and its private key must never be copied. WSL uses its own
  credentials for this private repo (your own GitHub SSH key or HTTPS login), or a separate read-only deploy key.