{
  "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.474025] winvm bash[80]: │ Rotate (both sides must match):\n    │ [    2.474025] winvm bash[80]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [    2.474025] winvm bash[80]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [    2.474025] winvm bash[80]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [    2.474025] winvm bash[80]: │              (Connections panel, or server_add with authToken)\n    │ [    2.474025] winvm bash[80]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [    2.474565] winvm bash[80]: └────────────────────────────────────────────────────────────────────────────\n    │ [    2.476706] winvm systemd[1]: Started [redacted] - Getty on tty4.\n    │ [    2.479778] winvm systemd[1]: Started [redacted] - Getty on tty5.\n    │ [    2.481756] winvm systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [    2.481944] winvm systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [    2.485453] winvm systemd[1]: Started [redacted] - Getty on tty6.\n    │ [    2.486878] winvm systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [    2.487660] winvm systemd[1]: Reached target getty.target - Login Prompts.\n    │ [    2.487945] winvm systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [    2.489285] winvm systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [    2.497889] winvm systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [    2.498064] winvm systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [    2.504664] winvm systemd[1]: Startup finished in 351ms.\n    │ [    2.666886] winvm CRON[90]: pam_unix(cron:session): session closed for user adom\n    │ [    2.713932] winvm login[156]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [    2.729208] winvm kernel: TCP: eth0: Driver has suspect GRO implementation, TCP performance may be compromised.\n    │ [    2.774781] winvm bash[81]: 10-17 17:18:48 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    │ [    2.883974] winvm bash[80]: Adom relay server started\n    │ [    2.883974] winvm bash[80]:   WebSocket: ws://0.0.0.0:8765\n    │ [    2.883974] winvm bash[80]:   HTTP API:  http://127.0.0.1:8766\n    │ [    3.333797] winvm code-server[82]: [2026-10-17T17:18:49.192Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [    3.334241] winvm code-server[82]: [2026-10-17T17:18:49.201Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [    3.346659] winvm code-server[82]: [2026-10-17T17:18:49.215Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [    3.346721] winvm code-server[82]: [2026-10-17T17:18:49.215Z] info  HTTP server listening on http://127.0.0.1:7380/\n    │ [    3.346721] winvm code-server[82]: [2026-10-17T17:18:49.215Z] info    - Authentication is disabled\n    │ [    3.347251] winvm code-server[82]: [2026-10-17T17:18:49.215Z] info    - Not serving HTTPS\n    │ [    3.347387] winvm code-server[82]: [2026-10-17T17:18:49.215Z] info  Using proxy URI in PORTS tab: http://{{port}}.localhost:47083/\n    │ [    3.347387] winvm code-server[82]: [2026-10-17T17:18:49.215Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [    4.248037] winvm code-server[82]: [17:18:50]\n    │ [    4.330524] winvm code-server[82]: [reconnection-grace-time] No CLI argument provided, using default: 10800000ms (10800s)\n    │ [    4.331802] winvm code-server[82]: [17:18:50] [AgentHostChannel] Registered unavailable IPC channel 'agentHostProxy': no --agent-host-bridge-port / --agent-host-bridge-path set.\n    │ [    4.335579] winvm code-server[82]: [17:18:50] Extension host agent started.\n    │ [    4.374187] winvm code-server[82]: (node:192) [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    │ [    4.374187] winvm code-server[82]: (Use `node --trace-deprecation ...` to show where the warning was created)\n    │ [    6.498543] winvm unknown: WSL (130) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [    6.517214] winvm unknown: WSL (130) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [    9.990901] winvm code-server[82]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [    9.991289] winvm code-server[82]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [    9.998973] winvm code-server[82]: [17:18:55] [127.0.0.1][de2cdf90][ManagementConnection] New connection established.\n    │ [   10.454100] winvm code-server[82]: (node:192) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.\n    │ [   10.581374] winvm code-server[82]: [17:18:56] [127.0.0.1][87fcbf18][ExtensionHostConnection] New connection established.\n    │ [   10.636616] winvm code-server[82]: [17:18:56] [127.0.0.1][87fcbf18][ExtensionHostConnection] <296> Launched Extension Host Process.\n    │ [   11.270231] winvm code-server[82]: [17:18:57] [127.0.0.1][87fcbf18][ExtensionHostConnection] <296> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [    6.521658] winvm unknown: WSL (130) ERROR: CheckConnection: connect() failed: 101\n    │ [   12.759403] winvm unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=1001\n    │ [   12.760795] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxMessageResultBool. Channel: InteropServer\n    │ [   12.761596] 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    │ [   14.395582] winvm code-server[82]: [17:19:00] [127.0.0.1][de2cdf90][ManagementConnection] The client has disconnected gracefully, so the connection will be disposed.\n    │ [   14.713846] winvm login[561]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   14.715298] winvm login[573]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   14.818230] winvm code-server[82]: [17:19:00] [127.0.0.1][87fcbf18][ExtensionHostConnection] <296> Extension Host Process exited with code: 0, signal: null.\n    │ [   15.211476] winvm code-server[82]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [   15.211771] winvm code-server[82]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [   15.217347] winvm code-server[82]: [17:19:01] [127.0.0.1][53bbf4fb][ManagementConnection] New connection established.\n    │ [   15.656089] winvm code-server[82]: [17:19:01] [127.0.0.1][2f7f027f][ExtensionHostConnection] New connection established.\n    │ [   15.660513] winvm code-server[82]: [17:19:01] [127.0.0.1][2f7f027f][ExtensionHostConnection] <595> Launched Extension Host Process.\n    │ [   15.669054] winvm CRON[601]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   15.669778] winvm CRON[602]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   15.717651] winvm CRON[601]: pam_unix(cron:session): session closed for user adom\n    │ [   15.861086] winvm code-server[82]: [17:19:01] [127.0.0.1][2f7f027f][ExtensionHostConnection] <595> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [   24.792032] winvm unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=0\n    │ [   24.792637] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   24.793534] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   24.794185] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   24.794787] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   24.795257] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   24.795819] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   24.796258] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   24.796911] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   24.912543] winvm systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   25.924411] winvm python3[869]: 127.0.0.1 - - [17/Oct/2026 17:19:11] \"GET / HTTP/1.1\" 200 -\n    │ [   26.789226] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [   26.791364] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [   26.791632] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   29.985510] winvm systemd[1]: Reloading requested from client PID 1126 ('systemctl')...\n    │ [   29.985828] winvm systemd[1]: Reloading...\n    │ [   30.057521] winvm systemd[1]: Reloading finished in 71 ms.\n    │ [   30.702657] winvm bash[80]: [2026-10-17T17:19:16.571Z] WS connected: 24a01856-62e7-42c6-9ccb-2299bc66aa94 from 127.0.0.1:59841\n    │ [   30.703071] winvm bash[80]: [2026-10-17T17:19:16.571Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=auth id=b70965d1-1765-43fb-a4a3-0c3e41a53e4b\n    │ [   30.703071] winvm bash[80]: [2026-10-17T17:19:16.571Z] Auth OK: 24a01856-62e7-42c6-9ccb-2299bc66aa94 (Adom Bridge)\n    │ [   32.880297] winvm bash[80]: [2026-10-17T17:19:18.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=e9979171-4e80-4a36-b232-00a9c81b2663\n    │ [   34.199967] winvm systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   35.213554] winvm python3[1228]: 127.0.0.1 - - [17/Oct/2026 17:19:21] \"GET / HTTP/1.1\" 200 -\n    │ [   35.311506] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [   35.313384] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [   35.313635] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   47.879838] winvm bash[80]: [2026-10-17T17:19:33.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=1a5b6ed0-fddd-4faf-a7db-6de0d407f14e\n    │ [   49.032496] winvm kernel: hv_balloon: Max. dynamic memory size: 16380 MB\n    │ [   62.879756] winvm bash[80]: [2026-10-17T17:19:48.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=01956d2a-300d-49b3-a470-410b84966590\n    │ [   75.719846] winvm CRON[1983]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   75.720395] winvm CRON[1984]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   75.751562] winvm CRON[1983]: pam_unix(cron:session): session closed for user adom\n    │ [   77.880162] winvm bash[80]: [2026-10-17T17:20:03.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=5e0a494f-91e2-4dc2-ab8e-9045f33ac2c5\n    │ [   92.880230] winvm bash[80]: [2026-10-17T17:20:18.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=7f25afdf-c8fb-4411-822e-d0a7eecb4202\n    │ [  107.879709] winvm bash[80]: [2026-10-17T17:20:33.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=aa85015a-b592-4d94-b188-1659c19a5439\n    │ [  122.880148] winvm bash[80]: [2026-10-17T17:20:48.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=90a7ddb4-7c7e-4582-8582-ebe12aefba8a\n    │ [  135.753884] winvm CRON[2666]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  135.754427] winvm CRON[2667]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  135.786966] winvm CRON[2666]: pam_unix(cron:session): session closed for user adom\n    │ [  137.879906] winvm bash[80]: [2026-10-17T17:21:03.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=620c88a3-49ce-410e-ad0e-cc51b97ef55e\n    │ [  152.880235] winvm bash[80]: [2026-10-17T17:21:18.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=248f35b3-60b4-4ecc-9dca-25e779e63c8c\n    │ [  167.880288] winvm bash[80]: [2026-10-17T17:21:33.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=7089bdbe-7e6d-47b1-8d7c-226ddcada051\n    │ [  182.880251] winvm bash[80]: [2026-10-17T17:21:48.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=632fc606-9c2b-4dec-a9e3-670d865973c6\n    │ [  195.789210] winvm CRON[3407]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  195.789691] winvm CRON[3408]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  195.824775] winvm CRON[3407]: pam_unix(cron:session): session closed for user adom\n    │ [  197.879982] winvm bash[80]: [2026-10-17T17:22:03.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=613c9cdf-d70c-46d1-9ba4-94002213c4fc\n    │ [  212.880256] winvm bash[80]: [2026-10-17T17:22:18.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=b7606e53-b90d-4df4-b33d-d5b2fb7ccf59\n    │ [  227.879866] winvm bash[80]: [2026-10-17T17:22:33.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=5cfc76f5-4f48-4db1-9868-bf7ddce49f36\n    │ [  242.879868] winvm bash[80]: [2026-10-17T17:22:48.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=fc8f0069-e5db-40e3-9aad-2b7d1235a38f\n    │ [  255.826987] winvm CRON[4125]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  255.827503] winvm CRON[4126]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  255.859490] winvm CRON[4125]: pam_unix(cron:session): session closed for user adom\n    │ [  257.880329] winvm bash[80]: [2026-10-17T17:23:03.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=f95dc778-a3b9-49e3-be98-e978422771df\n    │ [  272.880591] winvm bash[80]: [2026-10-17T17:23:18.749Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=26af55d7-3d98-4265-adb5-a89822494266\n    │ [  287.880393] winvm bash[80]: [2026-10-17T17:23:33.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=27bd215b-c2ef-4d24-a6a2-1f1c1e081aea\n    │ [  302.880128] winvm bash[80]: [2026-10-17T17:23:48.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=314a866a-e319-469c-be63-f21ce9ebd259\n    │ [  315.861588] winvm CRON[4825]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  315.862038] winvm CRON[4826]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  315.893781] winvm CRON[4825]: pam_unix(cron:session): session closed for user adom\n    │ [  317.880268] winvm bash[80]: [2026-10-17T17:24:03.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=68d616e0-8844-42ec-9dad-203c69decfbe\n    │ [  332.880640] winvm bash[80]: [2026-10-17T17:24:18.749Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=e738a961-b3f9-416a-a495-c3e29eb4b69c\n    │ [  347.879847] winvm bash[80]: [2026-10-17T17:24:33.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=1073354f-d7b1-457e-acb3-a6d7a73874de\n    │ [  362.879766] winvm bash[80]: [2026-10-17T17:24:48.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=a0c01327-c8f8-4e1c-aedf-bd81c47ff819\n    │ [  375.895818] winvm CRON[5541]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  375.896387] winvm CRON[5542]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  375.928934] winvm CRON[5541]: pam_unix(cron:session): session closed for user adom\n    │ [  377.880319] winvm bash[80]: [2026-10-17T17:25:03.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=183dc42c-7438-4f8f-b85e-d60f8a276345\n    │ [  392.880185] winvm bash[80]: [2026-10-17T17:25:18.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=4a8e2576-e866-40eb-8ec3-23e9dce446f7\n    │ [  407.880568] winvm bash[80]: [2026-10-17T17:25:33.749Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=86942fe5-efd9-460f-9915-a7546b0f75d3\n    │ [  421.169945] winvm code-server[82]: [17:25:47] [127.0.0.1][53bbf4fb][ManagementConnection] The client has disconnected gracefully, so the connection will be disposed.\n    │ [  421.396866] winvm code-server[82]: [17:25:47] [127.0.0.1][2f7f027f][ExtensionHostConnection] <595> Extension Host Process exited with code: 0, signal: null.\n    │ [  422.880795] winvm bash[80]: [2026-10-17T17:25:48.749Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=f3f9e50d-0a04-4339-8956-149feb9262f7\n    │ [  423.214216] winvm systemd[1]: Stopping code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [  423.397791] winvm systemd[1]: code-server.service: Deactivated successfully.\n    │ [  423.398254] winvm systemd[1]: Stopped code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [  423.398496] winvm systemd[1]: code-server.service: Consumed 48.390s CPU time, 1.3G memory peak, 0B memory swap peak.\n    │ [  435.931947] winvm CRON[6139]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  435.932477] winvm CRON[6140]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  435.967054] winvm CRON[6139]: pam_unix(cron:session): session closed for user adom\n    │ [  437.880677] winvm bash[80]: [2026-10-17T17:26:03.749Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=16bb66cf-e767-4d5f-aef6-db36e6fd734a\n    │ [  452.879996] winvm bash[80]: [2026-10-17T17:26:18.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=43b72f1e-90b7-42a3-931c-b1524a0c70fb\n    │ [  467.883047] winvm bash[80]: [2026-10-17T17:26:33.751Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=dfa13963-9de0-4d7d-963c-d093319e5691\n    │ [  482.880346] winvm bash[80]: [2026-10-17T17:26:48.748Z] ← 24a01856-62e7-42c6-9ccb-2299bc66aa94 type=pong id=650d4580-2b29-4512-a1d8-3dca54d6e82c\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
  }
}