{
  "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    │ [   96.424316] winvm code-server[1294]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [   96.434917] winvm code-server[1294]: [12:35:42] [127.0.0.1][1fd8ef6b][ManagementConnection] New connection established.\n    │ [   96.595676] winvm python3[1352]: 127.0.0.1 - - [19/Oct/2026 12:35:42] \"GET / HTTP/1.1\" 200 -\n    │ [   96.698760] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [   96.701265] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [   96.701581] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [   96.714881] winvm code-server[1294]: (node:1313) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.\n    │ [   97.082110] winvm adom-bridge[102]: [2026-10-19T12:35:43.221Z] ← 014842b0-6ebc-4704-8056-5aac96d0b974 type=pong id=4a75e96f-cfc3-4bef-9aa1-c8a4412b6870\n    │ [   97.131276] winvm code-server[1294]: [12:35:43] [127.0.0.1][11635b19][ExtensionHostConnection] New connection established.\n    │ [   97.413141] winvm code-server[1294]: [12:35:43] [127.0.0.1][11635b19][ExtensionHostConnection] <1405> Launched Extension Host Process.\n    │ [   97.946684] winvm code-server[1294]: [12:35:44] [127.0.0.1][11635b19][ExtensionHostConnection] <1405> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [   98.332815] winvm systemd[1]: Reloading requested from client PID 1457 ('systemctl')...\n    │ [   98.333084] winvm systemd[1]: Reloading...\n    │ [   98.408449] winvm systemd[1]: Reloading finished in 75 ms.\n    │ [   98.435619] winvm systemd[1]: Stopping code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   98.457331] winvm systemd[1]: code-server.service: Deactivated successfully.\n    │ [   98.457678] winvm systemd[1]: Stopped code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   98.457739] winvm systemd[1]: code-server.service: Consumed 3.713s CPU time, 287.1M memory peak, 0B memory swap peak.\n    │ [   98.472593] winvm systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   98.473727] winvm systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   98.985480] winvm code-server[1478]: [2026-10-19T12:35:45.110Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   98.985480] winvm code-server[1478]: [2026-10-19T12:35:45.115Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   98.989327] winvm systemd[1]: Reloading requested from client PID 1541 ('systemctl')...\n    │ [   98.989444] winvm systemd[1]: Reloading...\n    │ [   99.015079] winvm code-server[1478]: [2026-10-19T12:35:45.153Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [   99.015618] winvm code-server[1478]: [2026-10-19T12:35:45.153Z] info  HTTP server listening on http://127.0.0.1:7380/\n    │ [   99.015618] winvm code-server[1478]: [2026-10-19T12:35:45.153Z] info    - Authentication is disabled\n    │ [   99.015618] winvm code-server[1478]: [2026-10-19T12:35:45.153Z] info    - Not serving HTTPS\n    │ [   99.015618] winvm code-server[1478]: [2026-10-19T12:35:45.153Z] info  Using proxy URI in PORTS tab: http://{{port}}.localhost:47083/\n    │ [   99.015618] winvm code-server[1478]: [2026-10-19T12:35:45.153Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [   99.101434] winvm systemd[1]: Reloading finished in 111 ms.\n    │ [   99.245315] winvm systemd[1]: Stopping adom-relay.service - Adom Bridge relay (adom-bridge-cli serve) - the bridge AB/HD connect back to...\n    │ [   99.247153] winvm systemd[1]: adom-relay.service: Deactivated successfully.\n    │ [   99.247426] winvm systemd[1]: Stopped adom-relay.service - Adom Bridge relay (adom-bridge-cli serve) - the bridge AB/HD connect back to.\n    │ [   99.811595] winvm systemd[1]: Reloading requested from client PID 1578 ('systemctl')...\n    │ [   99.811863] winvm systemd[1]: Reloading...\n    │ [   99.915766] winvm systemd[1]: Reloading finished in 103 ms.\n    │ [   99.982546] winvm systemd[1]: Starting adom-relay.service - Adom Bridge relay (adom-bridge-cli serve) - the bridge AB/HD connect back to...\n    │ [   99.983719] winvm systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge-cli serve) - the bridge AB/HD connect back to.\n    │ [   99.990253] winvm bash[1599]: 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    │ [   99.990617] winvm bash[1599]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\n    │ [   99.990617] winvm bash[1599]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\n    │ [   99.990617] winvm bash[1599]: │    In a container that means: when the session that launched it is torn down,\n    │ [   99.990617] winvm bash[1599]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\n    │ [   99.990617] winvm bash[1599]: │    falls into an endless \"Reconnecting in 30s\" loop until someone restarts it.\n    │ [   99.990617] winvm bash[1599]: │\n    │ [   99.990617] winvm bash[1599]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\n    │ [   99.990617] winvm bash[1599]: │        adom-bridge serve --supervise\n    │ [   99.990617] winvm bash[1599]: │    That detaches the relay from your session (reparented to init) and starts a\n    │ [   99.990617] winvm bash[1599]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\n    │ [   99.990617] winvm bash[1599]: │    desktops (with the reason) whenever it has to. Stop later with:\n    │ [   99.990617] winvm bash[1599]: │        adom-bridge serve --stop\n    │ [   99.990617] winvm bash[1599]: │\n    │ [   99.990617] winvm bash[1599]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\n    │ [   99.990617] winvm bash[1599]: └────────────────────────────────────────────────────────────────────────────\n    │ [   99.990617] winvm bash[1599]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\n    │ [   99.990617] winvm bash[1599]: │ The token is a well-known literal published in the adom-bridge docs, so\n    │ [   99.990617] winvm bash[1599]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\n    │ [   99.990617] winvm bash[1599]: │ connected to it. If a connected desktop controls real hardware, treat\n    │ [   99.990617] winvm bash[1599]: │ this as an open door.\n    │ [   99.990617] winvm bash[1599]: │\n    │ [   99.990617] winvm bash[1599]: │ Rotate (both sides must match):\n    │ [   99.990617] winvm bash[1599]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [   99.990617] winvm bash[1599]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [   99.990617] winvm bash[1599]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [   99.990617] winvm bash[1599]: │              (Connections panel, or server_add with authToken)\n    │ [   99.990617] winvm bash[1599]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [   99.991128] winvm bash[1599]: └────────────────────────────────────────────────────────────────────────────\n    │ [   99.996741] winvm bash[1599]: Adom relay server started\n    │ [   99.996741] winvm bash[1599]:   WebSocket: ws://0.0.0.0:8765\n    │ [   99.996741] winvm bash[1599]:   HTTP API:  http://127.0.0.1:8766\n    │ [  100.027391] winvm code-server[1478]: (node:1515) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.\n    │ [  100.027391] winvm code-server[1478]: (Use `node --trace-deprecation ...` to show where the warning was created)\n    │ [  104.909955] winvm code-server[1478]: [12:35:51]\n    │ [  104.950338] winvm code-server[1478]: [reconnection-grace-time] No CLI argument provided, using default: 10800000ms (10800s)\n    │ [  104.951807] winvm code-server[1478]: [12:35:51] [AgentHostChannel] Registered unavailable IPC channel 'agentHostProxy': no --agent-host-bridge-port / --agent-host-bridge-path set.\n    │ [  104.954282] winvm code-server[1478]: [12:35:51] Extension host agent started.\n    │ [  104.957648] winvm code-server[1478]: (node:1515) [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    │ [  105.021850] winvm code-server[1478]: [12:35:51] [127.0.0.1][11635b19][ExtensionHostConnection] Unknown reconnection token (never seen).\n    │ [  106.096622] winvm code-server[1478]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [  106.097008] winvm code-server[1478]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [  106.102992] winvm code-server[1478]: [12:35:52] [127.0.0.1][a0eff1f5][ManagementConnection] New connection established.\n    │ [  106.659761] winvm code-server[1478]: [12:35:52] [127.0.0.1][50f05f22][ExtensionHostConnection] New connection established.\n    │ [  106.735206] winvm code-server[1478]: [12:35:52] [127.0.0.1][50f05f22][ExtensionHostConnection] <1666> Launched Extension Host Process.\n    │ [  107.038271] winvm code-server[1478]: [12:35:53] [127.0.0.1][50f05f22][ExtensionHostConnection] <1666> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [  113.206757] winvm code-server[1478]: [12:35:59] Getting Manifest... anthropic.claude-code\n    │ [  114.936345] winvm CRON[2151]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  114.936781] winvm CRON[2152]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  114.978487] winvm CRON[2151]: pam_unix(cron:session): session closed for user adom\n    │ [  120.126593] winvm code-server[1478]: [12:36:06] Installing extension: anthropic.claude-code {\n    │ [  120.126593] winvm code-server[1478]:   productVersion: { version: '1.124.2', date: '2026-06-12T00:12:36Z' },\n    │ [  120.126593] winvm code-server[1478]:   pinned: false,\n    │ [  120.126593] winvm code-server[1478]:   operation: 3,\n    │ [  120.126593] winvm code-server[1478]:   isApplicationScoped: false,\n    │ [  120.126593] winvm code-server[1478]:   isBuiltin: false,\n    │ [  120.126593] winvm code-server[1478]:   profileLocation: Ks {\n    │ [  120.126593] winvm code-server[1478]:     scheme: 'file',\n    │ [  120.126593] winvm code-server[1478]:     authority: '',\n    │ [  120.126593] winvm code-server[1478]:     path: '/home/adom/.local/share/code-server/extensions/extensions.json',\n    │ [  120.126593] winvm code-server[1478]:     query: '',\n    │ [  120.126593] winvm code-server[1478]:     fragment: '',\n    │ [  120.126593] winvm code-server[1478]:     _formatted: 'file:///home/adom/.local/share/code-server/extensions/extensions.json',\n    │ [  120.126593] winvm code-server[1478]:     _fsPath: '/home/adom/.local/share/code-server/extensions/extensions.json'\n    │ [  120.126593] winvm code-server[1478]:   }\n    │ [  120.126593] winvm code-server[1478]: }\n    │ [  126.516041] winvm bash[1599]: [2026-10-19T12:36:12.654Z] WS connected: 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 from 127.0.0.1:56378\n    │ [  126.516647] winvm bash[1599]: [2026-10-19T12:36:12.655Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=auth id=3d0bb12c-f269-4271-9ded-ffb38f777d3b\n    │ [  126.516647] winvm bash[1599]: [2026-10-19T12:36:12.655Z] Auth OK: 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 (Adom Bridge)\n    │ [  126.973868] winvm code-server[1478]: [12:36:13] Extracted extension to file:///home/adom/.local/share/code-server/extensions/anthropic.claude-code-2.1.303-linux-x64: anthropic.claude-code\n    │ [  126.997271] winvm code-server[1478]: [12:36:13] Renamed to /home/adom/.local/share/code-server/extensions/anthropic.claude-code-2.1.303-linux-x64\n    │ [  127.010927] winvm code-server[1478]: [12:36:13] Marked extension as removed anthropic.claude-code-2.1.278-linux-x64\n    │ [  127.011417] winvm code-server[1478]: [12:36:13] Extension installed successfully: anthropic.claude-code file:///home/adom/.local/share/code-server/extensions/extensions.json\n    │ [  129.994333] winvm bash[1599]: [2026-10-19T12:36:16.133Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=pong id=1b894fd6-7115-4d82-a697-adcc4cca222f\n    │ [  131.842999] winvm code-server[1478]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [  131.843425] winvm code-server[1478]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [  131.851974] winvm code-server[1478]: [12:36:17] [127.0.0.1][8711b790][ManagementConnection] New connection established.\n    │ [  132.458981] winvm code-server[1478]: [12:36:18] [127.0.0.1][a42943a4][ExtensionHostConnection] New connection established.\n    │ [  132.463787] winvm code-server[1478]: [12:36:18] [127.0.0.1][a42943a4][ExtensionHostConnection] <2518> Launched Extension Host Process.\n    │ [  132.724854] winvm code-server[1478]: [12:36:18] [127.0.0.1][a42943a4][ExtensionHostConnection] <2518> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [  139.952493] winvm systemd[1]: Reloading requested from client PID 2849 ('systemctl')...\n    │ [  139.952812] winvm systemd[1]: Reloading...\n    │ [  140.061962] winvm systemd[1]: Reloading finished in 109 ms.\n    │ [  144.600564] winvm systemd[1]: Started hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [  144.994162] winvm bash[1599]: [2026-10-19T12:36:31.132Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=pong id=a4e39143-3329-4361-b741-e8fa5007ab03\n    │ [  145.614557] winvm python3[2946]: 127.0.0.1 - - [19/Oct/2026 12:36:31] \"GET / HTTP/1.1\" 200 -\n    │ [  145.748554] winvm systemd[1]: Stopping hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1...\n    │ [  145.752175] winvm systemd[1]: hd-loopback-probe.service: Deactivated successfully.\n    │ [  145.752424] winvm systemd[1]: Stopped hd-loopback-probe.service - /usr/bin/python3 -m http.server 47996 --bind 127.0.0.1.\n    │ [  155.273877] winvm code-server[1478]: [12:36:41] [127.0.0.1][a0eff1f5][ManagementConnection] The client has disconnected, will wait for reconnection 3h before disposing...\n    │ [  155.274391] winvm code-server[1478]: [12:36:41] [127.0.0.1][8711b790][ManagementConnection] The client has disconnected gracefully, so the connection will be disposed.\n    │ [  155.497274] winvm code-server[1478]: [12:36:41] [127.0.0.1][a42943a4][ExtensionHostConnection] <2518> Extension Host Process exited with code: 0, signal: null.\n    │ [  156.106529] winvm code-server[1478]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda_bg.wasm\n    │ [  156.106785] winvm code-server[1478]: File not found: /usr/lib/code-server/lib/vscode/node_modules/vsda/rust/web/vsda.js\n    │ [  156.114451] winvm code-server[1478]: [12:36:42] [127.0.0.1][a0eff1f5][ManagementConnection] Another client has connected, will shorten the wait for reconnection 5m before disposing...\n    │ [  156.114937] winvm code-server[1478]: [12:36:42] [127.0.0.1][84a283d6][ManagementConnection] New connection established.\n    │ [  156.621410] winvm code-server[1478]: [12:36:42] [127.0.0.1][c27ab5b4][ExtensionHostConnection] New connection established.\n    │ [  156.628062] winvm code-server[1478]: [12:36:42] [127.0.0.1][c27ab5b4][ExtensionHostConnection] <3270> Launched Extension Host Process.\n    │ [  156.842092] winvm code-server[1478]: [12:36:42] [127.0.0.1][c27ab5b4][ExtensionHostConnection] <3270> [reconnection-grace-time] Extension host: read VSCODE_RECONNECTION_GRACE_TIME=10800000ms (10800s)\n    │ [  159.993676] winvm bash[1599]: [2026-10-19T12:36:46.132Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=pong id=a54415f4-6611-4e2b-b45d-350120266475\n    │ [  174.986155] winvm CRON[3698]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [  174.987035] winvm CRON[3699]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [  174.994415] winvm bash[1599]: [2026-10-19T12:37:01.133Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=pong id=d8ddc55b-1f6d-4429-88aa-dff0a0ad2efb\n    │ [  175.037512] winvm CRON[3698]: pam_unix(cron:session): session closed for user adom\n    │ [  183.303989] winvm systemd[1]: Stopping code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [  183.438545] winvm systemd[1]: code-server.service: Deactivated successfully.\n    │ [  183.438979] winvm systemd[1]: Stopped code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [  183.439058] winvm systemd[1]: code-server.service: Consumed 49.874s CPU time, 2.2G memory peak, 0B memory swap peak.\n    │ [  189.993909] winvm bash[1599]: [2026-10-19T12:37:16.132Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=pong id=2112d368-b1d4-42c6-8d45-6c8969741f5b\n    │ [  204.994119] winvm bash[1599]: [2026-10-19T12:37:31.132Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=pong id=fa0a4305-c695-4517-8925-f838bc8b6006\n    │ [  219.994433] winvm bash[1599]: [2026-10-19T12:37:46.133Z] ← 6bbf3886-d27b-4cbf-ab18-3e14c7826af4 type=pong id=9abc2af5-0627-4100-9f75-bc6fa9bc3238\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
  }
}