Open general

Setup stopped at Ensure workspace runtime

M Tes · 8d ago

Filed from Hydrogen Desktop 1.0.701 on 5HAD0W (setup card).

Device: Razer Blade 17 (2022) - RZ09-0423 (AMD64, 31.7 GB RAM, 12th Gen Intel(R) Core(TM) i9-12900H). Microsoft Windows 11 Home 26H2 build 26300. WSL: WSL version: 2.6.3.0.

Attachments: hydrogen-desktop-tail.log (last 300 KB of the app log), diagnostics.json (health, setup state, WSL status, the Doctor checks, build info, device), setup-steps-wsl.json (setup step log), setup-timing-wsl.json (setup step log).

Last 40 log lines:

20:26:37.150 [cmd] $ wsl -d Adom-Workspace -u root -- <write /home/adom/.adom/api-key + /run/adom/api-key + /etc/tmpfiles.d/adom-api-key.conf>
20:26:37.263 [wsl] api-key persistence ensured (tmpfiles.d boot re-materialization + persistent copy + fresh token written to both layers)
20:26:45.323 [heartbeat] alive 400s
20:26:55.324 [heartbeat] alive 410s
20:27:05.166 [telemetry] heartbeat ensure-workspace : HTTP 200
20:27:05.324 [heartbeat] alive 420s
20:27:15.325 [heartbeat] alive 430s
20:27:15.391 [wsl] masked kmod-static-nodes + systemd-binfmt; systemd is running
20:27:17.668 [wsl] code-server already active + answering, leaving it alone (no restart, no editor reload)
20:27:17.668 [wsl] code-server managed by systemd, no HD-held child
20:27:25.326 [heartbeat] alive 440s
20:27:35.326 [heartbeat] alive 450s
20:27:45.327 [heartbeat] alive 460s
20:27:55.327 [heartbeat] alive 470s
20:27:59.568 [wsl] masked kmod-static-nodes + systemd-binfmt; systemd is running
20:28:01.814 [wsl] code-server already active + answering, leaving it alone (no restart, no editor reload)
20:28:01.814 [wsl] code-server managed by systemd, no HD-held child
20:28:05.271 [telemetry] heartbeat ensure-workspace : HTTP 200
20:28:05.328 [heartbeat] alive 480s
20:28:15.328 [heartbeat] alive 490s
20:28:25.329 [heartbeat] alive 500s
20:28:35.329 [heartbeat] alive 510s
20:28:41.217 [net] ensure-workspace: Windows could not reach the workspace; NAT switch skipped: WSL runs 'none', not mirrored
20:28:41.550 [setup] network check: WSL networking mode 'none', workspace internet UNREACHABLE, network gate not confirmed
20:28:41.567 [run_all_wsl] DONE 'ensure-workspace' in 508.6s (failed)
20:28:41.578 [run_all_wsl] HALT: step 'ensure-workspace' failed after 1 attempts; not advancing to later steps
20:28:41.580 [run_all_wsl] persisted setup-state.txt = in-progress (GET /setup/state matches the cascade)
20:28:41.580 [run_all_wsl] TIMING total 508.6s over 1 steps; slowest: ensure-workspace 508.6s
20:28:41.580 [cascade] setup released the editor (opportunistic healers re-armed)
20:28:41.607 [run_all_wsl] install-approval window closed, normal prompting restored
20:28:41.607 [taskbar] cascade ended with a failure, leaving the red progress bar up
20:28:41.608 [wsl-startup] auto-run run_all_wsl finished: Ok("{\"completed\":0,\"failed\":1,\"failures\":[{\"error\":\"=== Ensure workspace runtime (WSL2 Ubuntu) ===\\n=== Ensure WSL2 subsystem is responsive (auto-recovers if wedged) ===\\n  $ wsl --status\\n    | Default Distribution: Ubuntu\\n    | Default Version: 2\\n  ✓ `wsl --status` ok (0s)\\n  ✓ WSL2 subsystem is responsive\\nChecking WSL2 prerequisites (wsl --status)...\\n  ✓ WSL2 is installed and ready\\n=== Ensure WSL2 subsystem is responsive (auto-recovers if wedged) ===\\n  $ wsl --status\\n    | Default Distribution: Ubuntu\\n    | Default Version: 2\\n  ✓ `wsl --status` ok (0s)\\n  ✓ WSL2 subsystem is responsive\\n  ✓ distro already registered + up to date\\n  → booting the workspace (systemd PID 1), one blocking wait for boot to finish (~10-30s)…\\n  ── systemd boot log ──\\n    │ [    1.325935] 5HaD0W systemd[1]: Starting e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots...\\n    │ [    1.326956] 5HaD0W systemd[1]: Starting getty-static.service - getty on tty2-tty6 if dbus and logind are not available...\\n    │ [    1.327141] 5HaD0W systemd[1]: systemd-logind.service - User Login Management was skipped because no trigger condition checks were met.\\n    │ [    1.327193] 5HaD0W systemd[1]: systemd-pcrphase.service - TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\\n    │ [    1.327748] 5HaD0W systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...\\n    │ [    1.328981] 5HaD0W (cron)[76]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS\\n    │ [    1.330367] 5HaD0W systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\\n    │ [    1.330655] 5HaD0W systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to.\\n    │ [    1.330779] 5HaD0W cron[76]: (CRON) INFO (pidfile fd = 3)\\n    │ [    1.330858] 5HaD0W systemd[1]: Started adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820).\\n    │ [    1.332378] 5HaD0W cron[76]: (CRON) INFO (Running @reboot jobs)\\n    │ [    1.341033] 5HaD0W systemd[1]: e2scrub_reap.service: Deactivated successfully.\\n    │ [    1.341153] 5HaD0W systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\\n    │ [    1.342025] 5HaD0W CRON[85]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [    1.342251] 5HaD0W CRON[84]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [    1.342658] 5HaD0W systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.\\n    │ [    1.343471] 5HaD0W CRON[114]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [    1.343684] 5HaD0W CRON[115]: (adom) CMD (sleep 600; bash /home/adom/.adom/hooks/adom-core-update.sh >/dev/null 2>&1)\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │    In a container that means: when the session that launched it is torn down,\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │    falls into an endless \\\"Reconnecting in 30s\\\" loop until someone restarts it.\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │        adom-bridge serve --supervise\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │    That detaches the relay from your session (reparented to init) and starts a\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │    desktops (with the reason) whenever it has to. Stop later with:\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │        adom-bridge serve --stop\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: └────────────────────────────────────────────────────────────────────────────\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ The token is a well-known literal published in the adom-bridge docs, so\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ connected to it. If a connected desktop controls real hardware, treat\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ this as an open door.\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ Rotate (both sides must match):\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │   1. relay:   adom-bridge serve --supervise --token <secret>\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │              (or export ADOM_AUTH_TOKEN=<secret>)\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │   2. desktop: set the same value as auth_token on that server entry\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │              (Connections panel, or server_add with authToken)\\n    │ [    1.344639] 5HaD0W adom-bridge[73]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\\n    │ [    1.345236] 5HaD0W adom-bridge[73]: └────────────────────────────────────────────────────────────────────────────\\n    │ [    1.346036] 5HaD0W systemd[1]: Started console-getty.service - Console Getty.\\n    │ [    1.347267] 5HaD0W systemd[1]: Started [redacted] - Getty on tty1.\\n    │ [    1.349240] 5HaD0W systemd[1]: Started [redacted] - Getty on tty2.\\n    │ [    1.351613] 5HaD0W systemd[1]: Started [redacted] - Getty on tty3.\\n    │ [    1.354590] 5HaD0W systemd[1]: Started [redacted] - Getty on tty4.\\n    │ [    1.357739] 5HaD0W systemd[1]: Started [redacted] - Getty on tty5.\\n    │ [    1.360795] 5HaD0W systemd[1]: Started [redacted] - Getty on tty6.\\n    │ [    1.362910] 5HaD0W systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\\n    │ [    1.363424] 5HaD0W systemd[1]: Reached target getty.target - Login Prompts.\\n    │ [    1.363670] 5HaD0W systemd[1]: Reached target multi-user.target - Multi-User System.\\n    │ [    1.365048] 5HaD0W systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\\n    │ [    1.365327] 5HaD0W adom-bridge[73]: Adom relay server started\\n    │ [    1.365327] 5HaD0W adom-bridge[73]:   WebSocket: ws://0.0.0.0:8765\\n    │ [    1.365327] 5HaD0W adom-bridge[73]:   HTTP API:  http://127.0.0.1:8766\\n    │ [    1.366590] 5HaD0W bash[74]: OK: Recovered 0 channel(s) from disk\\n    │ [    1.366590] 5HaD0W bash[74]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\\n    │ [    1.367518] 5HaD0W bash[74]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\\n    │ [    1.369407] 5HaD0W bash[74]: OK: Listening on 0.0.0.0:8820\\n    │ [    1.377735] 5HaD0W systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\\n    │ [    1.377932] 5HaD0W systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\\n    │ [    1.378716] 5HaD0W systemd[1]: Startup finished in 382ms.\\n    │ [    1.443321] 5HaD0W CRON[84]: pam_unix(cron:session): session closed for user adom\\n    │ [    1.560251] 5HaD0W login[173]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [    2.195860] 5HaD0W code-server[75]: [2026-11-02T04:17:18.847Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\\n    │ [    2.196263] 5HaD0W code-server[75]: [2026-11-02T04:17:18.852Z] info  Using user-data-dir /home/adom/.local/share/code-server\\n    │ [    2.209036] 5HaD0W code-server[75]: [2026-11-02T04:17:18.866Z] info  Using config file /home/adom/.config/code-server/config.yaml\\n    │ [    2.209186] 5HaD0W code-server[75]: [2026-11-02T04:17:18.866Z] info  HTTP server listening on http://127.0.0.1:7380/\\n    │ [    2.209186] 5HaD0W code-server[75]: [2026-11-02T04:17:18.866Z] info    - Authentication is disabled\\n    │ [    2.209186] 5HaD0W code-server[75]: [2026-11-02T04:17:18.866Z] info    - Not serving HTTPS\\n    │ [    2.209186] 5HaD0W code-server[75]: [2026-11-02T04:17:18.866Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\\n    │ [    6.217610] 5HaD0W kernel: scsi 0:0:0:4: Direct-Access     Msft     Virtual Disk     1.0  PQ: 0 ANSI: 5\\n    │ [    6.218484] 5HaD0W kernel: scsi 0:0:0:5: Direct-Access     Msft     Virtual Disk     1.0  PQ: 0 ANSI: 5\\n    │ [    6.226377] 5HaD0W kernel: sd 0:0:0:4: Attached scsi generic sg4 type 0\\n    │ [    6.226624] 5HaD0W kernel: sd 0:0:0:5: Attached scsi generic sg5 type 0\\n    │ [    6.226697] 5HaD0W kernel: sd 0:0:0:4: [sde] 2147483648 512-byte logical blocks: (1.10 TB/1.00 TiB)\\n    │ [    6.226700] 5HaD0W kernel: sd 0:0:0:4: [sde] 4096-byte physical blocks\\n    │ [    6.226792] 5HaD0W kernel: sd 0:0:0:5: [sdf] 288832 512-byte logical blocks: (148 MB/141 MiB)\\n    │ [    6.226847] 5HaD0W kernel: sd 0:0:0:4: [sde] Write Protect is off\\n    │ [    6.226850] 5HaD0W kernel: sd 0:0:0:4: [sde] Mode Sense: 0f 00 00 00\\n    │ [    6.227571] 5HaD0W kernel: sd 0:0:0:5: [sdf] Write Protect is off\\n    │ [    6.227575] 5HaD0W kernel: sd 0:0:0:5: [sdf] Mode Sense: 0f 00 00 00\\n    │ [    6.227629] 5HaD0W kernel: sd 0:0:0:4: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA\\n    │ [    6.227692] 5HaD0W kernel: sd 0:0:0:5: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA\\n    │ [    6.227951] 5HaD0W kernel: /dev/sdf: Can't open blockdev\\n    │ [    6.229078] 5HaD0W kernel: sd 0:0:0:5: [sdf] Attached SCSI disk\\n    │ [    6.229172] 5HaD0W kernel: sd 0:0:0:4: [sde] Attached SCSI disk\\n    │ [    6.252815] 5HaD0W kernel: EXT4-fs (sdf): mounted filesystem 7eae6b88-2757-4e7a-a609-1fda15f27f03 r/w with ordered data mode. Quota mode: none.\\n    │ [    6.271574] 5HaD0W unknown: WSL (1 - init(docker-desktop)) ERROR: ConfigApplyWindowsLibPath:2092: open /etc/ld.so.conf.d/ld.wsl.conf failed 2\\n    │ [    6.290219] 5HaD0W unknown: WSL (1 - init(docker-desktop)) WARNING: /usr/share/zoneinfo/America/Los_Angeles not found. Is the tzdata package installed?\\n    │ [    6.496152] 5HaD0W kernel: EXT4-fs (sde): mounted filesystem 78190c6a-f0d8-4085-9dcf-66c7114625d2 r/w with ordered data mode. Quota mode: none.\\n    │ [    6.520268] 5HaD0W kernel: loop0: detected capacity change from 0 to 1518428\\n    │ [    6.536070] 5HaD0W kernel: ISO 9660 Extensions: Microsoft Joliet Level 3\\n    │ [    6.536154] 5HaD0W kernel: ISO 9660 Extensions: RRIP_1991A\\n    │ [    6.555944] 5HaD0W kernel: loop1: detected capacity change from 0 to 1470396\\n    │ [    6.556384] 5HaD0W kernel: ISO 9660 Extensions: RRIP_1991A\\n    │ [    7.143349] 5HaD0W kernel: netlink: 'initd': attribute type 4 has an invalid length.\\n    │ [    7.268267] 5HaD0W kernel: virtiofs: Unknown parameter 'negative_dentry_timeout'\\n    │ [    7.543534] 5HaD0W kernel: RPC: Registered named UNIX socket transport module.\\n    │ [    7.543539] 5HaD0W kernel: RPC: Registered udp transport module.\\n    │ [    7.543540] 5HaD0W kernel: RPC: Registered tcp transport module.\\n    │ [    7.543541] 5HaD0W kernel: RPC: Registered tcp-with-tls transport module.\\n    │ [    7.543542] 5HaD0W kernel: RPC: Registered tcp NFSv4.1 backchannel transport module.\\n    │ [    8.971031] 5HaD0W kernel: Initializing XFRM netlink socket\\n    │ [   10.406519] 5HaD0W Exception:\\n    │ [   10.406524] 5HaD0W unknown: Operation canceled @p9io.cpp:258 (AcceptAsync)\\n    │ [   10.406525] 5HaD0W unknown:\\n    │ [   10.486103] 5HaD0W kernel: device offline error, dev sde, sector 0 op 0x1:(WRITE) flags 0x800 phys_seg 0 prio class 2\\n    │ [   10.501072] 5HaD0W kernel: EXT4-fs (sde): shut down requested (2)\\n    │ [   10.501589] 5HaD0W kernel: Aborting journal on device sde-8.\\n    │ [   10.502197] 5HaD0W kernel: device offline error, dev sde, sector 1073479680 op 0x1:(WRITE) flags 0x9800 phys_seg 1 prio class 2\\n    │ [   10.503091] 5HaD0W kernel: device offline error, dev sde, sector 1073479680 op 0x1:(WRITE) flags 0x9800 phys_seg 1 prio class 2\\n    │ [   10.503601] 5HaD0W kernel: Buffer I/O error on dev sde, logical block 134184960, lost sync page write\\n    │ [   10.503980] 5HaD0W kernel: JBD2: I/O error when updating journal superblock for sde-8.\\n    │ [   10.537809] 5HaD0W kernel: sd 0:0:0:4: [sde] Synchronizing SCSI cache\\n    │ [   11.690501] 5HaD0W unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2766: Timed out waiting for user session for uid=1001\\n    │ [   11.909779] 5HaD0W login[318]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\\n    │ [   11.911182] 5HaD0W login[330]: ROOT LOGIN  on '/dev/pts/2'\\n    │ [   22.007996] 5HaD0W unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2766: Timed out waiting for user session for uid=0\\n    │ [   44.445789] 5HaD0W CRON[475]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [   44.446305] 5HaD0W CRON[476]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [   44.556656] 5HaD0W CRON[475]: pam_unix(cron:session): session closed for user adom\\n    │ [   48.494805] 5HaD0W kernel: hv_balloon: Max. dynamic memory size: 16224 MB\\n    │ [  104.559176] 5HaD0W CRON[531]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [  104.559684] 5HaD0W CRON[532]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [  104.622848] 5HaD0W CRON[531]: pam_unix(cron:session): session closed for user adom\\n    │ [  164.624916] 5HaD0W CRON[534]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [  164.625406] 5HaD0W CRON[535]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [  164.705627] 5HaD0W CRON[534]: pam_unix(cron:session): session closed for user adom\\n    │ [  177.500715] 5HaD0W systemd[1]: Reloading requested from client PID 739 ('systemctl') (unit init.scope)...\\n    │ [  177.501008] 5HaD0W systemd[1]: Reloading...\\n    │ [  177.653831] 5HaD0W systemd[1]: Reloading finished in 152 ms.\\n    │ [  177.851840] 5HaD0W systemd[1]: Reloading requested from client PID 762 ('systemctl') (unit init.scope)...\\n    │ [  177.851951] 5HaD0W systemd[1]: Reloading...\\n    │ [  178.009529] 5HaD0W systemd[1]: Reloading finished in 157 ms.\\n    │ [  178.211118] 5HaD0W systemd[1]: Stopping code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\\n    │ [  178.233774] 5HaD0W systemd[1]: code-server.service: Deactivated successfully.\\n    │ [  178.233892] 5HaD0W systemd[1]: Stopped code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\\n    │ [  178.429073] 5HaD0W systemd[1]: Reloading requested from client PID 792 ('systemctl') (unit init.scope)...\\n    │ [  178.429206] 5HaD0W systemd[1]: Reloading...\\n    │ [  178.610495] 5HaD0W systemd[1]: Reloading finished in 181 ms.\\n    │ [  178.681298] 5HaD0W systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\\n    │ [  178.681952] 5HaD0W systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\\n    │ [  179.434910] 5HaD0W code-server[813]: [2026-11-02T04:20:16.087Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\\n    │ [  179.435492] 5HaD0W code-server[813]: [2026-11-02T04:20:16.090Z] info  Using user-data-dir /home/adom/.local/share/code-server\\n  ── end boot log ──\\n  ✓ workspace booted: systemd is 'running' after 0s (a degraded per-user session is normal for v9)\\n  image version check: rootfs(/etc/adom-golden-version)=v31-full · HD-wrote(/etc/adom-tarball-version)=v31-full · expected=v31-full\\nEnsuring adom user (uid 1001/gid 1001) + /home/adom/project...\\n  ✓ adom user already present\\n  ✓ /home/adom/project ready\\nWriting adom-host alias (WSL2 → Windows gateway)...\\n  ✓ alias ready\\nStarting code-server inside the distro...\\n  ✓ code-server start issued\\n  ✓ api-key persistence ensured (boot-proof)\\nDeep-verifying workspace (target: code-server reachable on host 127.0.0.1:7380)...\\n  ✓ distro 'Adom-Workspace' is registered\\n  --- verification round 1/3 ---\\n  ✓ code-server binary present in distro\\n  ✓ code-server process running in distro\\n  ✓ code-server LISTENING on :7380 inside distro\\n  … probing host 127.0.0.1:7380 (TCP)…\\n    … not reachable yet (1/10), waiting…\\n    … not reachable yet (3/10), waiting…\\n    … not reachable yet (6/10), waiting…\\n    … not reachable yet (9/10), waiting…\\n  ✗ host 127.0.0.1:7380 still unreachable after round 1.\\n    → REPAIR: forcing a clean code-server restart and retrying verification…\\n  --- verification round 2/3 ---\\n  ✓ code-server binary present in distro\\n  ✓ code-server process running in distro\\n  ✓ code-server LISTENING on :7380 inside distro\\n  … probing host 127.0.0.1:7380 (TCP)…\\n    … not reachable yet (1/10), waiting…\\n    … not reachable yet (3/10), waiting…\\n    … not reachable yet (6/10), waiting…\\n    … not reachable yet (9/10), waiting…\\n  ✗ host 127.0.0.1:7380 still unreachable after round 2.\\n    → REPAIR: forcing a clean code-server restart and retrying verification…\\n  --- verification round 3/3 ---\\n  ✓ code-server binary present in distro\\n  ✓ code-server process running in distro\\n  ✓ code-server LISTENING on :7380 inside distro\\n  … probing host 127.0.0.1:7380 (TCP)…\\n    … not reachable yet (1/10), waiting…\\n    … not reachable yet (3/10), waiting…\\n    … not reachable yet (6/10), waiting…\\n    … not reachable yet (9/10), waiting…\\n  ✗ host 127.0.0.1:7380 still unreachable after round 3.\\n\\ncode-server runs inside the workspace but Windows cannot reach it: checking WSL networking and its firewall before giving up…\\n  ✗ loopback probe FAILED (cause: unknown_loopback_failure)\\n  · mirrored is configured; trying one WSL restart to heal the loopback…\\n  $ wsl --shutdown   (no other distro is running: only ours restarts)\\n  · loopback still failing after restart; continuing without elevation (the auth preflight reports the live diagnosis when it matters)\\n  · the network fix is in place but not confirmed yet: waiting for WSL's network to come up (up to 90 s)…\\n  ✓ starting the workspace again\\n=== Ensure WSL2 subsystem is responsive (auto-recovers if wedged) ===\\n  $ wsl --status\\n    | Default Distribution: Ubuntu\\n    | Default Version: 2\\n  ✓ `wsl --status` ok (0s)\\n  ✓ WSL2 subsystem is responsive\\n  ✓ distro already registered + up to date\\n  → booting the workspace (systemd PID 1), one blocking wait for boot to finish (~10-30s)…\\n  ── systemd boot log ──\\n    │ [    1.634842] 5HaD0W bash[73]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\\n    │ [    1.634842] 5HaD0W bash[73]: │    falls into an endless \\\"Reconnecting in 30s\\\" loop until someone restarts it.\\n    │ [    1.634842] 5HaD0W bash[73]: │\\n    │ [    1.634842] 5HaD0W bash[73]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\\n    │ [    1.634842] 5HaD0W bash[73]: │        adom-bridge serve --supervise\\n    │ [    1.634842] 5HaD0W bash[73]: │    That detaches the relay from your session (reparented to init) and starts a\\n    │ [    1.634842] 5HaD0W bash[73]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\\n    │ [    1.634842] 5HaD0W bash[73]: │    desktops (with the reason) whenever it has to. Stop later with:\\n    │ [    1.634842] 5HaD0W bash[73]: │        adom-bridge serve --stop\\n    │ [    1.634842] 5HaD0W bash[73]: │\\n    │ [    1.634842] 5HaD0W bash[73]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\\n    │ [    1.634842] 5HaD0W bash[73]: └────────────────────────────────────────────────────────────────────────────\\n    │ [    1.634842] 5HaD0W bash[73]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\\n    │ [    1.634842] 5HaD0W bash[73]: │ The token is a well-known literal published in the adom-bridge docs, so\\n    │ [    1.634842] 5HaD0W bash[73]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\\n    │ [    1.634842] 5HaD0W bash[73]: │ connected to it. If a connected desktop controls real hardware, treat\\n    │ [    1.634842] 5HaD0W bash[73]: │ this as an open door.\\n    │ [    1.634842] 5HaD0W bash[73]: │\\n    │ [    1.634842] 5HaD0W bash[73]: │ Rotate (both sides must match):\\n    │ [    1.634842] 5HaD0W bash[73]: │   1. relay:   adom-bridge serve --supervise --token <secret>\\n    │ [    1.634842] 5HaD0W bash[73]: │              (or export ADOM_AUTH_TOKEN=<secret>)\\n    │ [    1.634842] 5HaD0W bash[73]: │   2. desktop: set the same value as auth_token on that server entry\\n    │ [    1.634842] 5HaD0W bash[73]: │              (Connections panel, or server_add with authToken)\\n    │ [    1.634842] 5HaD0W bash[73]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\\n    │ [    1.635632] 5HaD0W bash[73]: └────────────────────────────────────────────────────────────────────────────\\n    │ [    1.635682] 5HaD0W bash[74]: OK: Recovered 0 channel(s) from disk\\n    │ [    1.635682] 5HaD0W bash[74]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\\n    │ [    1.636047] 5HaD0W systemd[1]: Started [redacted] - Getty on tty1.\\n    │ [    1.636116] 5HaD0W bash[74]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\\n    │ [    1.636495] 5HaD0W systemd[1]: Started [redacted] - Getty on tty2.\\n    │ [    1.637028] 5HaD0W bash[74]: OK: Listening on 0.0.0.0:8820\\n    │ [    1.637936] 5HaD0W systemd[1]: Started [redacted] - Getty on tty3.\\n    │ [    1.642980] 5HaD0W bash[73]: Adom relay server started\\n    │ [    1.642980] 5HaD0W bash[73]:   WebSocket: ws://0.0.0.0:8765\\n    │ [    1.642980] 5HaD0W bash[73]:   HTTP API:  http://127.0.0.1:8766\\n    │ [    1.644706] 5HaD0W systemd[1]: Started [redacted] - Getty on tty4.\\n    │ [    1.648416] 5HaD0W systemd[1]: Started [redacted] - Getty on tty5.\\n    │ [    1.650475] 5HaD0W systemd[1]: Started [redacted] - Getty on tty6.\\n    │ [    1.650823] 5HaD0W systemd[1]: Reached target getty.target - Login Prompts.\\n    │ [    1.651737] 5HaD0W systemd[1]: e2scrub_reap.service: Deactivated successfully.\\n    │ [    1.651972] 5HaD0W systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\\n    │ [    1.656097] 5HaD0W systemd[1]: Reached target multi-user.target - Multi-User System.\\n    │ [    1.659353] 5HaD0W systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\\n    │ [    1.672955] 5HaD0W systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\\n    │ [    1.673096] 5HaD0W systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\\n    │ [    1.674048] 5HaD0W systemd[1]: Startup finished in 419ms.\\n    │ [    1.709224] 5HaD0W CRON[80]: pam_unix(cron:session): session closed for user adom\\n    │ [    1.826889] 5HaD0W login[178]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [    2.629388] 5HaD0W code-server[75]: [2026-11-02T04:22:48.144Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\\n    │ [    2.630977] 5HaD0W code-server[75]: [2026-11-02T04:22:48.148Z] info  Using user-data-dir /home/adom/.local/share/code-server\\n    │ [    2.641984] 5HaD0W code-server[75]: [2026-11-02T04:22:48.162Z] info  Using config file /home/adom/.config/code-server/config.yaml\\n    │ [    2.642172] 5HaD0W code-server[75]: [2026-11-02T04:22:48.162Z] info  HTTP server listening on http://127.0.0.1:7380/\\n    │ [    2.642172] 5HaD0W code-server[75]: [2026-11-02T04:22:48.162Z] info    - Authentication is disabled\\n    │ [    2.642172] 5HaD0W code-server[75]: [2026-11-02T04:22:48.162Z] info    - Not serving HTTPS\\n    │ [    2.642172] 5HaD0W code-server[75]: [2026-11-02T04:22:48.162Z] info  Using proxy URI in PORTS tab: http://{{port}}.localhost:47083/\\n    │ [    2.642172] 5HaD0W code-server[75]: [2026-11-02T04:22:48.162Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\\n    │ [    2.642172] 5HaD0W code-server[75]: [2026-11-02T04:22:48.162Z] info  Using custom extensions gallery\\n    │ [   11.906006] 5HaD0W unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2766: Timed out waiting for user session for uid=1001\\n    │ [   12.539148] 5HaD0W login[359]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\\n    │ [   12.540531] 5HaD0W login[371]: ROOT LOGIN  on '/dev/pts/2'\\n    │ [   15.711663] 5HaD0W CRON[402]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [   15.712226] 5HaD0W CRON[403]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [   15.815342] 5HaD0W CRON[402]: pam_unix(cron:session): session closed for user adom\\n    │ [   22.670463] 5HaD0W unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2766: Timed out waiting for user session for uid=0\\n    │ [   22.876425] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   26.006978] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   26.008623] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   26.008907] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   28.712708] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   31.833051] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   31.835392] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   31.835478] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   39.172515] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   42.290925] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   42.292325] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   42.292392] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   48.666007] 5HaD0W kernel: hv_balloon: Max. dynamic memory size: 16224 MB\\n    │ [   49.768446] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   53.012753] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   53.014675] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   53.014778] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   60.913390] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   64.073958] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   64.074706] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   64.074900] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   71.500436] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   74.620961] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   74.627362] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   74.627673] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   75.820392] 5HaD0W CRON[733]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [   75.823136] 5HaD0W CRON[734]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [   75.932425] 5HaD0W CRON[733]: pam_unix(cron:session): session closed for user adom\\n    │ [   82.672517] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   85.828484] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   85.829498] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   85.829594] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   93.372461] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [   96.502129] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [   96.503275] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [   96.503448] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  104.132606] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  107.282256] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  107.283350] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  107.283526] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  114.988727] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  118.137943] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  118.141402] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  118.141657] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  126.612476] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  129.737479] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  129.738437] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  129.738597] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  135.935160] 5HaD0W CRON[976]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [  135.935555] 5HaD0W CRON[977]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [  135.998456] 5HaD0W CRON[976]: pam_unix(cron:session): session closed for user adom\\n    │ [  137.156425] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  140.286614] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  140.287703] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  140.287884] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  147.828436] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  150.987054] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  150.987922] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  150.987974] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  158.576433] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  161.711438] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  161.712866] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  161.713051] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  169.156491] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  172.282758] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  172.284333] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  172.284537] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  180.316437] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  183.600055] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  183.601673] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  183.602605] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  191.620435] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  194.760733] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  194.762027] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  194.762254] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  196.001136] 5HaD0W CRON[1286]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\\n    │ [  196.001724] 5HaD0W CRON[1287]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\\n    │ [  196.062317] 5HaD0W CRON[1286]: pam_unix(cron:session): session closed for user adom\\n    │ [  202.460499] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  205.606677] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  205.607789] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  205.612141] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  213.164481] 5HaD0W systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n    │ [  216.319303] 5HaD0W systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\\n    │ [  216.322315] 5HaD0W systemd[1]: hd-loopback-probe.service: Deactivated successfully.\\n    │ [  216.322445] 5HaD0W systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\\n  ── end boot log ──\\n  ✓ workspace booted: systemd is 'running' after 0s (a degraded per-user session is normal for v9)\\n  image version check: rootfs(/etc/adom-golden-version)=v31-full · HD-wrote(/etc/adom-tarball-version)=v31-full · expected=v31-full\\nEnsuring adom user (uid 1001/gid 1001) + /home/adom/project...\\n  ✓ adom user already present\\n  ✓ /home/adom/project ready\\nWriting adom-host alias (WSL2 → Windows gateway)...\\n  ✓ alias ready\\nStarting code-server inside the distro...\\n  ✓ code-server start issued\\n  ✓ api-key persistence ensured (boot-proof)\\nDeep-verifying workspace (target: code-server reachable on host 127.0.0.1:7380)...\\n  ✓ distro 'Adom-Workspace' is registered\\n  --- verification round 1/3 ---\\n  ✓ code-server binary present in distro\\n  ✓ code-server process running in distro\\n  ✓ code-server LISTENING on :7380 inside distro\\n  … probing host 127.0.0.1:7380 (TCP)…\\n    … not reachable yet (1/10), waiting…\\n    … not reachable yet (3/10), waiting…\\n    … not reachable yet (6/10), waiting…\\n    … not reachable yet (9/10), waiting…\\n  ✗ host 127.0.0.1:7380 still unreachable after round 1.\\n    → REPAIR: forcing a clean code-server restart and retrying verification…\\n  --- verification round 2/3 ---\\n  ✓ code-server binary present in distro\\n  ✓ code-server process running in distro\\n  ✓ code-server LISTENING on :7380 inside distro\\n  … probing host 127.0.0.1:7380 (TCP)…\\n    … not reachable yet (1/10), waiting…\\n    … not reachable yet (3/10), waiting…\\n    … not reachable yet (6/10), waiting…\\n    … not reachable yet (9/10), waiting…\\n  ✗ host 127.0.0.1:7380 still unreachable after round 2.\\n    → REPAIR: forcing a clean code-server restart and retrying verification…\\n  --- verification round 3/3 ---\\n  ✓ code-server binary present in distro\\n  ✓ code-server process running in distro\\n  ✓ code-server LISTENING on :7380 inside distro\\n  … probing host 127.0.0.1:7380 (TCP)…\\n    … not reachable yet (1/10), waiting…\\n    … not reachable yet (3/10), waiting…\\n    … not reachable yet (6/10), waiting…\\n    … not reachable yet (9/10), waiting…\\n  ✗ host 127.0.0.1:7380 still unreachable after round 3.\\n  · Windows could not reach the workspace; not switching to NAT networking: WSL runs 'none', not mirrored\\n  ✗ network check: WSL networking mode 'none', workspace internet UNREACHABLE, network gate not confirmed\\n  ✗ workspace setup attempt failed (will retry if attempts remain): code-server never became reachable on host 127.0.0.1:7380 after 3 verify/repair rounds. The VS Code pane would hang on 'Starting AI Environment', so step 1 is failing rather than advancing on a broken workspace.\\n\\nWindows could not reach the workspace even after the network check. network check: WSL networking mode 'none', workspace internet UNREACHABLE, network gate not confirmed. A VPN, a security tool or a firewall policy that blocks WSL is the usual cause.\",\"step\":\"ensure-workspace\"}],\"ok\":false,\"timings\":[{\"id\":\"ensure-workspace\",\"ms\":508584,\"ok\":false}],\"total\":8,\"total_ms\":508597}")
20:28:41.608 [wsl-startup] post-cascade: started code-server update poller
20:28:41.656 [telemetry] setup_step ensure-workspace fail: HTTP 200
20:28:41.771 [telemetry] error_screen ensure-workspace : HTTP 200
20:28:45.330 [heartbeat] alive 520s
20:28:50.617 [focus] hd Focused(false)
20:28:55.331 [heartbeat] alive 530s
20:28:58.676 [focus] hd Focused(true)
20:29:05.332 [heartbeat] alive 540s

