{
  "activate-editor": {
    "status": "done",
    "output": "Waiting for you to finish signing in to Adom. I opened it in your browser.\n  … still waiting for sign-in (1m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (2m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (3m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (4m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (5m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (6m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (7m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (8m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (9m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (10m), finish the Approve step in your browser and I'll continue automatically.\n  … still waiting for sign-in (11m), finish the Approve step in your browser and I'll continue automatically.\n  ✓ signed in after 11m: 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 ~2s, 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 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  ✓ registered distro is a healthy golden v31-full (missing only HD's version file), stamping + keeping\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    │ [   11.881254] arav-rog kernel: EXT4-fs (sdd): mounted filesystem 3a96e795-65b1-4594-82b2-17646e3ef749 r/w with ordered data mode. Quota mode: none.\n    │ [   12.295948] arav-rog systemd-journald[30]: Collecting audit messages is disabled.\n    │ [   12.302406] arav-rog systemd-journald[30]: Journal started\n    │ [   12.302419] arav-rog systemd-journald[30]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 790.0M, 782.0M free.\n    │ [   12.303751] arav-rog systemd[1]: Finished systemd-modules-load.service - Load Kernel Modules.\n    │ [   12.304244] arav-rog systemd[1]: Finished systemd-remount-fs.service - Remount Root and Kernel File Systems.\n    │ [   12.305739] arav-rog systemd[1]: Finished systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully.\n    │ [   12.308917] arav-rog systemd[1]: Mounting sys-fs-fuse-connections.mount - FUSE Control File System...\n    │ [   12.309931] arav-rog systemd[1]: Mounting sys-kernel-config.mount - Kernel Configuration File System...\n    │ [   12.311441] arav-rog systemd[1]: Starting systemd-journal-flush.service - Flush Journal to Persistent Storage...\n    │ [   12.311902] arav-rog systemd[1]: systemd-pstore.service - Platform Persistent Storage Archival was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   12.311933] arav-rog systemd[1]: systemd-random-seed.service - Load/Save OS Random Seed was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   12.311946] arav-rog systemd[1]: systemd-repart.service - Repartition Root Disk was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   12.312459] arav-rog systemd[1]: Starting systemd-sysctl.service - Apply Kernel Variables...\n    │ [   12.313338] arav-rog systemd[1]: Starting systemd-sysusers.service - Create System Users...\n    │ [   12.313749] arav-rog systemd[1]: systemd-tpm2-setup.service - TPM2 SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   12.314319] arav-rog systemd[1]: Mounted sys-fs-fuse-connections.mount - FUSE Control File System.\n    │ [   12.315110] arav-rog systemd[1]: Mounted sys-kernel-config.mount - Kernel Configuration File System.\n    │ [   12.315959] arav-rog systemd-journald[30]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 790.0M, 782.0M free.\n    │ [   12.317613] arav-rog systemd[1]: Finished systemd-journal-flush.service - Flush Journal to Persistent Storage.\n    │ [   12.318316] arav-rog systemd-journald[30]: Received client request to flush runtime journal.\n    │ [   12.320729] arav-rog systemd[1]: Finished systemd-sysusers.service - Create System Users.\n    │ [   12.323097] arav-rog systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...\n    │ [   12.341575] arav-rog systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.\n    │ [   12.342080] arav-rog systemd[1]: Reached target local-fs-pre.target - Preparation for Local File Systems.\n    │ [   12.342329] arav-rog systemd[1]: Reached target local-fs.target - Local File Systems.\n    │ [   12.344308] arav-rog systemd[1]: Listening on systemd-sysext.socket - System Extension Image Management (Varlink).\n    │ [   12.344801] arav-rog systemd[1]: Reached target sockets.target - Socket Units.\n    │ [   12.350020] arav-rog systemd[1]: Starting ldconfig.service - Rebuild Dynamic Linker Cache...\n    │ [   12.355633] arav-rog systemd[1]: Starting systemd-binfmt.service - Set Up Additional Binary Formats...\n    │ [   12.359579] arav-rog systemd[1]: Starting systemd-tmpfiles-setup.service - Create Volatile Files and Directories...\n    │ [   12.377870] arav-rog sh[75]: /bin/sh: 1: cannot create /proc/sys/fs/binfmt_misc/WSLInterop: Permission denied\n    │ [   12.390019] arav-rog systemd[1]: Finished systemd-sysctl.service - Apply Kernel Variables.\n    │ [   12.390753] arav-rog systemd[1]: Finished systemd-binfmt.service - Set Up Additional Binary Formats.\n    │ [   12.400217] arav-rog systemd[1]: Finished ldconfig.service - Rebuild Dynamic Linker Cache.\n    │ [   12.426834] arav-rog systemd[1]: Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories.\n    │ [   12.427922] arav-rog systemd[1]: systemd-firstboot.service - First Boot Wizard was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   12.427989] arav-rog systemd[1]: first-boot-complete.target - First Boot Complete was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   12.431984] arav-rog systemd[1]: Starting systemd-journal-catalog-update.service - Rebuild Journal Catalog...\n    │ [   12.432651] arav-rog 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    │ [   12.433448] arav-rog systemd[1]: Starting systemd-update-utmp.service - Record System Boot/Shutdown in UTMP...\n    │ [   12.441698] arav-rog systemd[1]: Finished systemd-update-utmp.service - Record System Boot/Shutdown in UTMP.\n    │ [   12.460929] arav-rog systemd[1]: Finished systemd-journal-catalog-update.service - Rebuild Journal Catalog.\n    │ [   12.462552] arav-rog systemd[1]: Starting systemd-update-done.service - Update is Completed...\n    │ [   12.468112] arav-rog systemd[1]: Finished systemd-update-done.service - Update is Completed.\n    │ [   12.468947] arav-rog systemd[1]: Reached target sysinit.target - System Initialization.\n    │ [   12.469699] arav-rog systemd[1]: Started apt-daily.timer - Daily apt download activities.\n    │ [   12.470060] arav-rog systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.\n    │ [   12.470443] arav-rog systemd[1]: Started dpkg-db-backup.timer - Daily dpkg database backup timer.\n    │ [   12.470782] arav-rog systemd[1]: Started e2scrub_all.timer - Periodic ext4 Online Metadata Check for All Filesystems.\n    │ [   12.471100] arav-rog systemd[1]: fstrim.timer - Discard unused filesystem blocks once a week was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   12.471150] arav-rog systemd[1]: Started motd-news.timer - Message of the Day.\n    │ [   12.471439] arav-rog systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.\n    │ [   12.471738] arav-rog systemd[1]: Reached target timers.target - Timer Units.\n    │ [   12.472180] arav-rog systemd[1]: systemd-pcrphase-sysinit.service - TPM2 PCR Barrier (Initialization) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   12.472231] arav-rog systemd[1]: Reached target basic.target - Basic System.\n    │ [   12.473372] arav-rog systemd[1]: Starting adom-distro-id.service - Generate the per-import Adom distro identity marker...\n    │ [   12.474865] arav-rog systemd[1]: Started cron.service - Regular background program processing daemon.\n    │ [   12.476462] arav-rog systemd[1]: Starting e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots...\n    │ [   12.477099] arav-rog (cron)[90]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS\n    │ [   12.477516] arav-rog systemd[1]: Starting getty-static.service - getty on tty2-tty6 if dbus and logind are not available...\n    │ [   12.478185] arav-rog systemd[1]: systemd-logind.service - User Login Management was skipped because no trigger condition checks were met.\n    │ [   12.478381] arav-rog systemd[1]: systemd-pcrphase.service - TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   12.478439] arav-rog cron[90]: (CRON) INFO (pidfile fd = 3)\n    │ [   12.479087] arav-rog systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...\n    │ [   12.479849] arav-rog cron[90]: (CRON) INFO (Running @reboot jobs)\n    │ [   12.480427] arav-rog systemd[1]: adom-distro-id.service: Deactivated successfully.\n    │ [   12.480534] arav-rog systemd[1]: Finished adom-distro-id.service - Generate the per-import Adom distro identity marker.\n    │ [   12.482861] arav-rog systemd[1]: Starting adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to...\n    │ [   12.483994] arav-rog systemd[1]: Starting adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820)...\n    │ [   12.485103] arav-rog systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   12.486367] arav-rog systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.\n    │ [   12.487015] arav-rog CRON[97]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.487287] arav-rog CRON[96]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.487925] arav-rog CRON[102]: (adom) CMD (sleep 600; bash /home/adom/.adom/hooks/adom-core-update.sh >/dev/null 2>&1)\n    │ [   12.488059] arav-rog CRON[103]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   12.488114] arav-rog systemd[1]: Started adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820).\n    │ [   12.488915] arav-rog systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to.\n    │ [   12.491220] arav-rog systemd[1]: Started [redacted] - Getty on tty1.\n    │ [   12.492165] arav-rog systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [   12.492285] arav-rog systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [   12.493821] arav-rog adom-bridge[99]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\n    │ [   12.493821] arav-rog adom-bridge[99]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\n    │ [   12.493821] arav-rog adom-bridge[99]: │    In a container that means: when the session that launched it is torn down,\n    │ [   12.493821] arav-rog adom-bridge[99]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\n    │ [   12.493821] arav-rog adom-bridge[99]: │    falls into an endless \"Reconnecting in 30s\" loop until someone restarts it.\n    │ [   12.493821] arav-rog adom-bridge[99]: │\n    │ [   12.493821] arav-rog adom-bridge[99]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\n    │ [   12.493821] arav-rog adom-bridge[99]: │        adom-bridge serve --supervise\n    │ [   12.493821] arav-rog adom-bridge[99]: │    That detaches the relay from your session (reparented to init) and starts a\n    │ [   12.493821] arav-rog adom-bridge[99]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\n    │ [   12.493821] arav-rog adom-bridge[99]: │    desktops (with the reason) whenever it has to. Stop later with:\n    │ [   12.493821] arav-rog adom-bridge[99]: │        adom-bridge serve --stop\n    │ [   12.493821] arav-rog adom-bridge[99]: │\n    │ [   12.493821] arav-rog adom-bridge[99]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\n    │ [   12.493821] arav-rog adom-bridge[99]: └────────────────────────────────────────────────────────────────────────────\n    │ [   12.493821] arav-rog adom-bridge[99]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\n    │ [   12.493821] arav-rog adom-bridge[99]: │ The token is a well-known literal published in the adom-bridge docs, so\n    │ [   12.493821] arav-rog adom-bridge[99]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\n    │ [   12.493821] arav-rog adom-bridge[99]: │ connected to it. If a connected desktop controls real hardware, treat\n    │ [   12.493821] arav-rog adom-bridge[99]: │ this as an open door.\n    │ [   12.493821] arav-rog adom-bridge[99]: │\n    │ [   12.493821] arav-rog adom-bridge[99]: │ Rotate (both sides must match):\n    │ [   12.493821] arav-rog adom-bridge[99]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [   12.493821] arav-rog adom-bridge[99]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [   12.493821] arav-rog adom-bridge[99]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [   12.493821] arav-rog adom-bridge[99]: │              (Connections panel, or server_add with authToken)\n    │ [   12.493821] arav-rog adom-bridge[99]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [   12.494413] arav-rog adom-bridge[99]: └────────────────────────────────────────────────────────────────────────────\n    │ [   12.494816] arav-rog systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   12.498253] arav-rog systemd[1]: Started [redacted] - Getty on tty2.\n    │ [   12.500603] arav-rog bash[100]: OK: Recovered 0 channel(s) from disk\n    │ [   12.500603] arav-rog bash[100]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\n    │ [   12.501009] arav-rog systemd[1]: Started [redacted] - Getty on tty3.\n    │ [   12.501115] arav-rog bash[100]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\n    │ [   12.501394] arav-rog bash[100]: OK: Listening on 0.0.0.0:8820\n    │ [   12.503955] arav-rog systemd[1]: Started [redacted] - Getty on tty4.\n    │ [   12.506628] arav-rog systemd[1]: Started [redacted] - Getty on tty5.\n    │ [   12.509592] arav-rog systemd[1]: Started [redacted] - Getty on tty6.\n    │ [   12.512610] arav-rog systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [   12.513033] arav-rog systemd[1]: Reached target getty.target - Login Prompts.\n    │ [   12.513321] arav-rog systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [   12.514266] arav-rog systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [   12.523020] arav-rog systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [   12.523141] arav-rog systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [   12.523793] arav-rog systemd[1]: Startup finished in 396ms.\n    │ [   12.564252] arav-rog CRON[96]: pam_unix(cron:session): session closed for user adom\n    │ [   12.709505] arav-rog login[191]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.912167] arav-rog adom-bridge[99]: Adom relay server started\n    │ [   12.912167] arav-rog adom-bridge[99]:   WebSocket: ws://0.0.0.0:8765\n    │ [   12.912167] arav-rog adom-bridge[99]:   HTTP API:  http://127.0.0.1:8766\n    │ [   12.944590] arav-rog code-server[101]: [2026-10-11T03:28:39.506Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   12.945033] arav-rog code-server[101]: [2026-10-11T03:28:39.511Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   12.967186] arav-rog code-server[101]: [2026-10-11T03:28:39.534Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [   12.967186] arav-rog code-server[101]: [2026-10-11T03:28:39.534Z] info  HTTP server listening on http://0.0.0.0:7380/\n    │ [   12.967264] arav-rog code-server[101]: [2026-10-11T03:28:39.534Z] info    - Authentication is disabled\n    │ [   12.967264] arav-rog code-server[101]: [2026-10-11T03:28:39.534Z] info    - Not serving HTTPS\n    │ [   12.967264] arav-rog code-server[101]: [2026-10-11T03:28:39.534Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [   22.752586] arav-rog unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2758: Timed out waiting for user session for uid=1001\n    │ [   22.852116] arav-rog login[329]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   22.853371] arav-rog login[341]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   25.308319] arav-rog adom-bridge[99]: [2026-10-11T03:28:51.875Z] WS connected: 1f5f3617-6190-46f3-9493-9e95980f6ef5 from 127.0.0.1:61589\n    │ [   25.308714] arav-rog adom-bridge[99]: [2026-10-11T03:28:51.876Z] ← 1f5f3617-6190-46f3-9493-9e95980f6ef5 type=auth id=40f8b1ec-ce83-48ab-9c6e-c5b29375d6ce\n    │ [   25.308739] arav-rog adom-bridge[99]: [2026-10-11T03:28:51.876Z] Auth OK: 1f5f3617-6190-46f3-9493-9e95980f6ef5 (Adom Bridge)\n    │ [   27.899218] arav-rog adom-bridge[99]: [2026-10-11T03:28:54.466Z] ← 1f5f3617-6190-46f3-9493-9e95980f6ef5 type=pong id=f293ab70-c261-438f-a01e-0ae89470fe86\n    │ [   32.967031] arav-rog unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2758: Timed out waiting for user session for uid=0\n    │ [   34.568519] arav-rog CRON[424]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   34.569339] arav-rog CRON[425]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   34.600906] arav-rog CRON[424]: pam_unix(cron:session): session closed for user adom\n    │ [   42.897328] arav-rog adom-bridge[99]: [2026-10-11T03:29:09.464Z] ← 1f5f3617-6190-46f3-9493-9e95980f6ef5 type=pong id=cfd90b4a-950d-46e3-bcd4-2c04626b1f55\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  … 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.296 (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
  }
}