{
  "ensure-workspace": {
    "status": "failed",
    "output": "=== Ensure workspace runtime (WSL2 Ubuntu) ===\n  ✓ set WSL2 networkingMode=mirrored in .wslconfig (so the workspace can reach Adom services)\n  ✓ WSLg off by default (guiApplications=false in .wslconfig); the workspace is headless. POST /wsl/gui turns it on.\n=== Ensure WSL2 subsystem is responsive (auto-recovers if wedged) ===\n  $ wsl --status\n    | Default Distribution: docker-desktop\n    | Default Version: 2\n  ✓ `wsl --status` ok (0s)\n  ✓ WSL2 subsystem is responsive\nChecking WSL2 prerequisites (wsl --status)...\n  ✓ WSL2 is installed and ready\n  → enabling WSL2 mirrored networking (restarting WSL to apply). Other distros exist (docker-desktop, Ubuntu-20.04, Ubuntu); they simply restart on next use, mirrored networking is required for the workspace + sign-in, so this is not optional.\n  $ wsl --shutdown   (no other distro is running: only ours restarts)\n=== Ensure WSL2 subsystem is responsive (auto-recovers if wedged) ===\n  $ wsl --status\n    | Default Distribution: docker-desktop\n    | Default Version: 2\n  ✓ `wsl --status` ok (0s)\n  ✓ WSL2 subsystem is responsive\nDistro 'Adom-Workspace' not registered, importing the golden image.\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, 44 MB written, 3s elapsed…\n    … extracting rootfs into the workspace VHD, 44 MB written, 6s elapsed…\n    … extracting rootfs into the workspace VHD, 76 MB written, 9s elapsed…\n    … extracting rootfs into the workspace VHD, 2476 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. (12s)\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    │ [    0.483306] Atlas kernel: Bridge firewalling registered\n    │ [    0.576461] Atlas kernel: scsi 0:0:0:3: Direct-Access     Msft     Virtual Disk     1.0  PQ: 0 ANSI: 5\n    │ [    0.581157] Atlas kernel: sd 0:0:0:3: Attached scsi generic sg3 type 0\n    │ [    0.581218] Atlas kernel: sd 0:0:0:3: [sdd] 2147483648 512-byte logical blocks: (1.10 TB/1.00 TiB)\n    │ [    0.581891] Atlas kernel: sd 0:0:0:3: [sdd] 4096-byte physical blocks\n    │ [    0.582216] Atlas kernel: sd 0:0:0:3: [sdd] Write Protect is off\n    │ [    0.582452] Atlas kernel: sd 0:0:0:3: [sdd] Mode Sense: 0f 00 00 00\n    │ [    0.582802] Atlas kernel: sd 0:0:0:3: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA\n    │ [    0.632806] Atlas kernel: sd 0:0:0:3: [sdd] Attached SCSI disk\n    │ [    0.830974] Atlas kernel: hv_storvsc fd1d2cbd-ce7c-535c-966b-eb5f811c95f0: tag#816 cmd 0x2a status: scsi 0x0 srb 0x4 host 0xc00000a1\n    │ [    1.020284] Atlas kernel: hv_storvsc fd1d2cbd-ce7c-535c-966b-eb5f811c95f0: tag#831 cmd 0x2a status: scsi 0x0 srb 0x4 host 0xc00000a1\n    │ [    1.048439] Atlas kernel: hv_storvsc fd1d2cbd-ce7c-535c-966b-eb5f811c95f0: tag#830 cmd 0x2a status: scsi 0x0 srb 0x4 host 0xc00000a1\n    │ [    1.357120] Atlas kernel: EXT4-fs (sdd): mounted filesystem e26af1ec-c940-4ffb-9223-e619877251c2 r/w with ordered data mode. Quota mode: none.\n    │ [   11.773793] Atlas kernel: EXT4-fs (sdd): unmounting filesystem e26af1ec-c940-4ffb-9223-e619877251c2.\n    │ [   11.949760] Atlas kernel: EXT4-fs (sdd): mounted filesystem e26af1ec-c940-4ffb-9223-e619877251c2 r/w with ordered data mode. Quota mode: none.\n    │ [   12.367319] Atlas systemd-journald[31]: Collecting audit messages is disabled.\n    │ [   12.378579] Atlas systemd-journald[31]: Journal started\n    │ [   12.378596] Atlas systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 2.4G, 2.4G free.\n    │ [   12.382216] Atlas systemd[1]: Finished systemd-sysusers.service - Create System Users.\n    │ [   12.383389] Atlas systemd[1]: Finished systemd-sysctl.service - Apply Kernel Variables.\n    │ [   12.385611] Atlas systemd[1]: Starting systemd-journal-flush.service - Flush Journal to Persistent Storage...\n    │ [   12.386269] Atlas systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...\n    │ [   12.390147] Atlas systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 2.4G, 2.4G free.\n    │ [   12.391095] Atlas systemd[1]: Finished systemd-journal-flush.service - Flush Journal to Persistent Storage.\n    │ [   12.390581] Atlas systemd-journald[31]: Received client request to flush runtime journal.\n    │ [   12.392736] Atlas systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.\n    │ [   12.393036] Atlas systemd[1]: Reached target local-fs-pre.target - Preparation for Local File Systems.\n    │ [   12.393253] Atlas systemd[1]: Reached target local-fs.target - Local File Systems.\n    │ [   12.394002] Atlas systemd[1]: Listening on systemd-sysext.socket - System Extension Image Management (Varlink).\n    │ [   12.394160] Atlas systemd[1]: Reached target sockets.target - Socket Units.\n    │ [   12.394884] Atlas systemd[1]: Starting ldconfig.service - Rebuild Dynamic Linker Cache...\n    │ [   12.395858] Atlas systemd[1]: Starting systemd-binfmt.service - Set Up Additional Binary Formats...\n    │ [   12.396518] Atlas systemd[1]: Starting systemd-tmpfiles-setup.service - Create Volatile Files and Directories...\n    │ [   12.400029] Atlas systemd-binfmt[71]: Failed to flush binfmt_misc rules, ignoring: Read-only file system\n    │ [   12.401121] Atlas systemd[1]: systemd-binfmt.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   12.401230] Atlas systemd[1]: systemd-binfmt.service: Failed with result 'exit-code'.\n    │ [   12.401381] Atlas systemd[1]: Failed to start systemd-binfmt.service - Set Up Additional Binary Formats.\n    │ [   12.411465] Atlas systemd[1]: Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories.\n    │ [   12.411832] Atlas systemd[1]: systemd-firstboot.service - First Boot Wizard was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   12.411862] Atlas systemd[1]: first-boot-complete.target - First Boot Complete was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   12.412532] Atlas systemd[1]: Starting systemd-journal-catalog-update.service - Rebuild Journal Catalog...\n    │ [   12.412874] Atlas 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.413824] Atlas systemd[1]: Starting systemd-update-utmp.service - Record System Boot/Shutdown in UTMP...\n    │ [   12.415127] Atlas systemd[1]: Finished ldconfig.service - Rebuild Dynamic Linker Cache.\n    │ [   12.419572] Atlas systemd[1]: Finished systemd-update-utmp.service - Record System Boot/Shutdown in UTMP.\n    │ [   12.436201] Atlas systemd[1]: Finished systemd-journal-catalog-update.service - Rebuild Journal Catalog.\n    │ [   12.437329] Atlas systemd[1]: Starting systemd-update-done.service - Update is Completed...\n    │ [   12.443854] Atlas systemd[1]: Finished systemd-update-done.service - Update is Completed.\n    │ [   12.444374] Atlas systemd[1]: Reached target sysinit.target - System Initialization.\n    │ [   12.445106] Atlas systemd[1]: Started apt-daily.timer - Daily apt download activities.\n    │ [   12.445363] Atlas systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.\n    │ [   12.445580] Atlas systemd[1]: Started dpkg-db-backup.timer - Daily dpkg database backup timer.\n    │ [   12.445825] Atlas systemd[1]: Started e2scrub_all.timer - Periodic ext4 Online Metadata Check for All Filesystems.\n    │ [   12.445990] Atlas systemd[1]: fstrim.timer - Discard unused filesystem blocks once a week was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   12.446083] Atlas systemd[1]: Started motd-news.timer - Message of the Day.\n    │ [   12.446262] Atlas systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.\n    │ [   12.446428] Atlas systemd[1]: Reached target timers.target - Timer Units.\n    │ [   12.446577] Atlas systemd[1]: systemd-pcrphase-sysinit.service - TPM2 PCR Barrier (Initialization) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   12.446613] Atlas systemd[1]: Reached target basic.target - Basic System.\n    │ [   12.447452] Atlas systemd[1]: Starting adom-distro-id.service - Generate the per-import Adom distro identity marker...\n    │ [   12.448383] Atlas systemd[1]: Started cron.service - Regular background program processing daemon.\n    │ [   12.450669] Atlas systemd[1]: Starting e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots...\n    │ [   12.451529] Atlas systemd[1]: Starting getty-static.service - getty on tty2-tty6 if dbus and logind are not available...\n    │ [   12.451699] Atlas systemd[1]: systemd-logind.service - User Login Management was skipped because no trigger condition checks were met.\n    │ [   12.451731] Atlas systemd[1]: systemd-pcrphase.service - TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   12.451751] Atlas (cron)[84]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS\n    │ [   12.469310] Atlas cron[84]: (CRON) INFO (pidfile fd = 3)\n    │ [   12.469382] Atlas systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...\n    │ [   12.470325] Atlas systemd[1]: Starting wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard...\n    │ [   12.470790] Atlas cron[84]: (CRON) INFO (Running @reboot jobs)\n    │ [   12.470937] Atlas systemd[1]: adom-distro-id.service: Deactivated successfully.\n    │ [   12.471130] Atlas systemd[1]: Finished adom-distro-id.service - Generate the per-import Adom distro identity marker.\n    │ [   12.473846] Atlas systemd[1]: Starting adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to...\n    │ [   12.474591] Atlas systemd[1]: Starting adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820)...\n    │ [   12.475334] Atlas systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   12.475853] Atlas systemd[1]: Finished wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard.\n    │ [   12.478452] Atlas systemd[1]: Started adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820).\n    │ [   12.482107] Atlas systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [   12.491856] Atlas CRON[97]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.492452] Atlas CRON[98]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   12.496204] Atlas CRON[100]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.496486] Atlas CRON[102]: (adom) CMD (sleep 600; bash /home/adom/.adom/hooks/adom-core-update.sh >/dev/null 2>&1)\n    │ [   12.521457] Atlas systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [   12.521620] Atlas systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [   12.572269] Atlas bash[93]: OK: Recovered 0 channel(s) from disk\n    │ [   12.572269] Atlas bash[93]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\n    │ [   12.572893] Atlas bash[93]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\n    │ [   12.578184] Atlas bash[93]: OK: Listening on 0.0.0.0:8820\n    │ [   12.580022] Atlas systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to.\n    │ [   12.582346] Atlas systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   12.584116] Atlas adom-bridge[92]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\n    │ [   12.584116] Atlas adom-bridge[92]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\n    │ [   12.584116] Atlas adom-bridge[92]: │    In a container that means: when the session that launched it is torn down,\n    │ [   12.584116] Atlas adom-bridge[92]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\n    │ [   12.584116] Atlas adom-bridge[92]: │    falls into an endless \"Reconnecting in 30s\" loop until someone restarts it.\n    │ [   12.584116] Atlas adom-bridge[92]: │\n    │ [   12.584116] Atlas adom-bridge[92]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\n    │ [   12.584116] Atlas adom-bridge[92]: │        adom-bridge serve --supervise\n    │ [   12.584116] Atlas adom-bridge[92]: │    That detaches the relay from your session (reparented to init) and starts a\n    │ [   12.584116] Atlas adom-bridge[92]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\n    │ [   12.584116] Atlas adom-bridge[92]: │    desktops (with the reason) whenever it has to. Stop later with:\n    │ [   12.584116] Atlas adom-bridge[92]: │        adom-bridge serve --stop\n    │ [   12.584116] Atlas adom-bridge[92]: │\n    │ [   12.584116] Atlas adom-bridge[92]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\n    │ [   12.584116] Atlas adom-bridge[92]: └────────────────────────────────────────────────────────────────────────────\n    │ [   12.584116] Atlas adom-bridge[92]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\n    │ [   12.584116] Atlas adom-bridge[92]: │ The token is a well-known literal published in the adom-bridge docs, so\n    │ [   12.584116] Atlas adom-bridge[92]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\n    │ [   12.584116] Atlas adom-bridge[92]: │ connected to it. If a connected desktop controls real hardware, treat\n    │ [   12.584116] Atlas adom-bridge[92]: │ this as an open door.\n    │ [   12.584116] Atlas adom-bridge[92]: │\n    │ [   12.584116] Atlas adom-bridge[92]: │ Rotate (both sides must match):\n    │ [   12.584116] Atlas adom-bridge[92]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [   12.584116] Atlas adom-bridge[92]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [   12.584116] Atlas adom-bridge[92]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [   12.584116] Atlas adom-bridge[92]: │              (Connections panel, or server_add with authToken)\n    │ [   12.584116] Atlas adom-bridge[92]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [   12.584565] Atlas adom-bridge[92]: └────────────────────────────────────────────────────────────────────────────\n    │ [   12.584579] Atlas systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.\n    │ [   12.585338] Atlas systemd[1]: Started [redacted] - Getty on tty1.\n    │ [   12.585549] Atlas adom-bridge[92]: Adom relay server started\n    │ [   12.585549] Atlas adom-bridge[92]:   WebSocket: ws://0.0.0.0:8765\n    │ [   12.585549] Atlas adom-bridge[92]:   HTTP API:  http://127.0.0.1:8766\n    │ [   12.586104] Atlas systemd[1]: Started [redacted] - Getty on tty2.\n    │ [   12.586810] Atlas systemd[1]: Started [redacted] - Getty on tty3.\n    │ [   12.587507] Atlas systemd[1]: Started [redacted] - Getty on tty4.\n    │ [   12.588347] Atlas systemd[1]: Started [redacted] - Getty on tty5.\n    │ [   12.589134] Atlas systemd[1]: Started [redacted] - Getty on tty6.\n    │ [   12.589324] Atlas systemd[1]: Reached target getty.target - Login Prompts.\n    │ [   12.589498] Atlas systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [   12.590156] Atlas systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [   12.595595] Atlas systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [   12.595731] Atlas systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [   12.596475] Atlas systemd[1]: Startup finished in 339ms.\n    │ [   12.633641] Atlas CRON[97]: pam_unix(cron:session): session closed for user adom\n    │ [   12.809435] Atlas login[183]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.965228] Atlas code-server[94]: [2026-10-05T15:13:57.380Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   12.965506] Atlas code-server[94]: [2026-10-05T15:13:57.385Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   12.972086] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [   12.972154] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info  HTTP server listening on http://0.0.0.0:7380/\n    │ [   12.972154] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info    - Authentication is disabled\n    │ [   12.972154] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info    - Not serving HTTPS\n    │ [   12.972268] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [   16.634998] Atlas CRON[265]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   16.635281] Atlas CRON[266]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   16.661467] Atlas CRON[265]: pam_unix(cron:session): session closed for user adom\n    │ [   23.017118] Atlas unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2840: Timed out waiting for user session for uid=1001\n    │ [   23.111477] Atlas login[321]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   23.112578] Atlas login[333]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   33.320532] Atlas 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    │ [    0.483306] Atlas kernel: Bridge firewalling registered\n    │ [    0.576461] Atlas kernel: scsi 0:0:0:3: Direct-Access     Msft     Virtual Disk     1.0  PQ: 0 ANSI: 5\n    │ [    0.581157] Atlas kernel: sd 0:0:0:3: Attached scsi generic sg3 type 0\n    │ [    0.581218] Atlas kernel: sd 0:0:0:3: [sdd] 2147483648 512-byte logical blocks: (1.10 TB/1.00 TiB)\n    │ [    0.581891] Atlas kernel: sd 0:0:0:3: [sdd] 4096-byte physical blocks\n    │ [    0.582216] Atlas kernel: sd 0:0:0:3: [sdd] Write Protect is off\n    │ [    0.582452] Atlas kernel: sd 0:0:0:3: [sdd] Mode Sense: 0f 00 00 00\n    │ [    0.582802] Atlas kernel: sd 0:0:0:3: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA\n    │ [    0.632806] Atlas kernel: sd 0:0:0:3: [sdd] Attached SCSI disk\n    │ [    0.830974] Atlas kernel: hv_storvsc fd1d2cbd-ce7c-535c-966b-eb5f811c95f0: tag#816 cmd 0x2a status: scsi 0x0 srb 0x4 host 0xc00000a1\n    │ [    1.020284] Atlas kernel: hv_storvsc fd1d2cbd-ce7c-535c-966b-eb5f811c95f0: tag#831 cmd 0x2a status: scsi 0x0 srb 0x4 host 0xc00000a1\n    │ [    1.048439] Atlas kernel: hv_storvsc fd1d2cbd-ce7c-535c-966b-eb5f811c95f0: tag#830 cmd 0x2a status: scsi 0x0 srb 0x4 host 0xc00000a1\n    │ [    1.357120] Atlas kernel: EXT4-fs (sdd): mounted filesystem e26af1ec-c940-4ffb-9223-e619877251c2 r/w with ordered data mode. Quota mode: none.\n    │ [   11.773793] Atlas kernel: EXT4-fs (sdd): unmounting filesystem e26af1ec-c940-4ffb-9223-e619877251c2.\n    │ [   11.949760] Atlas kernel: EXT4-fs (sdd): mounted filesystem e26af1ec-c940-4ffb-9223-e619877251c2 r/w with ordered data mode. Quota mode: none.\n    │ [   12.367319] Atlas systemd-journald[31]: Collecting audit messages is disabled.\n    │ [   12.378579] Atlas systemd-journald[31]: Journal started\n    │ [   12.378596] Atlas systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 2.4G, 2.4G free.\n    │ [   12.382216] Atlas systemd[1]: Finished systemd-sysusers.service - Create System Users.\n    │ [   12.383389] Atlas systemd[1]: Finished systemd-sysctl.service - Apply Kernel Variables.\n    │ [   12.385611] Atlas systemd[1]: Starting systemd-journal-flush.service - Flush Journal to Persistent Storage...\n    │ [   12.386269] Atlas systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...\n    │ [   12.390147] Atlas systemd-journald[31]: Runtime Journal (/run/log/journal/88f55b408a664d4d9d4a20d96aa08e60) is 8.0M, max 2.4G, 2.4G free.\n    │ [   12.391095] Atlas systemd[1]: Finished systemd-journal-flush.service - Flush Journal to Persistent Storage.\n    │ [   12.390581] Atlas systemd-journald[31]: Received client request to flush runtime journal.\n    │ [   12.392736] Atlas systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.\n    │ [   12.393036] Atlas systemd[1]: Reached target local-fs-pre.target - Preparation for Local File Systems.\n    │ [   12.393253] Atlas systemd[1]: Reached target local-fs.target - Local File Systems.\n    │ [   12.394002] Atlas systemd[1]: Listening on systemd-sysext.socket - System Extension Image Management (Varlink).\n    │ [   12.394160] Atlas systemd[1]: Reached target sockets.target - Socket Units.\n    │ [   12.394884] Atlas systemd[1]: Starting ldconfig.service - Rebuild Dynamic Linker Cache...\n    │ [   12.395858] Atlas systemd[1]: Starting systemd-binfmt.service - Set Up Additional Binary Formats...\n    │ [   12.396518] Atlas systemd[1]: Starting systemd-tmpfiles-setup.service - Create Volatile Files and Directories...\n    │ [   12.400029] Atlas systemd-binfmt[71]: Failed to flush binfmt_misc rules, ignoring: Read-only file system\n    │ [   12.401121] Atlas systemd[1]: systemd-binfmt.service: Main process exited, code=exited, status=1/FAILURE\n    │ [   12.401230] Atlas systemd[1]: systemd-binfmt.service: Failed with result 'exit-code'.\n    │ [   12.401381] Atlas systemd[1]: Failed to start systemd-binfmt.service - Set Up Additional Binary Formats.\n    │ [   12.411465] Atlas systemd[1]: Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories.\n    │ [   12.411832] Atlas systemd[1]: systemd-firstboot.service - First Boot Wizard was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   12.411862] Atlas systemd[1]: first-boot-complete.target - First Boot Complete was skipped because of an unmet condition check (ConditionFirstBoot=yes).\n    │ [   12.412532] Atlas systemd[1]: Starting systemd-journal-catalog-update.service - Rebuild Journal Catalog...\n    │ [   12.412874] Atlas 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.413824] Atlas systemd[1]: Starting systemd-update-utmp.service - Record System Boot/Shutdown in UTMP...\n    │ [   12.415127] Atlas systemd[1]: Finished ldconfig.service - Rebuild Dynamic Linker Cache.\n    │ [   12.419572] Atlas systemd[1]: Finished systemd-update-utmp.service - Record System Boot/Shutdown in UTMP.\n    │ [   12.436201] Atlas systemd[1]: Finished systemd-journal-catalog-update.service - Rebuild Journal Catalog.\n    │ [   12.437329] Atlas systemd[1]: Starting systemd-update-done.service - Update is Completed...\n    │ [   12.443854] Atlas systemd[1]: Finished systemd-update-done.service - Update is Completed.\n    │ [   12.444374] Atlas systemd[1]: Reached target sysinit.target - System Initialization.\n    │ [   12.445106] Atlas systemd[1]: Started apt-daily.timer - Daily apt download activities.\n    │ [   12.445363] Atlas systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.\n    │ [   12.445580] Atlas systemd[1]: Started dpkg-db-backup.timer - Daily dpkg database backup timer.\n    │ [   12.445825] Atlas systemd[1]: Started e2scrub_all.timer - Periodic ext4 Online Metadata Check for All Filesystems.\n    │ [   12.445990] Atlas systemd[1]: fstrim.timer - Discard unused filesystem blocks once a week was skipped because of an unmet condition check (ConditionVirtualization=!container).\n    │ [   12.446083] Atlas systemd[1]: Started motd-news.timer - Message of the Day.\n    │ [   12.446262] Atlas systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.\n    │ [   12.446428] Atlas systemd[1]: Reached target timers.target - Timer Units.\n    │ [   12.446577] Atlas systemd[1]: systemd-pcrphase-sysinit.service - TPM2 PCR Barrier (Initialization) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   12.446613] Atlas systemd[1]: Reached target basic.target - Basic System.\n    │ [   12.447452] Atlas systemd[1]: Starting adom-distro-id.service - Generate the per-import Adom distro identity marker...\n    │ [   12.448383] Atlas systemd[1]: Started cron.service - Regular background program processing daemon.\n    │ [   12.450669] Atlas systemd[1]: Starting e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots...\n    │ [   12.451529] Atlas systemd[1]: Starting getty-static.service - getty on tty2-tty6 if dbus and logind are not available...\n    │ [   12.451699] Atlas systemd[1]: systemd-logind.service - User Login Management was skipped because no trigger condition checks were met.\n    │ [   12.451731] Atlas systemd[1]: systemd-pcrphase.service - TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).\n    │ [   12.451751] Atlas (cron)[84]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS\n    │ [   12.469310] Atlas cron[84]: (CRON) INFO (pidfile fd = 3)\n    │ [   12.469382] Atlas systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...\n    │ [   12.470325] Atlas systemd[1]: Starting wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard...\n    │ [   12.470790] Atlas cron[84]: (CRON) INFO (Running @reboot jobs)\n    │ [   12.470937] Atlas systemd[1]: adom-distro-id.service: Deactivated successfully.\n    │ [   12.471130] Atlas systemd[1]: Finished adom-distro-id.service - Generate the per-import Adom distro identity marker.\n    │ [   12.473846] Atlas systemd[1]: Starting adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to...\n    │ [   12.474591] Atlas systemd[1]: Starting adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820)...\n    │ [   12.475334] Atlas systemd[1]: Starting code-server.service - Adom code-server (Hydrogen Desktop workspace editor)...\n    │ [   12.475853] Atlas systemd[1]: Finished wsl-mnt-guard.service - WSL Cross-Distribution Mount Guard.\n    │ [   12.478452] Atlas systemd[1]: Started adom-shotlog.service - Adom Shotlog (screenshot log viewer, port 8820).\n    │ [   12.482107] Atlas systemd[1]: Finished getty-static.service - getty on tty2-tty6 if dbus and logind are not available.\n    │ [   12.491856] Atlas CRON[97]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.492452] Atlas CRON[98]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   12.496204] Atlas CRON[100]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.496486] Atlas CRON[102]: (adom) CMD (sleep 600; bash /home/adom/.adom/hooks/adom-core-update.sh >/dev/null 2>&1)\n    │ [   12.521457] Atlas systemd[1]: e2scrub_reap.service: Deactivated successfully.\n    │ [   12.521620] Atlas systemd[1]: Finished e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots.\n    │ [   12.572269] Atlas bash[93]: OK: Recovered 0 channel(s) from disk\n    │ [   12.572269] Atlas bash[93]: OK: Retention active: max 200 shots/channel on disk (SHOTLOG_MAX_SHOTS), idle channels pruned after 30d (SHOTLOG_RETENTION_DAYS, 0=off)\n    │ [   12.572893] Atlas bash[93]: OK: read-hook verified: auto-capture of every image any AI Reads is active.\n    │ [   12.578184] Atlas bash[93]: OK: Listening on 0.0.0.0:8820\n    │ [   12.580022] Atlas systemd[1]: Started adom-relay.service - Adom Bridge relay (adom-bridge serve) - the bridge AD/HD connect back to.\n    │ [   12.582346] Atlas systemd[1]: Started code-server.service - Adom code-server (Hydrogen Desktop workspace editor).\n    │ [   12.584116] Atlas adom-bridge[92]: ┌─ adom-bridge relay (ws:8765 http:8766) ───────────────────────────\n    │ [   12.584116] Atlas adom-bridge[92]: │ ⚠  RUNNING IN THE FOREGROUND — this relay STOPS when this shell / session ends.\n    │ [   12.584116] Atlas adom-bridge[92]: │    In a container that means: when the session that launched it is torn down,\n    │ [   12.584116] Atlas adom-bridge[92]: │    the relay dies, /proxy/8765/ returns HTTP 500, and EVERY connected desktop\n    │ [   12.584116] Atlas adom-bridge[92]: │    falls into an endless \"Reconnecting in 30s\" loop until someone restarts it.\n    │ [   12.584116] Atlas adom-bridge[92]: │\n    │ [   12.584116] Atlas adom-bridge[92]: │ ✅ To make it SURVIVE the session AND self-heal, stop this and run instead:\n    │ [   12.584116] Atlas adom-bridge[92]: │        adom-bridge serve --supervise\n    │ [   12.584116] Atlas adom-bridge[92]: │    That detaches the relay from your session (reparented to init) and starts a\n    │ [   12.584116] Atlas adom-bridge[92]: │    watchdog: it restarts the relay with backoff and TOASTS the connected\n    │ [   12.584116] Atlas adom-bridge[92]: │    desktops (with the reason) whenever it has to. Stop later with:\n    │ [   12.584116] Atlas adom-bridge[92]: │        adom-bridge serve --stop\n    │ [   12.584116] Atlas adom-bridge[92]: │\n    │ [   12.584116] Atlas adom-bridge[92]: │    (Foreground is fine for a quick local relay you'll sit and watch.)\n    │ [   12.584116] Atlas adom-bridge[92]: └────────────────────────────────────────────────────────────────────────────\n    │ [   12.584116] Atlas adom-bridge[92]: ┌─ SECURITY: this relay is using the DEFAULT development token ──────────────\n    │ [   12.584116] Atlas adom-bridge[92]: │ The token is a well-known literal published in the adom-bridge docs, so\n    │ [   12.584116] Atlas adom-bridge[92]: │ ANYONE who knows this relay's URL can join it and drive EVERY desktop\n    │ [   12.584116] Atlas adom-bridge[92]: │ connected to it. If a connected desktop controls real hardware, treat\n    │ [   12.584116] Atlas adom-bridge[92]: │ this as an open door.\n    │ [   12.584116] Atlas adom-bridge[92]: │\n    │ [   12.584116] Atlas adom-bridge[92]: │ Rotate (both sides must match):\n    │ [   12.584116] Atlas adom-bridge[92]: │   1. relay:   adom-bridge serve --supervise --token <secret>\n    │ [   12.584116] Atlas adom-bridge[92]: │              (or export ADOM_AUTH_TOKEN=<secret>)\n    │ [   12.584116] Atlas adom-bridge[92]: │   2. desktop: set the same value as auth_token on that server entry\n    │ [   12.584116] Atlas adom-bridge[92]: │              (Connections panel, or server_add with authToken)\n    │ [   12.584116] Atlas adom-bridge[92]: │ Check any relay:  curl -s <relay-http>/health   -> usingDefaultToken\n    │ [   12.584565] Atlas adom-bridge[92]: └────────────────────────────────────────────────────────────────────────────\n    │ [   12.584579] Atlas systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.\n    │ [   12.585338] Atlas systemd[1]: Started [redacted] - Getty on tty1.\n    │ [   12.585549] Atlas adom-bridge[92]: Adom relay server started\n    │ [   12.585549] Atlas adom-bridge[92]:   WebSocket: ws://0.0.0.0:8765\n    │ [   12.585549] Atlas adom-bridge[92]:   HTTP API:  http://127.0.0.1:8766\n    │ [   12.586104] Atlas systemd[1]: Started [redacted] - Getty on tty2.\n    │ [   12.586810] Atlas systemd[1]: Started [redacted] - Getty on tty3.\n    │ [   12.587507] Atlas systemd[1]: Started [redacted] - Getty on tty4.\n    │ [   12.588347] Atlas systemd[1]: Started [redacted] - Getty on tty5.\n    │ [   12.589134] Atlas systemd[1]: Started [redacted] - Getty on tty6.\n    │ [   12.589324] Atlas systemd[1]: Reached target getty.target - Login Prompts.\n    │ [   12.589498] Atlas systemd[1]: Reached target multi-user.target - Multi-User System.\n    │ [   12.590156] Atlas systemd[1]: Starting systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP...\n    │ [   12.595595] Atlas systemd[1]: systemd-update-utmp-runlevel.service: Deactivated successfully.\n    │ [   12.595731] Atlas systemd[1]: Finished systemd-update-utmp-runlevel.service - Record Runlevel Change in UTMP.\n    │ [   12.596475] Atlas systemd[1]: Startup finished in 339ms.\n    │ [   12.633641] Atlas CRON[97]: pam_unix(cron:session): session closed for user adom\n    │ [   12.809435] Atlas login[183]: pam_unix(login:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   12.965228] Atlas code-server[94]: [2026-10-05T15:13:57.380Z] info  code-server 4.124.2 9fe7eb79d5ab2f2ed369d0e79cce4dbc6fe00a31\n    │ [   12.965506] Atlas code-server[94]: [2026-10-05T15:13:57.385Z] info  Using user-data-dir /home/adom/.local/share/code-server\n    │ [   12.972086] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info  Using config file /home/adom/.config/code-server/config.yaml\n    │ [   12.972154] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info  HTTP server listening on http://0.0.0.0:7380/\n    │ [   12.972154] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info    - Authentication is disabled\n    │ [   12.972154] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info    - Not serving HTTPS\n    │ [   12.972268] Atlas code-server[94]: [2026-10-05T15:13:57.393Z] info  Session server listening on /home/adom/.local/share/code-server/code-server-ipc.sock\n    │ [   16.634998] Atlas CRON[265]: pam_unix(cron:session): session opened for user adom(uid=1001) by adom(uid=0)\n    │ [   16.635281] Atlas CRON[266]: (adom) CMD (python3 /home/adom/.local/share/adom/codex/runtime/manage.py ensure-watch >/dev/null 2>&1 # adom/codex runtime)\n    │ [   16.661467] Atlas CRON[265]: pam_unix(cron:session): session closed for user adom\n    │ [   23.017118] Atlas unknown: WSL (2 - Interop) ERROR: CreateLoginSession:2840: Timed out waiting for user session for uid=1001\n    │ [   23.111477] Atlas login[321]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)\n    │ [   23.112578] Atlas login[333]: ROOT LOGIN  on '/dev/pts/2'\n    │ [   33.320532] Atlas 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    → REPAIR: (re)starting code-server on the correct bind-addr...\n    ✓ code-server (re)started\n  … probing host 127.0.0.1:7380 (TCP)…\n    … not reachable yet (1/10), waiting…\n    … not reachable yet (3/10), waiting…\n    … not reachable yet (6/10), waiting…\n    … not reachable yet (9/10), waiting…\n  ✗ host 127.0.0.1:7380 still unreachable after round 1.\n    → REPAIR: forcing a clean code-server restart and retrying verification…\n  --- verification round 2/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  … probing host 127.0.0.1:7380 (TCP)…\n    … not reachable yet (1/10), waiting…\n    … not reachable yet (3/10), waiting…\n    … not reachable yet (6/10), waiting…\n    … not reachable yet (9/10), waiting…\n  ✗ host 127.0.0.1:7380 still unreachable after round 2.\n    → REPAIR: forcing a clean code-server restart and retrying verification…\n  --- verification round 3/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  … probing host 127.0.0.1:7380 (TCP)…\n    … not reachable yet (1/10), waiting…\n    … not reachable yet (3/10), waiting…\n    … not reachable yet (6/10), waiting…\n    … not reachable yet (9/10), waiting…\n  ✗ host 127.0.0.1:7380 still unreachable after round 3.\n  ✗ workspace setup attempt failed (will retry if attempts remain): code-server never became reachable on host 127.0.0.1:7380 after 3 verify/repair rounds. The VS Code pane would hang on 'Starting AI Environment', so step 1 is failing rather than advancing on a broken workspace.",
    "percent": 0.0,
    "attempts": 0,
    "max_attempts": 3
  }
}