{
  "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.554489] winvm bash[75]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [    2.554489] winvm bash[75]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [    2.554489] winvm bash[75]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [    2.555160] winvm systemd[1]: Started [redacted] - Getty on tty3.\n    │ [    2.555305] winvm CRON[109]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [    2.555611] winvm bash[76]: OK: Recovered 0 channel(s) from disk\n    │ [    2.555611] winvm bash[76]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\n    │ [    2.555611] winvm bash[76]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\n    │ [    2.555611] winvm bash[76]: OK: Listening on 0.0.0.0:8820\n    │ [    2.555878] winvm bash[75]: │              (Connections panel, or server_add with authToken)\n    │ [    2.555878] winvm bash[75]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [    2.555878] winvm bash[75]: └────────────────────────────────────────────────────────────────────────────\n    │ [    2.561675] winvm systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [    2.562394] winvm systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [    2.563033] winvm systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [    2.566510] winvm systemd[1]: Started [redacted] - Getty on tty4.\n    │ [    2.567906] winvm systemd[1]: Started [redacted] - Getty on tty5.\n    │ [    2.569455] winvm systemd[1]: Started [redacted] - Getty on tty6.\n    │ [    2.569906] winvm systemd[1]: Reached target getty.target - Login Prompts.\n    │ [    2.570263] winvm systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [    2.571631] winvm systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [    2.587850] winvm systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [    2.588101] winvm systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [    2.590961] winvm systemd[1]: Startup finished in 388ms.\n    │ [    2.770792] winvm CRON[84]: pam_unix(cron:session): session closed for user adom\n    │ [    2.785297] winvm login[145]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [    2.815740] winvm kernel: TCP: eth0: Driver has suspect GRO implementation, TCP performance may be compromised.\n    │ [    2.873913] winvm bash[76]: 10-16 22:31:47 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.965077] winvm bash[75]: Adom relay server started\n    │ [    2.965077] winvm bash[75]:   WebSocket: ws://0.0.0.0:8765\n    │ [    2.965077] winvm bash[75]:   HTTP API:  http://127.0.0.1:8766\n    │ [    3.315306] winvm code-server[77]: [2026-10-16T22:31:47.644Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [    3.315725] winvm code-server[77]: [2026-10-16T22:31:47.654Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [    3.331008] winvm code-server[77]: [2026-10-16T22:31:47.670Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [    3.331160] winvm code-server[77]: [2026-10-16T22:31:47.670Z] info  HTTP server listening on http://127.0.0.1:7380/\n    │ [    3.331160] winvm code-server[77]: [2026-10-16T22:31:47.670Z] info    - Authentication is disabled\n    │ [    3.331160] winvm code-server[77]: [2026-10-16T22:31:47.670Z] info    - Not serving HTTPS\n    │ [    3.331160] winvm code-server[77]: [2026-10-16T22:31:47.670Z] info  Using proxy URI in PORTS tab: http://{{port}}.localhost:47083/\n    │ [    3.331160] winvm code-server[77]: [2026-10-16T22:31:47.670Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [    5.449701] winvm code-server[77]: [22:31:49]\n    │ [    5.515809] winvm code-server[77]: [reconnection-grace-time] No CLI argument provided, using default: 10800000ms (10800s)\n    │ [    5.517092] winvm code-server[77]: [22:31:49] [AgentHostChannel] Registered unavailable IPC channel 'agentHostProxy': no --agent-host-bridge-port / --agent-host-bridge-path set.\n    │ [    5.520114] winvm code-server[77]: [22:31:49] Extension host agent started.\n    │ [    5.560895] 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.560895] winvm code-server[77]: (Use `node --trace-deprecation ...` to show where the warning was created)\n    │ [    6.462113] winvm unknown: WSL (132) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [    6.477709] winvm unknown: WSL (132) ERROR: CheckConnection: getaddrinfo() failed: -5\n    │ [   11.414797] winvm code-server[77]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [   11.415140] winvm code-server[77]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [   11.423982] winvm code-server[77]: [22:31:55] [127.0.0.1][c2e447a4][ManagementConnection] New connection established.\n    │ [   11.686412] winvm code-server[77]: (node:187) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.\n    │ [   12.038289] winvm code-server[77]: [22:31:56] [127.0.0.1][f4c0ef05][ExtensionHostConnection] New connection established.\n    │ [   12.099292] winvm code-server[77]: [22:31:56] [127.0.0.1][f4c0ef05][ExtensionHostConnection] <303> Launched Extension Host Process.\n    │ [   12.619138] winvm code-server[77]: [22:31:56] [127.0.0.1][f4c0ef05][ExtensionHostConnection] <303> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [    6.483391] winvm unknown: WSL (132) ERROR: CheckConnection: connect() failed: 101\n    │ [   12.833106] winvm unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=1001\n    │ [   12.834314] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxMessageResultBool. Channel: InteropServer\n    │ [   12.835736] 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.215677] winvm login[343]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   13.217502] winvm login[355]: ROOT LOGIN  on '/dev/pts/4'\n    │ [   16.773405] winvm CRON[556]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   16.773963] winvm CRON[557]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   16.816856] winvm CRON[556]: pam_unix(cron:session): session closed for user adom\n    │ [   17.368080] winvm bash[75]: [2026-10-16T22:32:01.707Z] WS connected: 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 from 127.0.0.1:59175\n    │ [   17.368465] winvm bash[75]: [2026-10-16T22:32:01.707Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=auth id=0868fa49-786c-407b-92f5-32989d5b0187\n    │ [   17.368465] winvm bash[75]: [2026-10-16T22:32:01.708Z] Auth OK: 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 (Adom Bridge)\n    │ [   17.958756] winvm bash[75]: [2026-10-16T22:32:02.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=9b0c4bc4-9d84-44e9-949a-ad376fef7db1\n    │ [   23.299844] winvm unknown: WSL (2 - Interop) ERROR: CreateLoginSession:3068: Timed out waiting for user session for uid=0\n    │ [   23.300539] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.301487] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.302298] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.303087] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.303704] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.304792] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.305578] winvm unknown: WSL (2 - Interop) ERROR: SendMessage:206: Failed to write message LxInitMessageQueryEnvironmentVariable. Channel: InteropServer\n    │ [   23.306511] winvm unknown: WSL (2) ERROR: Broken pipe @C:/__w/1/s/src/shared/inc\\SocketChannel.h:207 (SendMessage)\n    │ [   23.332561] winvm systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   24.347233] winvm python3[763]: 127.0.0.1 - - [16/Oct/2026 22:32:08] \"GET / HTTP/1.1\" 200 -\n    │ [   25.070287] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [   25.071896] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [   25.072129] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   28.441233] winvm systemd[1]: Reloading requested from client PID 949 ('systemctl')...\n    │ [   28.441443] winvm systemd[1]: Reloading...\n    │ [   28.504974] winvm systemd[1]: Reloading finished in 63 ms.\n    │ [   32.708624] winvm systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   32.958894] winvm bash[75]: [2026-10-16T22:32:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=90a21288-0f1a-47ee-b598-c175f263c38c\n    │ [   33.725480] winvm python3[1060]: 127.0.0.1 - - [16/Oct/2026 22:32:18] \"GET / HTTP/1.1\" 200 -\n    │ [   33.802289] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [   33.803946] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [   33.804240] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   47.958627] winvm bash[75]: [2026-10-16T22:32:32.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=e20caa06-1955-451f-8ee3-dd1e039b0851\n    │ [   49.031870] winvm kernel: hv_balloon: Max. dynamic memory size: 16380 MB\n    │ [   62.958719] winvm bash[75]: [2026-10-16T22:32:47.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=b4b56dc2-c007-407f-a092-8d068dd4edd1\n    │ [   76.820269] winvm CRON[1834]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   76.820736] winvm CRON[1835]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   76.853758] winvm CRON[1834]: pam_unix(cron:session): session closed for user adom\n    │ [   77.958506] winvm bash[75]: [2026-10-16T22:33:02.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=184a222e-8912-4b7e-a087-c9e431cdeb67\n    │ [   92.959331] winvm bash[75]: [2026-10-16T22:33:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=6f09c709-24e9-4d81-9607-afdfa0c03d46\n    │ [  107.958666] winvm bash[75]: [2026-10-16T22:33:32.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=f00642e2-8e66-43c2-95ac-a056c5b90594\n    │ [  122.958552] winvm bash[75]: [2026-10-16T22:33:47.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=305d3d70-0e76-48df-aad6-a3b3ea52f3ca\n    │ [  136.857500] winvm CRON[2553]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  136.857987] winvm CRON[2554]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  136.893298] winvm CRON[2553]: pam_unix(cron:session): session closed for user adom\n    │ [  137.958516] winvm bash[75]: [2026-10-16T22:34:02.297Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=e533d86f-9a16-41e0-bb5a-ed2bd70e4e05\n    │ [  152.959331] winvm bash[75]: [2026-10-16T22:34:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=c1f66a4f-bf76-4ccd-9ae8-e8b196123033\n    │ [  167.958378] winvm bash[75]: [2026-10-16T22:34:32.297Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=d0668f1a-bdf5-4796-972a-06eaf6df386d\n    │ [  182.959509] winvm bash[75]: [2026-10-16T22:34:47.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=361cce2f-22ed-4bdf-8285-8e296ff9c8a0\n    │ [  196.896060] winvm CRON[3267]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  196.896603] winvm CRON[3268]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  196.930513] winvm CRON[3267]: pam_unix(cron:session): session closed for user adom\n    │ [  197.958786] winvm bash[75]: [2026-10-16T22:35:02.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=7bbee4bd-cb1a-4dc6-b18c-773076b75246\n    │ [  212.958664] winvm bash[75]: [2026-10-16T22:35:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=3656d52b-c99c-4f6d-afbd-372f2348ec1b\n    │ [  227.958556] winvm bash[75]: [2026-10-16T22:35:32.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=8ce75feb-f96f-47d6-aecd-8ebe1f67dca2\n    │ [  242.958516] winvm bash[75]: [2026-10-16T22:35:47.297Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=3874c757-6b7a-4fb5-80e0-75235d9b9199\n    │ [  256.933354] winvm CRON[4002]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  256.933821] winvm CRON[4003]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  256.967520] winvm CRON[4002]: pam_unix(cron:session): session closed for user adom\n    │ [  257.959083] winvm bash[75]: [2026-10-16T22:36:02.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=8e335d23-ca74-4ae6-8eb2-24e5a5dddac8\n    │ [  272.959097] winvm bash[75]: [2026-10-16T22:36:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=1fc126f0-4742-41cb-8d99-b59f6d51390e\n    │ [  287.958692] winvm bash[75]: [2026-10-16T22:36:32.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=1b5ca8ea-7658-4021-b99d-3dab98e52f78\n    │ [  302.958868] winvm bash[75]: [2026-10-16T22:36:47.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=ed90c4ad-5f8e-4d14-ae6a-17946b7fcda0\n    │ [  316.970706] winvm CRON[4746]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  316.971186] winvm CRON[4747]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  317.003956] winvm CRON[4746]: pam_unix(cron:session): session closed for user adom\n    │ [  317.959151] winvm bash[75]: [2026-10-16T22:37:02.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=b3d4718b-b1c3-4c79-a46b-cb3dd66d2487\n    │ [  332.959212] winvm bash[75]: [2026-10-16T22:37:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=05a3fa1e-149d-4a4e-9ec4-c3b80de93375\n    │ [  347.958520] winvm bash[75]: [2026-10-16T22:37:32.297Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=f3b0b1e6-7caa-4080-85a8-30e9c9b0a015\n    │ [  362.958411] winvm bash[75]: [2026-10-16T22:37:47.297Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=dd2c7f74-f213-4da7-a77c-2cce86aacc47\n    │ [  377.006705] winvm CRON[5452]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  377.007159] winvm CRON[5453]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  377.039719] winvm CRON[5452]: pam_unix(cron:session): session closed for user adom\n    │ [  377.958761] winvm bash[75]: [2026-10-16T22:38:02.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=ebf0f083-8e81-4d1b-ac8d-beb19baf3130\n    │ [  392.959288] winvm bash[75]: [2026-10-16T22:38:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=e82ff0ec-dbd0-44ea-861f-52444f01ec22\n    │ [  407.958429] winvm bash[75]: [2026-10-16T22:38:32.297Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=ec383da5-d3c7-4e19-a2e4-b70e16bcff90\n    │ [  422.958657] winvm bash[75]: [2026-10-16T22:38:47.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=4f756b52-21c5-4477-a22a-c98fc4c3c9b5\n    │ [  424.001980] winvm code-server[77]: [22:38:48] [127.0.0.1][c2e447a4][ManagementConnection] The client has disconnected gracefully, so the connection will be disposed.\n    │ [  426.061427] winvm systemd[1]: Stopping code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [  426.291377] winvm systemd[1]: code-server.service: Deactivated successfully.\n    │ [  426.291711] winvm systemd[1]: Stopped code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [  426.291900] winvm systemd[1]: code-server.service: Consumed 46.777s CPU time, 1.3G memory peak, 0B memory swap peak.\n    │ [  437.042837] winvm CRON[6097]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  437.043524] winvm CRON[6098]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  437.080349] winvm CRON[6097]: pam_unix(cron:session): session closed for user adom\n    │ [  437.959110] winvm bash[75]: [2026-10-16T22:39:02.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=a8ffe4f7-0d8c-4d5a-9b47-2eb857069010\n    │ [  452.958969] winvm bash[75]: [2026-10-16T22:39:17.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=5e60d386-6ca2-4299-a321-2be123bb6631\n    │ [  467.959284] winvm bash[75]: [2026-10-16T22:39:32.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=18040a26-1e81-41ce-b8ce-102ebd9462c9\n    │ [  482.958806] winvm bash[75]: [2026-10-16T22:39:47.298Z] ← 9bc3e3f9-96f9-4435-9b19-7cb00825b1b3 type=pong id=2b9b13de-085b-4023-99df-d4f5007aa705\n    │ [  497.083761] winvm CRON[6218]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  497.084449] winvm CRON[6219]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  497.123873] winvm CRON[6218]: pam_unix(cron:session): session closed for user adom\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
  }
}