{
  "ensure-workspace": {
    "status": "failed",
    "output": "=== Ensure workspace runtime (WSL2 Ubuntu) ===\n=== Ensure WSL2 subsystem is responsive (auto-recovers if wedged) ===\n  $ wsl --status\n    | Default Distribution: Adom-Workspace\n    | Default Version: 2\n    | WSL1 is not supported with your current machine configuration.\n    | Please enable the \"Windows Subsystem for Linux\" optional component to use WSL1.\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: Adom-Workspace\n    | Default Version: 2\n    | WSL1 is not supported with your current machine configuration.\n    | Please enable the \"Windows Subsystem for Linux\" optional component to use WSL1.\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    │ [    2.594456] winvm bash[75]: │ Rotate (both sides must match):\n    │ [    2.594456] winvm bash[75]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [    2.594456] winvm bash[75]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [    2.594456] winvm bash[75]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [    2.594456] winvm bash[75]: │              (Connections panel, or server_add with authToken)\n    │ [    2.594456] winvm bash[75]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [    2.595176] winvm bash[75]: └────────────────────────────────────────────────────────────────────────────\n    │ [    2.599628] winvm systemd[1]: Started [redacted] - Getty on tty3.\n    │ [    2.601648] winvm systemd[1]: Started [redacted] - Getty on tty4.\n    │ [    2.605216] winvm systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [    2.605580] winvm systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [    2.612714] winvm systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [    2.618245] winvm systemd[1]: Started [redacted] - Getty on tty5.\n    │ [    2.620130] winvm systemd[1]: Started [redacted] - Getty on tty6.\n    │ [    2.620790] winvm systemd[1]: Reached target getty.target - Login Prompts.\n    │ [    2.621203] winvm systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [    2.623219] winvm systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [    2.635647] winvm systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [    2.635885] winvm systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [    2.637175] winvm systemd[1]: Startup finished in 441ms.\n    │ [    2.742043] winvm CRON[85]: pam_unix(cron:session): session closed for user adom\n    │ [    2.778306] winvm kernel: TCP: eth0: Driver has suspect GRO implementation, TCP performance may be compromised.\n    │ [    2.811471] winvm login[146]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [    2.874594] winvm bash[76]: 10-20 05:12:54 NOTICE update available: wiki has 0.29.1, running 0.28.6. `adom-wiki pkg update adom/adom-shotlog` then restart `adom-shotlog serve`.\n    │ [    3.008383] winvm bash[75]: Adom relay server started\n    │ [    3.008383] winvm bash[75]:   WebSocket: ws://0.0.0.0:8765\n    │ [    3.008383] winvm bash[75]:   HTTP API:  http://127.0.0.1:8766\n    │ [    3.417400] winvm code-server[77]: [2026-10-20T05:12:55.139Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [    3.417761] winvm code-server[77]: [2026-10-20T05:12:55.151Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [    3.433463] winvm code-server[77]: [2026-10-20T05:12:55.168Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [    3.433463] winvm code-server[77]: [2026-10-20T05:12:55.168Z] info  HTTP server listening on http://127.0.0.1:7380/\n    │ [    3.433576] winvm code-server[77]: [2026-10-20T05:12:55.168Z] info    - Authentication is disabled\n    │ [    3.433576] winvm code-server[77]: [2026-10-20T05:12:55.168Z] info    - Not serving HTTPS\n    │ [    3.433576] winvm code-server[77]: [2026-10-20T05:12:55.168Z] info  Using proxy URI in PORTS tab: http://{{port}}.localhost:47083/\n    │ [    3.433576] winvm code-server[77]: [2026-10-20T05:12:55.168Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [    5.262099] winvm code-server[77]: [05:12:56]\n    │ [    5.347004] winvm code-server[77]: [reconnection-grace-time] No CLI argument provided, using default: 10800000ms (10800s)\n    │ [    5.349154] winvm code-server[77]: [05:12:57] [AgentHostChannel] Registered unavailable IPC channel 'agentHostProxy': no --agent-host-bridge-port / --agent-host-bridge-path set.\n    │ [    5.352809] winvm code-server[77]: [05:12:57] Extension host agent started.\n    │ [    5.463037] winvm code-server[77]: (node:187) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.\n    │ [    5.463037] winvm code-server[77]: (Use `node --trace-deprecation ...` to show where the warning was created)\n    │ [    6.487015] winvm unknown: WSL (131) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [    6.504685] winvm unknown: WSL (131) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [    9.744836] winvm CRON[252]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [    9.745419] winvm CRON[253]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [    9.782942] winvm CRON[252]: pam_unix(cron:session): session closed for user adom\n    │ [   10.890475] winvm code-server[77]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [   10.890937] winvm code-server[77]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [   10.902687] winvm code-server[77]: [05:13:02] [127.0.0.1][eb11dd9e][ManagementConnection] New connection established.\n    │ [   11.191199] winvm code-server[77]: (node:187) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.\n    │ [   11.621164] winvm code-server[77]: [05:13:03] [127.0.0.1][e84f4074][ExtensionHostConnection] New connection established.\n    │ [   11.707044] winvm code-server[77]: [05:13:03] [127.0.0.1][e84f4074][ExtensionHostConnection] <298> Launched Extension Host Process.\n    │ [   12.185769] winvm code-server[77]: [05:13:03] [127.0.0.1][e84f4074][ExtensionHostConnection] <298> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [    6.529727] winvm unknown: WSL (131) ERROR: CheckConnection: connect() failed: 101\n    │ [   12.944372] winvm unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=1001\n    │ [   12.946053] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxMessageResultBool. Channel: InteropServer\n    │ [   12.947224] winvm unknown: WSL (2) ERROR: Exception thrown from a scope_exit lambda Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   13.498523] winvm login[340]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   13.499874] winvm login[358]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   19.766812] winvm bash[75]: [2026-10-20T05:13:11.501Z] WS connected: a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 from 127.0.0.1:49583\n    │ [   19.768339] winvm bash[75]: [2026-10-20T05:13:11.503Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=auth id=36f3f04e-2ded-4e44-92c7-34db8cf837b8\n    │ [   19.768339] winvm bash[75]: [2026-10-20T05:13:11.503Z] Auth OK: a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 (Adom Bridge)\n    │ [   23.666058] winvm unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=0\n    │ [   23.666896] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.668007] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.668626] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.669650] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.670661] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.672276] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.675245] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.676342] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.720627] winvm systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   24.734791] winvm python3[634]: 127.0.0.1 - - [20/Oct/2026 05:13:16] \"GET / HTTP/1.1\" 200 -\n    │ [   25.854216] winvm code-server[77]: [05:13:17] [127.0.0.1][eb11dd9e][ManagementConnection] The client has disconnected gracefully, so the connection will be disposed.\n    │ [   26.132576] winvm code-server[77]: [05:13:17] [127.0.0.1][e84f4074][ExtensionHostConnection] <298> Extension Host Process exited with code: 0, signal: null.\n    │ [   26.696270] winvm code-server[77]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [   26.696442] winvm code-server[77]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [   26.705068] winvm code-server[77]: [05:13:18] [127.0.0.1][30e36bdd][ManagementConnection] New connection established.\n    │ [   26.971272] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [   26.977316] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [   26.977609] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   27.290810] winvm code-server[77]: [05:13:19] [127.0.0.1][3b5c509e][ExtensionHostConnection] New connection established.\n    │ [   27.295445] winvm code-server[77]: [05:13:19] [127.0.0.1][3b5c509e][ExtensionHostConnection] <805> Launched Extension Host Process.\n    │ [   27.583793] winvm code-server[77]: [05:13:19] [127.0.0.1][3b5c509e][ExtensionHostConnection] <805> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [   31.605803] winvm systemd[1]: Reloading requested from client PID 1079 ('systemctl')...\n    │ [   31.606022] winvm systemd[1]: Reloading...\n    │ [   31.675366] winvm systemd[1]: Reloading finished in 69 ms.\n    │ [   33.000168] winvm bash[75]: [2026-10-20T05:13:24.735Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=48103d04-1f1f-4abc-a9d7-9d6293e82f5f\n    │ [   36.360692] winvm systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   37.374169] winvm python3[1216]: 127.0.0.1 - - [20/Oct/2026 05:13:29] \"GET / HTTP/1.1\" 200 -\n    │ [   37.517177] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [   37.519521] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [   37.519759] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   47.999744] winvm bash[75]: [2026-10-20T05:13:39.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=76e86112-11e2-4d92-9095-25670a5e9947\n    │ [   49.078896] winvm kernel: hv_balloon: Max. dynamic memory size: 16380 MB\n    │ [   63.001915] winvm bash[75]: [2026-10-20T05:13:54.737Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=92d57cea-1605-4071-944b-c09fb468fc01\n    │ [   69.785467] winvm CRON[1874]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   69.786054] winvm CRON[1875]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   69.820120] winvm CRON[1874]: pam_unix(cron:session): session closed for user adom\n    │ [   77.999289] winvm bash[75]: [2026-10-20T05:14:09.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=ed6421aa-1970-4526-9ce4-f49cfd75bf12\n    │ [   92.999512] winvm bash[75]: [2026-10-20T05:14:24.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=88f90be5-f188-454d-8c24-07607d4275eb\n    │ [  107.999365] winvm bash[75]: [2026-10-20T05:14:39.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=37364ec5-3dab-4696-b605-98a5e0b0eae2\n    │ [  122.999073] winvm bash[75]: [2026-10-20T05:14:54.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=131e4f86-b84d-4cc8-b414-2a88e945f0eb\n    │ [  129.822644] winvm CRON[2575]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  129.823182] winvm CRON[2576]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  129.855225] winvm CRON[2575]: pam_unix(cron:session): session closed for user adom\n    │ [  137.999286] winvm bash[75]: [2026-10-20T05:15:09.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=b8ce0216-8c8a-4c7d-9d49-8ab30df841ca\n    │ [  152.999500] winvm bash[75]: [2026-10-20T05:15:24.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=9b9972ab-d4d6-4e59-9e3d-e0268fe05d1a\n    │ [  167.999985] winvm bash[75]: [2026-10-20T05:15:39.735Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=e022f85b-4e93-4c19-a03d-22f55c7d3836\n    │ [  182.999796] winvm bash[75]: [2026-10-20T05:15:54.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=8b1826ec-1c79-4d5e-9e16-684e6b33b7bc\n    │ [  189.859718] winvm CRON[3323]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  189.860522] winvm CRON[3324]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  189.900540] winvm CRON[3323]: pam_unix(cron:session): session closed for user adom\n    │ [  197.999379] winvm bash[75]: [2026-10-20T05:16:09.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=d517b7e2-6d61-40b1-b913-35bbf398ecde\n    │ [  212.999509] winvm bash[75]: [2026-10-20T05:16:24.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=27a5ac2d-21a6-471a-8365-e7989ea6ad5c\n    │ [  227.999537] winvm bash[75]: [2026-10-20T05:16:39.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=47d4ef9e-dcb9-45e2-ac1b-465267e85478\n    │ [  242.999306] winvm bash[75]: [2026-10-20T05:16:54.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=edd211a2-7d17-41c4-a3ba-bea67f99f79f\n    │ [  249.905288] winvm CRON[4063]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0)\n    │ [  249.905951] winvm CRON[4064]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  249.906113] winvm CRON[4065]: (root) CMD (cd / && run-parts --report /etc/cron.hourly)\n    │ [  249.906247] winvm CRON[4066]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  249.909486] winvm CRON[4063]: pam_unix(cron:session): session closed for user root\n    │ [  249.946062] winvm CRON[4064]: pam_unix(cron:session): session closed for user adom\n    │ [  257.999754] winvm bash[75]: [2026-10-20T05:17:09.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=03142e5c-07e4-49ca-936e-44eb33ed15a4\n    │ [  272.999569] winvm bash[75]: [2026-10-20T05:17:24.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=2daa4944-fb42-4716-ae43-25d68c87e58b\n    │ [  288.000234] winvm bash[75]: [2026-10-20T05:17:39.735Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=cd1c7083-94a1-4134-9690-ac541370aba6\n    │ [  303.000243] winvm bash[75]: [2026-10-20T05:17:54.735Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=5f8cb305-a141-42ed-9d44-535cf8a99396\n    │ [  309.948417] winvm CRON[4778]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  309.948929] winvm CRON[4779]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  309.979422] winvm CRON[4778]: pam_unix(cron:session): session closed for user adom\n    │ [  317.999500] winvm bash[75]: [2026-10-20T05:18:09.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=e16e98c9-e49a-4797-97fe-9848b86ec700\n    │ [  332.999269] winvm bash[75]: [2026-10-20T05:18:24.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=0c56dba1-61ad-43fc-81a7-1c215309b027\n    │ [  347.999901] winvm bash[75]: [2026-10-20T05:18:39.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=1fbced45-877f-4e6a-8f1c-1eb0cf52a8e9\n    │ [  362.999823] winvm bash[75]: [2026-10-20T05:18:54.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=d74f5eeb-2829-4bf9-8eb0-d7797feaab2a\n    │ [  369.983286] winvm CRON[5521]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  369.984219] winvm CRON[5522]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  370.019958] winvm CRON[5521]: pam_unix(cron:session): session closed for user adom\n    │ [  377.999549] winvm bash[75]: [2026-10-20T05:19:09.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=043fb60e-144b-4586-b213-ac238fd4b955\n    │ [  392.999237] winvm bash[75]: [2026-10-20T05:19:24.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=a4d7aefb-500f-4ef1-97e4-348a10459038\n    │ [  407.999482] winvm bash[75]: [2026-10-20T05:19:39.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=16029daa-da84-4dea-97d3-0a76e6fa103e\n    │ [  423.000790] winvm bash[75]: [2026-10-20T05:19:54.735Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=43bf3aba-c350-4e18-bbac-81b07e0ebd16\n    │ [  430.022440] winvm CRON[6263]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  430.023042] winvm CRON[6264]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  430.054342] winvm CRON[6263]: pam_unix(cron:session): session closed for user adom\n    │ [  437.999422] winvm bash[75]: [2026-10-20T05:20:09.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=4ddbae23-a509-411a-8904-be305c5cbb21\n    │ [  452.999578] winvm bash[75]: [2026-10-20T05:20:24.734Z] ← a862e52c-d931-44fe-bcec-2e3e5e4bc2f1 type=pong id=5b9e3106-e285-4863-9903-e2027419e0d3\n    │ [  453.128228] winvm systemd[1]: Stopping code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [  453.281585] winvm systemd[1]: code-server.service: Deactivated successfully.\n    │ [  453.281910] winvm systemd[1]: Stopped code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [  453.282134] winvm systemd[1]: code-server.service: Consumed 1min 3.578s CPU time, 1.4G memory peak, 0B memory swap peak.\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    → REPAIR: (re)starting code-server on the correct bind-addr...\n    ✓ code-server (re)started\n  ✗ code-server: port-held-windows: Port 7380 is in use by Windows PowerShell (powershell.exe) on Windows, and Hydrogen's editor needs it. Close Windows PowerShell, then run setup again.\n  ✗ workspace setup attempt failed (will retry if attempts remain): code-server: port-held-windows: Port 7380 is in use by Windows PowerShell (powershell.exe) on Windows, and Hydrogen's editor needs it. Close Windows PowerShell, then run setup again.",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  }
}