{
  "activate-editor": {
    "status": "done",
    "output": "Waiting for you to finish signing in to Adom. I opened it in your browser.\n  ✓ signed in after 0m: continuing.\n  ✓ 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  ✓ :8821 editor-control API live after ~6s, adom-vscode loaded",
    "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=== Ensure WSL2 subsystem is responsive (auto-recovers if wedged) ===\n  $ wsl --status\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 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\nDistro 'Adom-Workspace' not registered, importing the golden image.\n  ✓ C: has 1798.3 GB free (the workspace needs about 8 GB)\n  → fetching the pre-baked workspace image (≈585 MB)…\n  ✓ golden image already downloaded (775 MB cached, SHA256 OK), skipping the download\n  ✓ integrity already verified during the cache check (SHA256 OK)\n  → wsl --import Adom-Workspace (this can take a moment)...\n    … extracting rootfs into the workspace VHD, 12 MB written, 3s elapsed…\n    … extracting rootfs into the workspace VHD, 44 MB written, 6s elapsed…\n    … extracting rootfs into the workspace VHD, 108 MB written, 9s elapsed…\n    … extracting rootfs into the workspace VHD, 1036 MB written, 12s elapsed…\n  ✓ imported the v31-full image (775 MB SHA-verified tarball; this is FIXED every run). Workspace VHD: ~2476 MB on disk. This one VARIES run-to-run on purpose: ext4.vhdx is a live, dynamically-growing volume (ext4 overhead + WSL allocation + boot/disk activity), so it's disk usage, not a fixed image total. (13s)\n  → waiting for the distro to become exec-ready (systemd PID 1 boot)…\n  → booting the workspace (systemd PID 1), one blocking wait for boot to finish (~10-30s)…\n  ── systemd boot log ──\n    │ [   13.106831] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2\n    │ [   13.108820] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -22\n    │ [   13.109757] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -22\n    │ [   13.110297] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -22\n    │ [   13.110826] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2\n    │ [   13.484771] DESKTOP-BAR6S0F systemd-journald[31]: Collecting audit messages is disabled.\n    │ [   13.499516] DESKTOP-BAR6S0F systemd-journald[31]: Journal started\n    │ [   13.499533] DESKTOP-BAR6S0F systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 790.1M, 782.1M free.\n    │ [   13.501679] DESKTOP-BAR6S0F systemd[1]: Finished systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully.\n    │ [   13.502195] DESKTOP-BAR6S0F systemd[1]: Mounted sys-fs-fuse-connections.mount - FUSE Control File System.\n    │ [   13.502885] DESKTOP-BAR6S0F systemd[1]: Mounted sys-kernel-config.mount - Kernel Configuration File System.\n    │ [   13.511235] DESKTOP-BAR6S0F systemd[1]: Starting systemd-journal-flush.service - Flush Journal to Persistent Storage...\n    │ [   13.512522] DESKTOP-BAR6S0F systemd[1]: Starting systemd-sysusers.service - Create System Users...\n    │ [   13.513083] DESKTOP-BAR6S0F systemd[1]: Finished systemd-sysctl.service - Apply Kernel Variables.\n    │ [   13.518058] DESKTOP-BAR6S0F systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 790.1M, 782.1M free.\n    │ [   13.520183] DESKTOP-BAR6S0F systemd-journald[31]: Received client request to flush runtime journal.\n    │ [   13.520306] DESKTOP-BAR6S0F systemd[1]: Finished systemd-journal-flush.service - Flush Journal to Persistent Storage.\n    │ [   13.522366] DESKTOP-BAR6S0F systemd[1]: Finished systemd-sysusers.service - Create System Users.\n    │ [   13.523715] DESKTOP-BAR6S0F systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...\n    │ [   13.533036] DESKTOP-BAR6S0F systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.\n    │ [   13.533585] DESKTOP-BAR6S0F systemd[1]: Reached target local-fs-pre.target - Preparation for Local File Systems.\n    │ [   13.533918] DESKTOP-BAR6S0F systemd[1]: Reached target local-fs.target - Local File Systems.\n    │ [   13.536634] DESKTOP-BAR6S0F systemd[1]: Listening on systemd-sysext.socket - System Extension Image Management (Varlink).\n    │ [   13.536950] DESKTOP-BAR6S0F systemd[1]: Reached target sockets.target - Socket Units.\n    │ [   13.538020] DESKTOP-BAR6S0F systemd[1]: Starting ldconfig.service - Rebuild Dynamic Linker Cache...\n    │ [   13.539604] DESKTOP-BAR6S0F systemd[1]: Starting systemd-binfmt.service - Set Up Additional Binary Formats...\n    │ [   13.541179] DESKTOP-BAR6S0F systemd[1]: Starting systemd-tmpfiles-setup.service - Create Volatile Files and Directories...\n    │ [   13.545367] DESKTOP-BAR6S0F systemd-binfmt[74]: Failed to flush binfmt_misc rules, ignoring: Read-only file system\n    │ [   13.546659] DESKTOP-BAR6S0F systemd[1]: systemd-binfmt.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   13.546737] DESKTOP-BAR6S0F systemd[1]: systemd-binfmt.service: Failed with result 'exit-code'.\n    │ [   13.546863] DESKTOP-BAR6S0F systemd[1]: Failed to start systemd-binfmt.service - Set Up Additional Binary Formats.\n    │ [   13.552855] DESKTOP-BAR6S0F systemd[1]: Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories.\n    │ [   13.553370] DESKTOP-BAR6S0F systemd[1]: systemd-firstboot.service - First Boot Wizard was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   13.553453] DESKTOP-BAR6S0F systemd[1]: first-boot-complete.target - First Boot Complete was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   13.554160] DESKTOP-BAR6S0F systemd[1]: Starting systemd-journal-catalog-update.service - Rebuild Journal Catalog...\n    │ [   13.554391] DESKTOP-BAR6S0F systemd[1]: systemd-machine-id-commit.service - Commit a transient machine-id on disk was skipped because of an unmet condition check (ConditionPathIsMountPoint=/etc/machine-id).\n    │ [   13.554928] DESKTOP-BAR6S0F systemd[1]: Starting systemd-update-utmp.service - Record System Boot/Shutdown in UTMP...\n    │ [   13.555167] DESKTOP-BAR6S0F systemd[1]: wslg.service - WSLg Remount Service was skipped because of an unmet condition check (ConditionPathExists=!/tmp/.X11-unix/X0).\n    │ [   13.562330] DESKTOP-BAR6S0F systemd[1]: Finished systemd-update-utmp.service - Record System Boot/Shutdown in UTMP.\n    │ [   13.568965] DESKTOP-BAR6S0F systemd[1]: Finished ldconfig.service - Rebuild Dynamic Linker Cache.\n    │ [   13.570669] DESKTOP-BAR6S0F systemd[1]: Finished systemd-journal-catalog-update.service - Rebuild Journal Catalog.\n    │ [   13.571683] DESKTOP-BAR6S0F systemd[1]: Starting systemd-update-done.service - Update is Completed...\n    │ [   13.578126] DESKTOP-BAR6S0F systemd[1]: Finished systemd-update-done.service - Update is Completed.\n    │ [   13.578698] DESKTOP-BAR6S0F systemd[1]: Reached target sysinit.target - System Initialization.\n    │ [   13.579248] DESKTOP-BAR6S0F systemd[1]: Started apt-daily.timer - Daily apt download activities.\n    │ [   13.579532] DESKTOP-BAR6S0F systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.\n    │ [   13.579737] DESKTOP-BAR6S0F systemd[1]: Started dpkg-db-backup.timer - Daily dpkg database backup timer.\n    │ [   13.580037] DESKTOP-BAR6S0F systemd[1]: Started e2scrub_all.timer - Periodic ext4 Online Metadata Check for All Filesystems.\n    │ [   13.580450] DESKTOP-BAR6S0F systemd[1]: fstrim.timer - Discard unused filesystem blocks once a week was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   13.580494] DESKTOP-BAR6S0F systemd[1]: Started motd-news.timer - Message of the Day.\n    │ [   13.580745] DESKTOP-BAR6S0F systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.\n    │ [   13.580954] DESKTOP-BAR6S0F systemd[1]: Reached target timers.target - Timer Units.\n    │ [   13.581151] DESKTOP-BAR6S0F systemd[1]: systemd-pcrphase-sysinit.service - TPM2 PCR Barrier (Initialization) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   13.581184] DESKTOP-BAR6S0F systemd[1]: Reached target basic.target - Basic System.\n    │ [   13.582098] DESKTOP-BAR6S0F systemd[1]: Starting adom-distro-id.service - Generate the per-import Adom distro identity marker...\n    │ [   13.583443] DESKTOP-BAR6S0F systemd[1]: Started cron.service - Regular background program processing daemon.\n    │ [   13.585018] DESKTOP-BAR6S0F systemd[1]: Starting e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots...\n    │ [   13.585795] DESKTOP-BAR6S0F systemd[1]: Starting getty-static.service - getty on tty2-tty6 if dbus and logind are not available...\n    │ [   13.585852] DESKTOP-BAR6S0F (cron)[87]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS\n    │ [   13.586255] DESKTOP-BAR6S0F systemd[1]: systemd-logind.service - User Login Management was skipped because no trigger condition checks were met.\n    │ [   13.586315] DESKTOP-BAR6S0F systemd[1]: systemd-pcrphase.service - TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   13.587170] DESKTOP-BAR6S0F cron[87]: (CRON) INFO (pidfile fd = 3)\n    │ [   13.587248] DESKTOP-BAR6S0F systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...\n    │ [   13.588548] DESKTOP-BAR6S0F systemd[1]: Starting wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard...\n    │ [   13.588608] DESKTOP-BAR6S0F cron[87]: (CRON) INFO (Running @reboot jobs)\n    │ [   13.589060] DESKTOP-BAR6S0F systemd[1]: adom-distro-id.service: Deactivated successfully.\n    │ [   13.589166] DESKTOP-BAR6S0F systemd[1]: Finished adom-distro-id.service - Generate the per-import Adom distro identity marker.\n    │ [   13.592360] DESKTOP-BAR6S0F systemd[1]: Starting adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to...\n    │ [   13.593398] DESKTOP-BAR6S0F systemd[1]: Starting adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820)...\n    │ [   13.595155] DESKTOP-BAR6S0F CRON[95]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   13.595297] DESKTOP-BAR6S0F CRON[94]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   13.595360] DESKTOP-BAR6S0F systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   13.595991] DESKTOP-BAR6S0F CRON[100]: (adom) CMD (sleep 600; bash /home/adom/.adom/hooks/adom-core-update.sh >/dev/null 2>&1)\n    │ [   13.596157] DESKTOP-BAR6S0F CRON[101]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   13.596220] DESKTOP-BAR6S0F systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.\n    │ [   13.596719] DESKTOP-BAR6S0F systemd[1]: Finished wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard.\n    │ [   13.597006] DESKTOP-BAR6S0F systemd[1]: Started adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820).\n    │ [   13.599451] DESKTOP-BAR6S0F systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to.\n    │ [   13.600152] DESKTOP-BAR6S0F systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   13.601374] DESKTOP-BAR6S0F systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [   13.601460] DESKTOP-BAR6S0F systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    In a container that means: when the session that launched it is torn down,\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    falls into an endless \"Reconnecting in 30s\" loop until someone restarts it.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │        adom-bridge serve --supervise\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    That detaches the relay from your session (reparented to init) and starts a\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    desktops (with the reason) whenever it has to. Stop later with:\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │        adom-bridge serve --stop\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: └────────────────────────────────────────────────────────────────────────────\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ The token is a well-known literal published in the adom-bridge docs, so\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ connected to it. If a connected desktop controls real hardware, treat\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ this as an open door.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ Rotate (both sides must match):\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │              (Connections panel, or server_add with authToken)\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [   13.604495] DESKTOP-BAR6S0F adom-bridge[97]: └────────────────────────────────────────────────────────────────────────────\n    │ [   13.605887] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty1.\n    │ [   13.607138] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty2.\n    │ [   13.609106] DESKTOP-BAR6S0F bash[98]: OK: Recovered 0 channel(s) from disk\n    │ [   13.609106] DESKTOP-BAR6S0F bash[98]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\n    │ [   13.609560] DESKTOP-BAR6S0F bash[98]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\n    │ [   13.609607] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty3.\n    │ [   13.609868] DESKTOP-BAR6S0F bash[98]: OK: Listening on 0.0.0.0:8820\n    │ [   13.613807] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty4.\n    │ [   13.617670] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty5.\n    │ [   13.621752] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty6.\n    │ [   13.623487] DESKTOP-BAR6S0F systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [   13.624966] DESKTOP-BAR6S0F systemd[1]: Reached target getty.target - Login Prompts.\n    │ [   13.625608] DESKTOP-BAR6S0F systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [   13.627612] DESKTOP-BAR6S0F systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [   13.639371] DESKTOP-BAR6S0F systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [   13.639618] DESKTOP-BAR6S0F systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [   13.640753] DESKTOP-BAR6S0F systemd[1]: Startup finished in 372ms.\n    │ [   13.697339] DESKTOP-BAR6S0F CRON[94]: pam_unix(cron:session): session closed for user adom\n    │ [   13.830126] DESKTOP-BAR6S0F login[190]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   14.010834] DESKTOP-BAR6S0F adom-bridge[97]: Adom relay server started\n    │ [   14.010834] DESKTOP-BAR6S0F adom-bridge[97]:   WebSocket: ws://0.0.0.0:8765\n    │ [   14.010834] DESKTOP-BAR6S0F adom-bridge[97]:   HTTP API:  http://127.0.0.1:8766\n    │ [   14.085148] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.797Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   14.085346] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.803Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   14.097281] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info  HTTP server listening on http://0.0.0.0:7380/\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info    - Authentication is disabled\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info    - Not serving HTTPS\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [   20.952904] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] WS connected: 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 from 127.0.0.1:52082\n    │ [   20.953222] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] WS connected: 6bd3160f-0291-438a-b763-4365efdea16e from 127.0.0.1:52083\n    │ [   20.953362] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] ← 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 type=auth id=318eb90b-0366-44bc-a3b5-31a20d4ee592\n    │ [   20.953404] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] Auth OK: 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 (Adom Bridge)\n    │ [   20.953490] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] ← 6bd3160f-0291-438a-b763-4365efdea16e type=auth id=3dc51989-908c-4e14-aba0-bb8a1fd4c0ae\n    │ [   20.953490] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] Closing stale connection 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 (same machine identity)\n    │ [   20.953490] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] Auth OK: 6bd3160f-0291-438a-b763-4365efdea16e (Adom Bridge)\n    │ [   24.034521] DESKTOP-BAR6S0F unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2840: Timed out waiting for user session for uid=1001\n    │ [   24.111920] DESKTOP-BAR6S0F login[330]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   24.112749] DESKTOP-BAR6S0F login[342]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   29.007385] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:27.726Z] ← 6bd3160f-0291-438a-b763-4365efdea16e type=pong id=ce90bbf5-84a6-47ea-b4a9-f3d7af1ed0fa\n    │ [   34.356054] DESKTOP-BAR6S0F unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2840: Timed out waiting for user session for uid=0\n  ── end boot log ──\n  ✓ workspace booted: systemd is 'Failed to start the systemd user session for 'root'. See journalctl for more details. | degraded' after 10s (a degraded per-user session is normal for v9)\n  ✓ distro imported\n  ✓ pinned default user → adom (DefaultUid=1001)\n  ✓ verified default user is uid=1001(adom)\n  → booting the workspace (systemd PID 1), one blocking wait for boot to finish (~10-30s)…\n  ── systemd boot log ──\n    │ [   13.106831] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2\n    │ [   13.108820] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -22\n    │ [   13.109757] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -22\n    │ [   13.110297] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -22\n    │ [   13.110826] DESKTOP-BAR6S0F kernel: misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2\n    │ [   13.484771] DESKTOP-BAR6S0F systemd-journald[31]: Collecting audit messages is disabled.\n    │ [   13.499516] DESKTOP-BAR6S0F systemd-journald[31]: Journal started\n    │ [   13.499533] DESKTOP-BAR6S0F systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 790.1M, 782.1M free.\n    │ [   13.501679] DESKTOP-BAR6S0F systemd[1]: Finished systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully.\n    │ [   13.502195] DESKTOP-BAR6S0F systemd[1]: Mounted sys-fs-fuse-connections.mount - FUSE Control File System.\n    │ [   13.502885] DESKTOP-BAR6S0F systemd[1]: Mounted sys-kernel-config.mount - Kernel Configuration File System.\n    │ [   13.511235] DESKTOP-BAR6S0F systemd[1]: Starting systemd-journal-flush.service - Flush Journal to Persistent Storage...\n    │ [   13.512522] DESKTOP-BAR6S0F systemd[1]: Starting systemd-sysusers.service - Create System Users...\n    │ [   13.513083] DESKTOP-BAR6S0F systemd[1]: Finished systemd-sysctl.service - Apply Kernel Variables.\n    │ [   13.518058] DESKTOP-BAR6S0F systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 790.1M, 782.1M free.\n    │ [   13.520183] DESKTOP-BAR6S0F systemd-journald[31]: Received client request to flush runtime journal.\n    │ [   13.520306] DESKTOP-BAR6S0F systemd[1]: Finished systemd-journal-flush.service - Flush Journal to Persistent Storage.\n    │ [   13.522366] DESKTOP-BAR6S0F systemd[1]: Finished systemd-sysusers.service - Create System Users.\n    │ [   13.523715] DESKTOP-BAR6S0F systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...\n    │ [   13.533036] DESKTOP-BAR6S0F systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.\n    │ [   13.533585] DESKTOP-BAR6S0F systemd[1]: Reached target local-fs-pre.target - Preparation for Local File Systems.\n    │ [   13.533918] DESKTOP-BAR6S0F systemd[1]: Reached target local-fs.target - Local File Systems.\n    │ [   13.536634] DESKTOP-BAR6S0F systemd[1]: Listening on systemd-sysext.socket - System Extension Image Management (Varlink).\n    │ [   13.536950] DESKTOP-BAR6S0F systemd[1]: Reached target sockets.target - Socket Units.\n    │ [   13.538020] DESKTOP-BAR6S0F systemd[1]: Starting ldconfig.service - Rebuild Dynamic Linker Cache...\n    │ [   13.539604] DESKTOP-BAR6S0F systemd[1]: Starting systemd-binfmt.service - Set Up Additional Binary Formats...\n    │ [   13.541179] DESKTOP-BAR6S0F systemd[1]: Starting systemd-tmpfiles-setup.service - Create Volatile Files and Directories...\n    │ [   13.545367] DESKTOP-BAR6S0F systemd-binfmt[74]: Failed to flush binfmt_misc rules, ignoring: Read-only file system\n    │ [   13.546659] DESKTOP-BAR6S0F systemd[1]: systemd-binfmt.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   13.546737] DESKTOP-BAR6S0F systemd[1]: systemd-binfmt.service: Failed with result 'exit-code'.\n    │ [   13.546863] DESKTOP-BAR6S0F systemd[1]: Failed to start systemd-binfmt.service - Set Up Additional Binary Formats.\n    │ [   13.552855] DESKTOP-BAR6S0F systemd[1]: Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories.\n    │ [   13.553370] DESKTOP-BAR6S0F systemd[1]: systemd-firstboot.service - First Boot Wizard was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   13.553453] DESKTOP-BAR6S0F systemd[1]: first-boot-complete.target - First Boot Complete was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   13.554160] DESKTOP-BAR6S0F systemd[1]: Starting systemd-journal-catalog-update.service - Rebuild Journal Catalog...\n    │ [   13.554391] DESKTOP-BAR6S0F systemd[1]: systemd-machine-id-commit.service - Commit a transient machine-id on disk was skipped because of an unmet condition check (ConditionPathIsMountPoint=/etc/machine-id).\n    │ [   13.554928] DESKTOP-BAR6S0F systemd[1]: Starting systemd-update-utmp.service - Record System Boot/Shutdown in UTMP...\n    │ [   13.555167] DESKTOP-BAR6S0F systemd[1]: wslg.service - WSLg Remount Service was skipped because of an unmet condition check (ConditionPathExists=!/tmp/.X11-unix/X0).\n    │ [   13.562330] DESKTOP-BAR6S0F systemd[1]: Finished systemd-update-utmp.service - Record System Boot/Shutdown in UTMP.\n    │ [   13.568965] DESKTOP-BAR6S0F systemd[1]: Finished ldconfig.service - Rebuild Dynamic Linker Cache.\n    │ [   13.570669] DESKTOP-BAR6S0F systemd[1]: Finished systemd-journal-catalog-update.service - Rebuild Journal Catalog.\n    │ [   13.571683] DESKTOP-BAR6S0F systemd[1]: Starting systemd-update-done.service - Update is Completed...\n    │ [   13.578126] DESKTOP-BAR6S0F systemd[1]: Finished systemd-update-done.service - Update is Completed.\n    │ [   13.578698] DESKTOP-BAR6S0F systemd[1]: Reached target sysinit.target - System Initialization.\n    │ [   13.579248] DESKTOP-BAR6S0F systemd[1]: Started apt-daily.timer - Daily apt download activities.\n    │ [   13.579532] DESKTOP-BAR6S0F systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.\n    │ [   13.579737] DESKTOP-BAR6S0F systemd[1]: Started dpkg-db-backup.timer - Daily dpkg database backup timer.\n    │ [   13.580037] DESKTOP-BAR6S0F systemd[1]: Started e2scrub_all.timer - Periodic ext4 Online Metadata Check for All Filesystems.\n    │ [   13.580450] DESKTOP-BAR6S0F systemd[1]: fstrim.timer - Discard unused filesystem blocks once a week was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   13.580494] DESKTOP-BAR6S0F systemd[1]: Started motd-news.timer - Message of the Day.\n    │ [   13.580745] DESKTOP-BAR6S0F systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.\n    │ [   13.580954] DESKTOP-BAR6S0F systemd[1]: Reached target timers.target - Timer Units.\n    │ [   13.581151] DESKTOP-BAR6S0F systemd[1]: systemd-pcrphase-sysinit.service - TPM2 PCR Barrier (Initialization) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   13.581184] DESKTOP-BAR6S0F systemd[1]: Reached target basic.target - Basic System.\n    │ [   13.582098] DESKTOP-BAR6S0F systemd[1]: Starting adom-distro-id.service - Generate the per-import Adom distro identity marker...\n    │ [   13.583443] DESKTOP-BAR6S0F systemd[1]: Started cron.service - Regular background program processing daemon.\n    │ [   13.585018] DESKTOP-BAR6S0F systemd[1]: Starting e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots...\n    │ [   13.585795] DESKTOP-BAR6S0F systemd[1]: Starting getty-static.service - getty on tty2-tty6 if dbus and logind are not available...\n    │ [   13.585852] DESKTOP-BAR6S0F (cron)[87]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS\n    │ [   13.586255] DESKTOP-BAR6S0F systemd[1]: systemd-logind.service - User Login Management was skipped because no trigger condition checks were met.\n    │ [   13.586315] DESKTOP-BAR6S0F systemd[1]: systemd-pcrphase.service - TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   13.587170] DESKTOP-BAR6S0F cron[87]: (CRON) INFO (pidfile fd = 3)\n    │ [   13.587248] DESKTOP-BAR6S0F systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...\n    │ [   13.588548] DESKTOP-BAR6S0F systemd[1]: Starting wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard...\n    │ [   13.588608] DESKTOP-BAR6S0F cron[87]: (CRON) INFO (Running @reboot jobs)\n    │ [   13.589060] DESKTOP-BAR6S0F systemd[1]: adom-distro-id.service: Deactivated successfully.\n    │ [   13.589166] DESKTOP-BAR6S0F systemd[1]: Finished adom-distro-id.service - Generate the per-import Adom distro identity marker.\n    │ [   13.592360] DESKTOP-BAR6S0F systemd[1]: Starting adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to...\n    │ [   13.593398] DESKTOP-BAR6S0F systemd[1]: Starting adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820)...\n    │ [   13.595155] DESKTOP-BAR6S0F CRON[95]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   13.595297] DESKTOP-BAR6S0F CRON[94]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   13.595360] DESKTOP-BAR6S0F systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   13.595991] DESKTOP-BAR6S0F CRON[100]: (adom) CMD (sleep 600; bash /home/adom/.adom/hooks/adom-core-update.sh >/dev/null 2>&1)\n    │ [   13.596157] DESKTOP-BAR6S0F CRON[101]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   13.596220] DESKTOP-BAR6S0F systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.\n    │ [   13.596719] DESKTOP-BAR6S0F systemd[1]: Finished wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard.\n    │ [   13.597006] DESKTOP-BAR6S0F systemd[1]: Started adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820).\n    │ [   13.599451] DESKTOP-BAR6S0F systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to.\n    │ [   13.600152] DESKTOP-BAR6S0F systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   13.601374] DESKTOP-BAR6S0F systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [   13.601460] DESKTOP-BAR6S0F systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    In a container that means: when the session that launched it is torn down,\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    falls into an endless \"Reconnecting in 30s\" loop until someone restarts it.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │        adom-bridge serve --supervise\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    That detaches the relay from your session (reparented to init) and starts a\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    desktops (with the reason) whenever it has to. Stop later with:\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │        adom-bridge serve --stop\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: └────────────────────────────────────────────────────────────────────────────\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ The token is a well-known literal published in the adom-bridge docs, so\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ connected to it. If a connected desktop controls real hardware, treat\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ this as an open door.\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ Rotate (both sides must match):\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │              (Connections panel, or server_add with authToken)\n    │ [   13.603716] DESKTOP-BAR6S0F adom-bridge[97]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [   13.604495] DESKTOP-BAR6S0F adom-bridge[97]: └────────────────────────────────────────────────────────────────────────────\n    │ [   13.605887] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty1.\n    │ [   13.607138] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty2.\n    │ [   13.609106] DESKTOP-BAR6S0F bash[98]: OK: Recovered 0 channel(s) from disk\n    │ [   13.609106] DESKTOP-BAR6S0F bash[98]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\n    │ [   13.609560] DESKTOP-BAR6S0F bash[98]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\n    │ [   13.609607] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty3.\n    │ [   13.609868] DESKTOP-BAR6S0F bash[98]: OK: Listening on 0.0.0.0:8820\n    │ [   13.613807] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty4.\n    │ [   13.617670] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty5.\n    │ [   13.621752] DESKTOP-BAR6S0F systemd[1]: Started [redacted] - Getty on tty6.\n    │ [   13.623487] DESKTOP-BAR6S0F systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [   13.624966] DESKTOP-BAR6S0F systemd[1]: Reached target getty.target - Login Prompts.\n    │ [   13.625608] DESKTOP-BAR6S0F systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [   13.627612] DESKTOP-BAR6S0F systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [   13.639371] DESKTOP-BAR6S0F systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [   13.639618] DESKTOP-BAR6S0F systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [   13.640753] DESKTOP-BAR6S0F systemd[1]: Startup finished in 372ms.\n    │ [   13.697339] DESKTOP-BAR6S0F CRON[94]: pam_unix(cron:session): session closed for user adom\n    │ [   13.830126] DESKTOP-BAR6S0F login[190]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   14.010834] DESKTOP-BAR6S0F adom-bridge[97]: Adom relay server started\n    │ [   14.010834] DESKTOP-BAR6S0F adom-bridge[97]:   WebSocket: ws://0.0.0.0:8765\n    │ [   14.010834] DESKTOP-BAR6S0F adom-bridge[97]:   HTTP API:  http://127.0.0.1:8766\n    │ [   14.085148] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.797Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   14.085346] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.803Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   14.097281] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info  HTTP server listening on http://0.0.0.0:7380/\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info    - Authentication is disabled\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info    - Not serving HTTPS\n    │ [   14.097344] DESKTOP-BAR6S0F code-server[99]: [2026-10-08T15:25:12.816Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [   20.952904] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] WS connected: 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 from 127.0.0.1:52082\n    │ [   20.953222] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] WS connected: 6bd3160f-0291-438a-b763-4365efdea16e from 127.0.0.1:52083\n    │ [   20.953362] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] ← 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 type=auth id=318eb90b-0366-44bc-a3b5-31a20d4ee592\n    │ [   20.953404] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] Auth OK: 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 (Adom Bridge)\n    │ [   20.953490] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] ← 6bd3160f-0291-438a-b763-4365efdea16e type=auth id=3dc51989-908c-4e14-aba0-bb8a1fd4c0ae\n    │ [   20.953490] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] Closing stale connection 6459a8d1-bec8-4ed0-8fa5-8b5f3245ac69 (same machine identity)\n    │ [   20.953490] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:19.672Z] Auth OK: 6bd3160f-0291-438a-b763-4365efdea16e (Adom Bridge)\n    │ [   24.034521] DESKTOP-BAR6S0F unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2840: Timed out waiting for user session for uid=1001\n    │ [   24.111920] DESKTOP-BAR6S0F login[330]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   24.112749] DESKTOP-BAR6S0F login[342]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   29.007385] DESKTOP-BAR6S0F adom-bridge[97]: [2026-10-08T15:25:27.726Z] ← 6bd3160f-0291-438a-b763-4365efdea16e type=pong id=ce90bbf5-84a6-47ea-b4a9-f3d7af1ed0fa\n    │ [   34.356054] DESKTOP-BAR6S0F unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2840: Timed out waiting for user session for uid=0\n  ── end boot log ──\n  ✓ workspace booted: systemd is 'degraded' 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  … probing host 127.0.0.1:7380 (TCP)…\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
  },
  "open-welcome": {
    "status": "done",
    "output": "Opening welcome.html and verifying the 'Welcome' tab actually appears (hard gate).\n    open-welcome via POST /demo/run (try 1/5) → HTTP 200 {\"_hints\":{\"note\":\"Demo toolbar actions, each backed by /eval-in. actions: hide-activitybar, highlight-open, highlight-input, highlight-submit, type, submit.\",\"related\":[\"/eval-in\"\n  ✓ VERIFIED: the 'Welcome' tab is open in the workspace.\n  ✓ re-applied the clean editor layout (any pane reload during setup resets it)\n  ✓ clean landing: merged editor groups into one (single-pane workspace).",
    "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 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-setup": {
    "status": "done",
    "output": "Final end-to-end verification: re-checking every real artifact (independent of what each step reported)...\n  ✓ distro-exec+golden: execs=true golden='v31-full' (current from v27; pin v31-full)\n  ✓ code-server: http :7380\n  ✓ :8821-editor-api: extension control API\n  ✓ adom-cli-carbon: {\n  \"approved_at\": \"2025-12-16T20:04:34Z\",\n  \"approved_by\": \"6737f0174\n  ✓ claude-cli: 2.1.278 (Claude Code)\n  ✓ workspace-env: 4/4 exports in ~/.bashrc\n  ✓ relay: adom-bridge-cli relay :8766\n  ✓ workbench-seed: trusted-domains + activity-bar seed (baked)\n  ✓ bypass-row: claudeCode.allowDangerouslySkipPermissions true (bootstrap-owned)\n  ✓ workspace-synced: {\n  \"_rev\": 3,\n  \"focusedPanelId\": \"desk\n  ✓ ALL artifacts verified, setup is genuinely complete.",
    "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
  }
}