{
  "buildinfo": {
    "_hints": {
      "related": [
        "/health",
        "/workspace/health",
        "/ports"
      ],
      "usage": "Compare build_sha to `git rev-parse HEAD` of the commit you built. Equal = running code is the code you shipped. Unequal = STALE build; rebuild before testing behavior."
    },
    "build_dirty": "true",
    "build_epoch": "1793212240",
    "build_local": "Oct 28 1:30 PM",
    "build_sha": "778d0341b2e41d6c68fd4d730e67ebb878543640",
    "build_stamp": "778d0341b2e41d6c68fd4d730e67ebb878543640-dirty-1793212240",
    "dev": false,
    "flavor": "public",
    "narrative": "Running exe IS build 778d0341b2e41d6c68fd4d730e67ebb878543640-dirty (built Oct 28 1:30 PM). If this equals the SHA you pushed, your build shipped; if not, it's STALE — rebuild before trusting any behavior.",
    "ok": true,
    "update_channel": "stable"
  },
  "context": "app",
  "doctor": {
    "_hints": {
      "note": "The Doctor: full diagnostics + port integrity, and (fix=true) the safe wake-heal cascade, re-diagnosed. If recommend_workspace_restart is true, the safe heal didn't clear it: offer the user the gated workspace restart (POST /container-restart) which drops their session."
    },
    "actions": [],
    "after": null,
    "before": {
      "checks": [
        {
          "check": "mac-disk",
          "duration_ms": 1,
          "message": "596.5 GB free on this Mac",
          "ok": true
        },
        {
          "check": "mac-memory",
          "duration_ms": 1,
          "message": "Memory pressure normal",
          "ok": true
        },
        {
          "check": "vm-running",
          "duration_ms": 54,
          "message": "Workspace VM and machine running",
          "ok": true
        },
        {
          "check": "vm-disk",
          "details": {
            "df": "/                 27603038208  41%\n/var/lib/machines 31015493632  18%\n/boot               749916160  14%"
          },
          "duration_ms": 53,
          "message": "Workspace disks have room",
          "ok": true
        },
        {
          "check": "vm-fs",
          "duration_ms": 71,
          "message": "No filesystem errors since the VM booted",
          "ok": true
        },
        {
          "check": "vm-memory",
          "duration_ms": 123,
          "message": "No out-of-memory kills in the last hour",
          "ok": true
        },
        {
          "check": "editor-config",
          "duration_ms": 93,
          "message": "Adom theme and extensions in place",
          "ok": true
        },
        {
          "check": "extension-host",
          "duration_ms": 92,
          "message": "Extension host running",
          "ok": true
        },
        {
          "check": "docker",
          "details": {
            "runtime": "macos"
          },
          "duration_ms": 0,
          "message": "N/A — backend is the Adom-Workspace machine (not Docker)",
          "ok": true
        },
        {
          "check": "api-key",
          "duration_ms": 96,
          "error": "Cannot read API key: ",
          "fix": "Inject the api-key into the workspace machine (POST /setup/step/inject-api-key).",
          "message": "api-key failed",
          "ok": false
        },
        {
          "check": "env-vars",
          "details": {
            "ADOM_BRIDGE_MODE": "local",
            "ADOM_CARBON_URL": "http://adom-host:47083",
            "ADOM_HYDROGEN_URL": "http://adom-host:47083",
            "VSCODE_PROXY_URI": "http://localhost:7390/proxy/{{port}}/"
          },
          "duration_ms": 92,
          "message": "All 4 required vars set",
          "ok": true
        },
        {
          "check": "adom-cli",
          "details": {
            "output": "/usr/local/bin/adom-cli\n{\n  \"carbon_url\": null,\n  \"hydrogen_url\": null,\n  \"api_token\": null\n}\ntoken_source: none"
          },
          "duration_ms": 144,
          "message": "adom-cli installed and configured",
          "ok": true
        },
        {
          "check": "adom-cli-api",
          "details": {
            "output": "Checking Carbon API at http://adom-host:47083...\nCarbon API is up:\n{\n  \"browser_connected\": true,\n  \"carbon_reachable\": true,\n  \"ok\": true,\n  \"service\": \"hydrogen-proxy\",\n  \"sse_connections\": 1,\n  \"window_mode\": \"webview\"\n}"
          },
          "duration_ms": 286,
          "message": "Carbon API reachable via adom-cli",
          "ok": true
        },
        {
          "check": "sse",
          "details": {
            "browser_connected": true,
            "sse_connections": 1,
            "window_mode": "webview"
          },
          "duration_ms": 0,
          "message": "1 SSE connection(s), browser_connected=true",
          "ok": true
        },
        {
          "check": "webview",
          "details": {
            "latency_ms": 0,
            "method": "read-only GET (no test tab)"
          },
          "duration_ms": 0,
          "message": "Workspace tab API reachable (0ms)",
          "ok": true
        },
        {
          "check": "code-server",
          "duration_ms": 0,
          "error": "Cannot reach code-server on :7390: error sending request for url (http://127.0.0.1:7390/)",
          "fix": "Ensure the Adom-Workspace machine + code-server are running.",
          "message": "code-server failed",
          "ok": false
        },
        {
          "check": "extensions",
          "details": {
            "count": 5,
            "extensions": [
              "adom.adom-agent-bar-0.2.7",
              "adom.adom-theme-2.3.7",
              "adom.adom-vscode-1.1.113",
              "anthropic.claude-code-2.1.270-linux-arm64",
              "openai.chatgpt-26.5825.51511"
            ]
          },
          "duration_ms": 100,
          "message": "adom.adom-vscode + anthropic.claude-code installed",
          "ok": true
        },
        {
          "check": "skills",
          "details": {
            "skill_count": 166,
            "skill_md_exists": true
          },
          "duration_ms": 188,
          "message": "166 skills deployed",
          "ok": true
        },
        {
          "check": "relay",
          "duration_ms": 91,
          "error": "Relay health check failed: ",
          "fix": "Ensure adom-bridge relay is running inside the container on port 8766.",
          "message": "relay failed",
          "ok": false
        },
        {
          "check": "ports",
          "duration_ms": 0,
          "error": "Inaccessible ports: code-server (7390)",
          "fix": "Ensure the Adom-Workspace machine is running and the proxy is up.",
          "message": "ports failed",
          "ok": false
        },
        {
          "check": "identity",
          "details": {
            "source": "adom-cli carbon user get",
            "user": "<email>"
          },
          "duration_ms": 345,
          "message": "user=<email> (from adom-cli; no legacy adom-identity.json, expected on macOS)",
          "ok": true
        },
        {
          "check": "adom-bridge",
          "duration_ms": 0,
          "error": "Relay HTTP unreachable via code-server proxy (:7390/proxy/8766/)",
          "fix": "Ensure the adom-bridge relay is running in the container and code-server is accessible.",
          "message": "adom-bridge failed",
          "ok": false
        },
        {
          "check": "port-integrity",
          "duration_ms": 0,
          "error": "code-server is not serving",
          "fix": "Run the Doctor's Fix (wake-heal) to restart code-server; if it persists, restart the workspace.",
          "message": "port-integrity failed",
          "ok": false
        }
      ],
      "duration_ms": 877,
      "failed": 6,
      "ok": false,
      "passed": 10,
      "total": 16
    },
    "duration_ms": 1059,
    "fix_ran": false,
    "ok": false,
    "recommend_workspace_restart": false,
    "still_failing": 6
  },
  "health": {
    "_hints": {
      "eval": "POST /eval with {\"js\":\"...\"} returns the JS result. Use for DOM queries. Never use /eval to click buttons — use /ai-cursor/click instead.",
      "next": "Check /workspace/health for the editor, /container-status for Docker state, /claude/status for Claude auth, /diagnostics/all for full system health",
      "related": [
        "/workspace/health",
        "/buildinfo",
        "/ports",
        "/container-status",
        "/claude/status",
        "/diagnostics/all",
        "/docker/status"
      ]
    },
    "build_dirty": "true",
    "build_epoch": "1793212240",
    "build_local": "Oct 28 1:30 PM",
    "build_sha": "778d0341b2e41d6c68fd4d730e67ebb878543640",
    "narrative": "Hydrogen control API is up. Running exe is build 778d0341b2e41d6c68fd4d730e67ebb878543640 (built Oct 28 1:30 PM). Compare build_sha to `git rev-parse HEAD` to confirm it's the code you shipped.",
    "ok": true,
    "port": 47084,
    "service": "adom-hydrogen-control"
  },
  "hydrogen": {
    "build_stamp": "778d0341b2e41d6c68fd4d730e67ebb878543640-dirty-1793212240",
    "channel": null,
    "flavor": null,
    "tier": null,
    "version": "0.1.422"
  },
  "machine": {
    "arch": "aarch64",
    "chip": "Apple M4",
    "macos_build": "25G332",
    "macos_version": "26.7.2",
    "mem_gb": 24,
    "model": "Mac16,12"
  },
  "setup": {
    "steps": [],
    "total_ms": null
  },
  "setup_state": {
    "_hints": {
      "note": "Setup state: 'never-run' | 'in-progress' | 'complete' | 'error'. POST /setup/state to update. POST /setup/run-all to re-trigger full setup.",
      "related": [
        "/setup-status",
        "/setup/trigger",
        "/setup/step/<id>"
      ]
    },
    "ok": true,
    "state": "complete"
  },
  "updater": {
    "_hints": {
      "note": "Hydrogen frontend update status. `current_version` vs `latest_version`; `update_available`=true means a newer Hydrogen exists. `staged`=true means it's already downloaded+verified, so POST /updater/install is an INSTANT relaunch. Tell the user both versions and ask before installing.",
      "related": [
        "/updater/install",
        "/buildinfo"
      ]
    },
    "ok": true,
    "updater": {
      "below_floor": false,
      "changelog_url": null,
      "channel": "stable",
      "current_version": "0.1.422",
      "flavor": "public",
      "floor": null,
      "floor_notice": null,
      "last_check_at": "2026-10-30T19:04:58.263031+00:00",
      "last_check_error": null,
      "latest_version": "0.1.422",
      "staged": false,
      "staged_version": null,
      "tier": "insiders",
      "update_available": false
    }
  }
}