2 Replies

John Lauer · 8d ago

Thanks for the report and the logs, they told us exactly what happened.

What went wrong. Hydrogen asks WSL for mirrored networking. On this PC, WSL could not start mirrored networking and quietly fell back to running the workspace with no network at all (WSL reports its mode as none). Hydrogen already switches a PC to NAT networking when mirrored fails, but it only did that when WSL said mirrored, so with none it skipped the switch and stopped at the workspace step every time.

The fix. The next Hydrogen build treats none with mirrored configured as mirrored failing, switches the PC to NAT once and carries on. It is also a new check every build must pass before release.

To get going today, without waiting for the build:

  1. Quit Hydrogen.
  2. Open %USERPROFILE%\.wslconfig in Notepad. Under [wsl2], change networkingMode=mirrored to networkingMode=nat and save.
  3. In PowerShell, run wsl --shutdown.
  4. Start Hydrogen and press Retry on the setup card.

Hydrogen keeps your NAT choice; Settings, Workspace networking switches it back any time. If it still stops, reply here and we will dig in.

Colby Knox · 6d ago

The fix for this is now public in Hydrogen 1.0.703. Please update and run setup again. If networkingMode is mirrored and WSL falls back to no network, setup should now switch this PC to NAT on its own and carry on. If you already switched to NAT by hand, there is nothing else you need to do. Let us know here whether setup finishes.

Log in to reply.