{
  "activate-editor": {
    "status": "failed",
    "output": "  ✓ workspace env bound to this launch (proxy :47083, 4 vars)\n  ✓ api key written through (tools authenticate)\n  ✓ relay ensured (:8765/:8766)\nReloading editor iframe + verifying the :8821 editor-control API is live (adom-vscode is baked; this proves it activated)...\n  … one re-bind of the editor iframe (still waiting ~40s for the extension to activate; NOT reloading repeatedly, each reload restarts the extension host)\n  ✗ :8821 never answered after ~90s, the adom-vscode extension did not load. HALTING.",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  },
  "ensure-adom-bridge-cli": {
    "status": "done",
    "output": "Checking if Adom Bridge is running…\n  ✓ Adom Bridge is answering on port 8770\n  Installed Adom Bridge: 2.1.168\n  ✓ Adom Bridge is installed; upgrades are its own job (it self-updates), not setup's\n  ✓ nothing to install\n\n=== Summary ===\nAdom Bridge connects your workspace to your Windows desktop.\nIt enables: screenshots, file transfers, browser automation,\nKiCad/Fusion control, and desktop app management.",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  },
  "ensure-sse": {
    "status": "running",
    "output": "Verifying the editor's live link to HD (browser SSE) is connected before Welcome opens its page through it.\n  ✓ live link connected (browser_connected=true, sse_connections=1). Welcome's webview-open will land.",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  },
  "ensure-workspace": {
    "status": "done",
    "output": "=== Ensure workspace runtime (WSL2 Ubuntu) ===\n  → Turning on mirrored networking so your AIs can sign in (networkingMode=mirrored in .wslconfig; Hydrogen restores your original on uninstall)\n  ✓ set WSL2 networkingMode=mirrored in .wslconfig (so the workspace can reach Adom services)\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  → enabling WSL2 mirrored networking (restarting WSL to apply). Other distros exist (Ubuntu, Ubuntu-20.04, docker-desktop); they simply restart on next use, mirrored networking is required for the workspace + sign-in, so this is not optional.\n  $ wsl --shutdown   (no other distro is running: only ours restarts)\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    │ [    4.699863] LAPTOP-07PVL3D8 systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.\n    │ [    4.700934] LAPTOP-07PVL3D8 systemd[1]: Reached target timers.target - Timer Units.\n    │ [    4.701473] LAPTOP-07PVL3D8 systemd[1]: systemd-pcrphase-sysinit.service - TPM2 PCR Barrier (Initialization) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [    4.701603] LAPTOP-07PVL3D8 systemd[1]: Reached target basic.target - Basic System.\n    │ [    4.702225] LAPTOP-07PVL3D8 systemd[1]: adom-distro-id.service - Generate the per-import Adom distro identity marker was skipped because of an unmet condition check (ConditionPathExists=!/etc/adom-distro-id).\n    │ [    4.703531] LAPTOP-07PVL3D8 systemd[1]: Started adom-fusion-dashboard.service - Adom Fusion Dashboard (the fusion-bridge Launch Page server).\n    │ [    4.705830] LAPTOP-07PVL3D8 systemd[1]: Starting adom-relay.service - Adom Bridge relay (adom-bridge-cli serve) - the bridge AB/HD connect back to...\n    │ [    4.711344] LAPTOP-07PVL3D8 systemd[1]: Starting adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820)...\n    │ [    4.713561] LAPTOP-07PVL3D8 systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [    4.717067] LAPTOP-07PVL3D8 systemd[1]: Started cron.service - Regular background program processing daemon.\n    │ [    4.723927] LAPTOP-07PVL3D8 systemd[1]: Starting e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots...\n    │ [    4.728840] LAPTOP-07PVL3D8 systemd[1]: Starting getty-static.service - getty on tty2-tty6 if dbus and logind are not available...\n    │ [    4.729020] LAPTOP-07PVL3D8 systemd[1]: systemd-logind.service - User Login Management was skipped because no trigger condition checks were met.\n    │ [    4.729107] LAPTOP-07PVL3D8 systemd[1]: systemd-pcrphase.service - TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [    4.729713] LAPTOP-07PVL3D8 (cron)[79]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS\n    │ [    4.735458] LAPTOP-07PVL3D8 systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...\n    │ [    4.735694] LAPTOP-07PVL3D8 cron[79]: (CRON) INFO (pidfile fd = 3)\n    │ [    4.737047] LAPTOP-07PVL3D8 systemd[1]: Starting wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard...\n    │ [    4.738791] LAPTOP-07PVL3D8 systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [    4.742013] LAPTOP-07PVL3D8 systemd[1]: Started adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820).\n    │ [    4.744375] LAPTOP-07PVL3D8 systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge-cli serve) - the bridge AB/HD connect back to.\n    │ [    4.747237] LAPTOP-07PVL3D8 cron[79]: (CRON) INFO (Running @reboot jobs)\n    │ [    4.753898] LAPTOP-07PVL3D8 bash[77]: OK: Recovered 0 channel(s) from disk\n    │ [    4.754377] LAPTOP-07PVL3D8 bash[77]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\n    │ [    4.754454] LAPTOP-07PVL3D8 systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.\n    │ [    4.755685] LAPTOP-07PVL3D8 systemd[1]: Finished wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard.\n    │ [    4.760087] LAPTOP-07PVL3D8 bash[77]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\n    │ [    4.760087] LAPTOP-07PVL3D8 bash[77]: OK: send-hook verified: captions of images sent to the human are carried into shotlog.\n    │ [    4.760804] LAPTOP-07PVL3D8 bash[77]: OK: Listening on 0.0.0.0:8820\n    │ [    4.764789] LAPTOP-07PVL3D8 bash[76]: note: this tool is now `adom-bridge`. You invoked the retired `adom-bridge-cli` alias, which still works and always will, but every example, hint and skill uses `adom-bridge` - prefer it in new calls and in anything you write down.\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │    In a container that means: when the session that launched it is torn down,\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │    falls into an endless \"Reconnecting in 30s\" loop until someone restarts it.\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │        adom-bridge serve --supervise\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │    That detaches the relay from your session (reparented to init) and starts a\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │    desktops (with the reason) whenever it has to. Stop later with:\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │        adom-bridge serve --stop\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: └────────────────────────────────────────────────────────────────────────────\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ The token is a well-known literal published in the adom-bridge docs, so\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ connected to it. If a connected desktop controls real hardware, treat\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ this as an open door.\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ Rotate (both sides must match):\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │              (Connections panel, or server_add with authToken)\n    │ [    4.765412] LAPTOP-07PVL3D8 bash[76]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [    4.766834] LAPTOP-07PVL3D8 bash[76]: └────────────────────────────────────────────────────────────────────────────\n    │ [    4.769211] LAPTOP-07PVL3D8 systemd[1]: Started [redacted] - Getty on tty1.\n    │ [    4.770060] LAPTOP-07PVL3D8 bash[75]: OK: fusion-dashboard v1.11.44 serving on port 8931 (target auto)\n    │ [    4.771603] LAPTOP-07PVL3D8 CRON[96]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [    4.772422] LAPTOP-07PVL3D8 CRON[97]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [    4.775445] LAPTOP-07PVL3D8 CRON[126]: (adom) CMD (sleep 600; bash /home/adom/.adom/hooks/adom-core-update.sh >/dev/null 2>&1)\n    │ [    4.778853] LAPTOP-07PVL3D8 systemd[1]: Started [redacted] - Getty on tty2.\n    │ [    4.779111] LAPTOP-07PVL3D8 CRON[127]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [    4.785812] LAPTOP-07PVL3D8 systemd[1]: Started [redacted] - Getty on tty3.\n    │ [    4.797097] LAPTOP-07PVL3D8 systemd[1]: Started [redacted] - Getty on tty4.\n    │ [    4.808255] LAPTOP-07PVL3D8 systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [    4.809193] LAPTOP-07PVL3D8 systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [    4.828130] LAPTOP-07PVL3D8 systemd[1]: Started [redacted] - Getty on tty5.\n    │ [    4.831108] LAPTOP-07PVL3D8 systemd[1]: Started [redacted] - Getty on tty6.\n    │ [    4.833227] LAPTOP-07PVL3D8 systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [    4.838128] LAPTOP-07PVL3D8 systemd[1]: Reached target getty.target - Login Prompts.\n    │ [    4.843424] LAPTOP-07PVL3D8 systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [    4.846094] LAPTOP-07PVL3D8 systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [    4.879299] LAPTOP-07PVL3D8 systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [    4.879779] LAPTOP-07PVL3D8 systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [    4.890849] LAPTOP-07PVL3D8 systemd[1]: Startup finished in 733ms.\n    │ [    5.043868] LAPTOP-07PVL3D8 CRON[97]: pam_unix(cron:session): session closed for user adom\n    │ [    5.181389] LAPTOP-07PVL3D8 bash[76]: Adom relay: WebSocket preferred 127.0.0.1:8765 unavailable (Address already in use (os error 98)); falling back to ephemeral\n    │ [    5.243700] LAPTOP-07PVL3D8 bash[76]: Adom relay server started\n    │ [    5.243700] LAPTOP-07PVL3D8 bash[76]:   WebSocket: ws://127.0.0.1:43085\n    │ [    5.243700] LAPTOP-07PVL3D8 bash[76]:   HTTP API:  http://127.0.0.1:8766\n    │ [    5.243700] LAPTOP-07PVL3D8 bash[76]:   (preferred ws:8765 http:8766 were unavailable; OS picked ephemeral. See ~/.adom/cli-relay-ports.json for the resolved addresses.)\n    │ [    5.276142] LAPTOP-07PVL3D8 kernel: TCP: eth3: Driver has suspect GRO implementation, TCP performance may be compromised.\n    │ [    5.288321] LAPTOP-07PVL3D8 login[164]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [    6.241279] LAPTOP-07PVL3D8 bash[77]: 10-26 09:38:38 NOTICE update available: wiki has 0.29.3, running 0.29.2. `adom-wiki pkg update adom/adom-shotlog` then restart `adom-shotlog serve`.\n    │ [    6.481626] LAPTOP-07PVL3D8 code-server[78]: [2026-10-26T01:38:38.482Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [    6.482929] LAPTOP-07PVL3D8 code-server[78]: [2026-10-26T01:38:38.495Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [    6.503225] LAPTOP-07PVL3D8 code-server[78]: [2026-10-26T01:38:38.518Z] error listen EADDRINUSE: address already in use 127.0.0.1:7380\n    │ [    6.526798] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Main process exited, code=exited, status=1/FAILURE\n    │ [    6.527080] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Failed with result 'exit-code'.\n    │ [    6.527328] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Consumed 1.676s CPU time.\n    │ [    8.279475] LAPTOP-07PVL3D8 unknown: WSL (132) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [    8.458722] LAPTOP-07PVL3D8 unknown: WSL (132) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [    8.715927] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Scheduled restart job, restart counter is at 1.\n    │ [    8.729079] LAPTOP-07PVL3D8 systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [    8.733168] LAPTOP-07PVL3D8 systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [    9.919938] LAPTOP-07PVL3D8 code-server[234]: [2026-10-26T01:38:41.932Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [    9.921286] LAPTOP-07PVL3D8 code-server[234]: [2026-10-26T01:38:41.934Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [    9.951982] LAPTOP-07PVL3D8 code-server[234]: [2026-10-26T01:38:41.967Z] error listen EADDRINUSE: address already in use 127.0.0.1:7380\n    │ [    9.977040] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Main process exited, code=exited, status=1/FAILURE\n    │ [    9.977492] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Failed with result 'exit-code'.\n    │ [    9.977614] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Consumed 1.483s CPU time.\n    │ [   12.207635] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Scheduled restart job, restart counter is at 2.\n    │ [   12.232726] LAPTOP-07PVL3D8 systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   12.234731] LAPTOP-07PVL3D8 systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   12.980384] LAPTOP-07PVL3D8 code-server[288]: [2026-10-26T01:38:44.994Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   12.981030] LAPTOP-07PVL3D8 code-server[288]: [2026-10-26T01:38:44.995Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   12.995501] LAPTOP-07PVL3D8 code-server[288]: [2026-10-26T01:38:45.011Z] error listen EADDRINUSE: address already in use 127.0.0.1:7380\n    │ [   13.006751] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   13.006857] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Failed with result 'exit-code'.\n    │ [   15.121875] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Scheduled restart job, restart counter is at 3.\n    │ [   15.132755] LAPTOP-07PVL3D8 systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   15.136258] LAPTOP-07PVL3D8 systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [    8.524754] LAPTOP-07PVL3D8 unknown: WSL (132) ERROR: CheckConnection: connect() failed: 101\n    │ [   15.415576] LAPTOP-07PVL3D8 unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=1001\n    │ [   15.923541] LAPTOP-07PVL3D8 login[373]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   15.932119] LAPTOP-07PVL3D8 login[386]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   16.075388] LAPTOP-07PVL3D8 code-server[338]: [2026-10-26T01:38:48.088Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   16.077162] LAPTOP-07PVL3D8 code-server[338]: [2026-10-26T01:38:48.090Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   16.093996] LAPTOP-07PVL3D8 code-server[338]: [2026-10-26T01:38:48.108Z] error listen EADDRINUSE: address already in use 127.0.0.1:7380\n    │ [   16.110432] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   16.110768] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Failed with result 'exit-code'.\n    │ [   16.111476] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Consumed 1.175s CPU time.\n    │ [   18.275210] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Scheduled restart job, restart counter is at 4.\n    │ [   18.293976] LAPTOP-07PVL3D8 systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   18.297226] LAPTOP-07PVL3D8 systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   18.798072] LAPTOP-07PVL3D8 code-server[412]: [2026-10-26T01:38:50.811Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   18.798619] LAPTOP-07PVL3D8 code-server[412]: [2026-10-26T01:38:50.813Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   18.811039] LAPTOP-07PVL3D8 code-server[412]: [2026-10-26T01:38:50.825Z] error listen EADDRINUSE: address already in use 127.0.0.1:7380\n    │ [   18.824484] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   18.824597] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Failed with result 'exit-code'.\n    │ [   20.926141] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Scheduled restart job, restart counter is at 5.\n    │ [   20.961639] LAPTOP-07PVL3D8 systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   20.965521] LAPTOP-07PVL3D8 systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   21.587822] LAPTOP-07PVL3D8 code-server[461]: [2026-10-26T01:38:53.602Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   21.588404] LAPTOP-07PVL3D8 code-server[461]: [2026-10-26T01:38:53.603Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   21.601852] LAPTOP-07PVL3D8 code-server[461]: [2026-10-26T01:38:53.617Z] error listen EADDRINUSE: address already in use 127.0.0.1:7380\n    │ [   21.615938] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   21.616067] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Failed with result 'exit-code'.\n    │ [   23.620905] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Scheduled restart job, restart counter is at 6.\n    │ [   23.636596] LAPTOP-07PVL3D8 systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   23.637454] LAPTOP-07PVL3D8 systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   24.348858] LAPTOP-07PVL3D8 code-server[509]: [2026-10-26T01:38:56.359Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   24.350026] LAPTOP-07PVL3D8 code-server[509]: [2026-10-26T01:38:56.363Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   24.405508] LAPTOP-07PVL3D8 code-server[509]: [2026-10-26T01:38:56.420Z] error listen EADDRINUSE: address already in use 127.0.0.1:7380\n    │ [   24.439102] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   24.439289] LAPTOP-07PVL3D8 systemd[1]: code-server.service: Failed with result 'exit-code'.\n    │ [   26.034384] LAPTOP-07PVL3D8 unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=0\n  ── end boot log ──\n  ✓ workspace booted: systemd is 'running' after 10s (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    → REPAIR: (re)starting code-server on the correct bind-addr...\n    ✓ code-server (re)started\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  ✓ code-server REACHABLE on host 127.0.0.1:7380: VS Code pane will load.\n✓ Workspace verified end-to-end. Step is genuinely complete.\n✓ Workspace verified end-to-end. distro=Adom-Workspace, code-server reachable=true\n  ✓ Windows Terminal profile ensured (1 settings.json updated)\n\nVerifying mirrored networking (required for the workspace + Claude sign-in)…\n  ✓ loopback PROVEN: Windows reached a listener bound inside the workspace (the only test that counts)",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  },
  "os-baseline": {
    "status": "done",
    "output": "Checking the OS baseline the toolchain needs...\n  xz-utils (packages that unpack .tar.xz runtimes need it): ",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  },
  "test-relay": {
    "status": "done",
    "output": "Testing relay via code-server proxy...\n  relay inside the workspace :8766: NOT answering after a restart\n  ✓ Relay HTTP: {\"connectedClients\":1,\"httpPort\":8766,\"status\":\"ok\",\"tokenWarning\":\"This relay accepts the well-known DEVELOPMENT token, which is published in the              adom-bridge docs. Anyone who knows this relay's URL can join it and drive every              desktop connected to it. Rotate: restart with `adom-bridge-cli serve --supervise --token              <secret>` (or set ADOM_AUTH_TOKEN) and update each desktop's server entry auth_token to match.\",\"usingDefaultToken\":true,\"wsPort\":8765}\n  ✓ relay reachable; desktop file-transfer path ready",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  },
  "verify-workspace": {
    "status": "running",
    "output": "Proving the proxy holds HD's layout (so workspace get/tabs + panelId lookups resolve). Running the full battery each round.\n  [1/16] host: current(root)=✓ tabs=✓ panelId=✓ probe=✓ health_sse=✓ | distro: get=✓ tabs=✓ probe=✓\n  ✓ GATE PASSED — proxy holds HD's layout: host current(root)+tabs+panelId AND in-distro `adom-cli hydrogen workspace get` is non-null. workspace get/panelId lookups resolve now.",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  },
  "wait-codeserver": {
    "status": "done",
    "output": "Waiting for code-server on TCP 127.0.0.1:7380 (timeout 120s)...\n  ✓ code-server accepted TCP after 0s\n  ✓ signature check: the listener is code-server (/healthz)",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  }
}