{
  "schemaVersion": 1,
  "capturedAtUTC": "2026-10-19T22:53:17.353438+00:00",
  "subject": "Backend disconnected and MCP failed dots use the existing semantic status-error fill",
  "sourceFiles": [
    "src/components/features/backends/backend-status-dot.tsx",
    "src/components/features/mcp-page/mcp-server-health.tsx"
  ],
  "themes": [
    "openhands-neutral",
    "openhands-deepsea",
    "openhands-neo",
    "light-plus",
    "solarized-light"
  ],
  "viewports": {
    "desktop": {
      "width": 1440,
      "height": 1000
    },
    "phone": {
      "width": 390,
      "height": 844
    }
  },
  "method": {
    "driver": "Checked-in .agents/skills/verify-openhands/scripts/control-openhands, unmodified",
    "application": "Real standalone Agent Canvas with actual pinned Agent Server/SDK; no mocks, request interception, fake responses, proxy, or localStorage seeding",
    "backendFailure": "Use actual Add Backend UI to register a running isolated secondary with its own private key file; switch back to healthy Local; stop only secondary; open Manage Backends and wait for its real probe failure. Original dark before endpoint18810; corrected light before endpoint18830; after endpoint18820. Main UI stack stayed healthy.",
    "mcpFailure": "Real settings API arranges disabled qa_broken with transport stdio and command qa-no-such-command; actual card Test connection/Retry reaches failed command-spawn response. API arrangement is a precondition; UI action and rendered result are proof.",
    "themeSelection": "Actual /settings/app color-theme-input and option selection; instant theme change through real UI",
    "contrast": "getComputedStyle/ancestor inspection is read-only; screenshot center pixel of the8px dot compared with median of three adjacent pixels3CSSpx to its left; WCAG relative luminance, required nontext threshold3:1. All40 selected pairs pass. No gradient/pseudo-background observed at the sampled target surfaces.",
    "behavior": "All20 paired states, labels (normalizing only owned endpoint URLs), actions and ARIA properties match. Backend rows remain disabled; MCP Retry remains enabled. All dot bounds inside viewport."
  },
  "privacyReview": {
    "keyEntryRecorded": false,
    "publishedKeyValues": false,
    "notes": "Recordings began after backend forms/key entry were closed. Screenshots contain only run-owned fixture names, loopback URLs and public integration cards. Browser profile, keys and settings state remain private; non-baseline private state purged after capture. Parent baseline private state left intact."
  },
  "limits": [
    "This is a semantic-role migration; baseline dot contrast already passed3:1. Do not describe the evidence as fixing a reproduced WCAG threshold failure.",
    "No model execution was required or performed. First Before and After runs had no LLM API key. Parent configured its baseline LLM before corrected light-theme captures; no model call was made and the health-dot rendering does not consume model configuration.",
    "Live representative surfaces are Manage Backends rows and installed MCP health cards. Existing focused tests cover selector, edit, API-key/retry and cloud remote/stdio visibility branches. No authenticated Cloud, ACP session or custom embedded-host visual pass is claimed.",
    "Expected requests to stopped secondary endpoints generate network/CORS diagnostics. Main stacks passed doctor before/after capture. MCP missing-command test is an expected backend-level failure, not a simulated response."
  ],
  "verification": {
    "pairedCaptures": 20,
    "screenshots": 40,
    "allStatesLabelsActionsAriaRetained": true,
    "allNontextContrastAtLeast3": true,
    "allDotsInsideViewport": true,
    "existingFocusedTests": 112,
    "targetLintBefore": {
      "errors": 0,
      "warnings": 2
    },
    "targetLintAfter": {
      "errors": 0,
      "warnings": 0
    }
  },
  "before": {
    "sha": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
    "servedBuildFingerprint": "82868222f7e79663",
    "agentServer": "1.56.0",
    "sdk": "1.56.0",
    "captureCount": 20,
    "minimumNontextContrast": 3.107468707148314,
    "matrix": "health-dots-before-matrix.json"
  },
  "after": {
    "sha": "123afde75d2c94caff4b3a0e31fae2b461d20857",
    "servedBuildFingerprint": "e194956296a8320c",
    "agentServer": "1.56.0",
    "sdk": "1.56.0",
    "captureCount": 20,
    "minimumNontextContrast": 3.774739983801738,
    "matrix": "health-dots-after-matrix.json"
  },
  "comparison": "health-dots-comparison.json",
  "authoritativeCaptureManifestSha256": "76e62644886f0fb6e0d822a6be02191eb7d6ca6ddfb4a549728a217ff9352f15",
  "scope": {
    "liveSurfaces": [
      "F17.server-health installed MCP card",
      "F25.health-status Manage Backends rows"
    ],
    "themes": 5,
    "viewports": [
      "desktop",
      "phone"
    ],
    "selectedScreenshots": 40,
    "excludedScreenshots": 8,
    "noModelExecution": true,
    "host": "standalone Agent Canvas",
    "cloudAcpEmbeddedVisualPass": false
  },
  "superseded": {
    "excludedCaptureCount": 8,
    "reason": "Launching the after stack reused the first stopped secondary port18810 before the final two Before themes completed. Original Light+/Solarized backend shots therefore show genuine wrong-API-key disconnection with a version badge, rather than the intended network-refused state. These eight original light-theme shots remain on disk and are excluded from the paired comparison. Eight before-corrected shots on distinct stopped18830 replace them; three original dark themes and the initial Before raw video retain genuine network failure.",
    "publication": "Original wrong-cause Light+/Solarized screenshots are excluded. Public matrices use corrected, paired captures on the distinct stopped endpoint."
  },
  "rawMedia": [
    {
      "phase": "before",
      "path": "health-dots-before-raw.mp4",
      "sha256": "25abd43cc3e961a464ed5fd566c97585cead7f516997007a8a0888db8a8ffe8f",
      "bytes": 197525
    },
    {
      "phase": "after",
      "path": "health-dots-after-raw.mp4",
      "sha256": "47efd041bedd7745e66545cc05f8991ade1a04371d02234263539b7fd4f61296",
      "bytes": 187060
    }
  ],
  "screenshots": {
    "health-dots-evidence/before-openhands-neutral-mcp-desktop.png": {
      "sha256": "171e6d54f53f07b763b1fef0dec15e658da61060b0620fa7baf3ef8785788f89",
      "bytes": 140660,
      "phase": "before",
      "theme": "openhands-neutral",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-openhands-neutral-backend-desktop.png": {
      "sha256": "39851e9c162de1ea74fc55520512b6b06993fcd3f16de7b06fd6e759d8eb2fa6",
      "bytes": 137835,
      "phase": "before",
      "theme": "openhands-neutral",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-openhands-neutral-mcp-phone.png": {
      "sha256": "d77f3866278a4e1d3e973116e40e0aaa1037a8da9be8e155ba8695315de53483",
      "bytes": 44892,
      "phase": "before",
      "theme": "openhands-neutral",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/before-openhands-neutral-backend-phone.png": {
      "sha256": "2a38affd697f3c29b9eb06a05f4aab79aa9287c026ae414a68b7cd7ffa4cdbaf",
      "bytes": 48972,
      "phase": "before",
      "theme": "openhands-neutral",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/before-openhands-deepsea-mcp-desktop.png": {
      "sha256": "696805bc3cf0faf01a86a637fc11d3c63ce7316c857f23dfb7dfb793c1a6ffc7",
      "bytes": 159711,
      "phase": "before",
      "theme": "openhands-deepsea",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-openhands-deepsea-backend-desktop.png": {
      "sha256": "04500d8b246c9368a2e47cd5c570f192db2ea19ba7ca709ec968b73a9fb708ff",
      "bytes": 162556,
      "phase": "before",
      "theme": "openhands-deepsea",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-openhands-deepsea-mcp-phone.png": {
      "sha256": "f070b054b637edfe98f940d34b0bb8121abb46d278305710444b43f5ecd76d45",
      "bytes": 51940,
      "phase": "before",
      "theme": "openhands-deepsea",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/before-openhands-deepsea-backend-phone.png": {
      "sha256": "39e1b6a0e9d57b6fdb4e5b16368e28e9a291d6767fc085c5e2279e4bda26ac16",
      "bytes": 55616,
      "phase": "before",
      "theme": "openhands-deepsea",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/before-openhands-neo-mcp-desktop.png": {
      "sha256": "988f50a45d6d5849c6ffcede8b5ab0bdd4a86737e50e8cfb54c885ebbd2079c0",
      "bytes": 140620,
      "phase": "before",
      "theme": "openhands-neo",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-openhands-neo-backend-desktop.png": {
      "sha256": "35d77cfe6713ded312733ca10bd6c1fcc77e76042aef0fb7a26c4d53ba397b2b",
      "bytes": 137562,
      "phase": "before",
      "theme": "openhands-neo",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-openhands-neo-mcp-phone.png": {
      "sha256": "d77f3866278a4e1d3e973116e40e0aaa1037a8da9be8e155ba8695315de53483",
      "bytes": 44892,
      "phase": "before",
      "theme": "openhands-neo",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/before-openhands-neo-backend-phone.png": {
      "sha256": "2e6bcc50cf906faa36a90b0e2d91dea6f4a1459b21e5caf3eabdca1f8f63c15f",
      "bytes": 48666,
      "phase": "before",
      "theme": "openhands-neo",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/before-light-plus-mcp-desktop.png": {
      "sha256": "2aeedbcf46061f17305f3a0dacad6547a5d23857c82e2c43d335bb3e2082f6d6",
      "bytes": 141782,
      "phase": "before-corrected",
      "theme": "light-plus",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-light-plus-backend-desktop.png": {
      "sha256": "0549de9a0011894254b8c838a79822156392553efa8d829bfed48fac32a9b0b6",
      "bytes": 140889,
      "phase": "before-corrected",
      "theme": "light-plus",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-light-plus-mcp-phone.png": {
      "sha256": "bd210646cab8a79e78e1eda0b19bcbc48c91ec22c1cd5a77fe7ece76167c6412",
      "bytes": 44912,
      "phase": "before-corrected",
      "theme": "light-plus",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/before-light-plus-backend-phone.png": {
      "sha256": "d222c0c935a1be2b112e04d714d8d77370935a22bf2281b7558ae1b4483f1fd7",
      "bytes": 49947,
      "phase": "before-corrected",
      "theme": "light-plus",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/before-solarized-light-mcp-desktop.png": {
      "sha256": "777d8b3085c1ca50f13df34c895a03106acdd39eff0ddc82aa86330c346b639f",
      "bytes": 153529,
      "phase": "before-corrected",
      "theme": "solarized-light",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-solarized-light-backend-desktop.png": {
      "sha256": "e3727eae366ff100ba95ef122400a3de1df5cbe7e3e57375adc4c98ae2d6bab8",
      "bytes": 154269,
      "phase": "before-corrected",
      "theme": "solarized-light",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/before-solarized-light-mcp-phone.png": {
      "sha256": "3615ee7bd658935184711269d7b733b850ab448143b645a834ca28588d78c490",
      "bytes": 49693,
      "phase": "before-corrected",
      "theme": "solarized-light",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/before-solarized-light-backend-phone.png": {
      "sha256": "2538a1377ba87d68b70d96ec0cba751f5ba2763382f3c2573a9649f6561b4140",
      "bytes": 54431,
      "phase": "before-corrected",
      "theme": "solarized-light",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/after-openhands-neutral-mcp-desktop.png": {
      "sha256": "a422be85a29ab39e63e57188b1eceb8658207a49652c8f16165a029391877f41",
      "bytes": 144589,
      "phase": "after",
      "theme": "openhands-neutral",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-openhands-neutral-backend-desktop.png": {
      "sha256": "1ffdba8125c2ebb922141396a615b386d7b29a3f2adaf726c1adf011147aa5f8",
      "bytes": 141868,
      "phase": "after",
      "theme": "openhands-neutral",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-openhands-neutral-mcp-phone.png": {
      "sha256": "af74b0632b7e04368f7ea00567d27901cb5a4b72e45d7534eb1c969b9bfa9c62",
      "bytes": 46160,
      "phase": "after",
      "theme": "openhands-neutral",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/after-openhands-neutral-backend-phone.png": {
      "sha256": "3a68862206fafb591d0f0ae85bcbe637059963e1590f09ab6d436495e23f8c3d",
      "bytes": 50203,
      "phase": "after",
      "theme": "openhands-neutral",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/after-openhands-deepsea-mcp-desktop.png": {
      "sha256": "e47510d3e1d2cbcbe116363e20dd997e69695e99f9034fad38223955e69562bc",
      "bytes": 167262,
      "phase": "after",
      "theme": "openhands-deepsea",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-openhands-deepsea-backend-desktop.png": {
      "sha256": "6cb11dd1758e2f10c6c3c574ed46da2d290c3eca2986e2a97a1dc3c159d090b5",
      "bytes": 167451,
      "phase": "after",
      "theme": "openhands-deepsea",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-openhands-deepsea-mcp-phone.png": {
      "sha256": "f976c1252dbcdc7e9bef271dfa561496585a91ffa478c9edab4ca1a541715825",
      "bytes": 54813,
      "phase": "after",
      "theme": "openhands-deepsea",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/after-openhands-deepsea-backend-phone.png": {
      "sha256": "fc71a4264e79239664cf6d5378c45c48e8f7642547f97402cfff4678212cdb7d",
      "bytes": 57606,
      "phase": "after",
      "theme": "openhands-deepsea",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/after-openhands-neo-mcp-desktop.png": {
      "sha256": "5632798d7089fcfeefecedc0f694b50e2385d120158371721e5f38a0d21e2399",
      "bytes": 144511,
      "phase": "after",
      "theme": "openhands-neo",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-openhands-neo-backend-desktop.png": {
      "sha256": "b121a82e6fcef3099bf4a9f2d2b7da464a5ecefba62c6ac1468ebc8201695f57",
      "bytes": 141533,
      "phase": "after",
      "theme": "openhands-neo",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-openhands-neo-mcp-phone.png": {
      "sha256": "af74b0632b7e04368f7ea00567d27901cb5a4b72e45d7534eb1c969b9bfa9c62",
      "bytes": 46160,
      "phase": "after",
      "theme": "openhands-neo",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/after-openhands-neo-backend-phone.png": {
      "sha256": "9ca37a5cb456a1acf080f527f0b2dc1726116979c37bd6d49ade7435968c4786",
      "bytes": 49776,
      "phase": "after",
      "theme": "openhands-neo",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/after-light-plus-mcp-desktop.png": {
      "sha256": "f33b479b772ca6821c92607a83401de0142f0a83abe1351ffd873e1e75fbd30c",
      "bytes": 145826,
      "phase": "after",
      "theme": "light-plus",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-light-plus-backend-desktop.png": {
      "sha256": "30e037a15ca92816068b7c2f99ce5cc34b978bfd9c5bb0e0857c5038638779a9",
      "bytes": 144738,
      "phase": "after",
      "theme": "light-plus",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-light-plus-mcp-phone.png": {
      "sha256": "97b89369babd466333c93c6926650a92753ff6799bcec254a75e802d0167ef2e",
      "bytes": 46166,
      "phase": "after",
      "theme": "light-plus",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/after-light-plus-backend-phone.png": {
      "sha256": "f7fd52eaf0faef78503b44a885661a2b9edc81042989a931e8e941faea10c45b",
      "bytes": 51125,
      "phase": "after",
      "theme": "light-plus",
      "kind": "backend",
      "viewport": "phone"
    },
    "health-dots-evidence/after-solarized-light-mcp-desktop.png": {
      "sha256": "3cb8a8f550f27b8805fc8cb6a66f6c58d0c24810f348c6b8bd18d48ff09edd1b",
      "bytes": 162172,
      "phase": "after",
      "theme": "solarized-light",
      "kind": "mcp",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-solarized-light-backend-desktop.png": {
      "sha256": "dc01f61b33d93b46921299a7c375beab46fa7b3891d4b821ab789482876334c7",
      "bytes": 160662,
      "phase": "after",
      "theme": "solarized-light",
      "kind": "backend",
      "viewport": "desktop"
    },
    "health-dots-evidence/after-solarized-light-mcp-phone.png": {
      "sha256": "44f25637583e394e08707e3cc50ac30c6e4b0c7c2fc25732706caaf192b57e30",
      "bytes": 52641,
      "phase": "after",
      "theme": "solarized-light",
      "kind": "mcp",
      "viewport": "phone"
    },
    "health-dots-evidence/after-solarized-light-backend-phone.png": {
      "sha256": "fad2f8b4d631419f3d6b210e510ee24fa7dca4355f61fbccb951b44b6c690f34",
      "bytes": 56454,
      "phase": "after",
      "theme": "solarized-light",
      "kind": "backend",
      "viewport": "phone"
    }
  },
  "derivedDetails": [
    {
      "phase": "before",
      "kind": "mcp",
      "file": "health-dots-before-mcp-detail.png",
      "sha256": "837d9ed2d931496c2d29a780847f72755be1d31247ee04603e41acedeeee0cb5",
      "parent": "health-dots-evidence/before-light-plus-mcp-desktop.png",
      "parentSha256": "2aeedbcf46061f17305f3a0dacad6547a5d23857c82e2c43d335bb3e2082f6d6",
      "cropPixels": [
        640,
        222,
        383,
        167
      ],
      "note": "Lossless rectangular crop from the original actual app screenshot; no UI added or repainted."
    },
    {
      "phase": "after",
      "kind": "mcp",
      "file": "health-dots-after-mcp-detail.png",
      "sha256": "2cae4577c82af84777bf0b8445838e3d193fdd97e390682283a659d1b86d6be7",
      "parent": "health-dots-evidence/after-light-plus-mcp-desktop.png",
      "parentSha256": "f33b479b772ca6821c92607a83401de0142f0a83abe1351ffd873e1e75fbd30c",
      "cropPixels": [
        640,
        222,
        383,
        167
      ],
      "note": "Lossless rectangular crop from the original actual app screenshot; no UI added or repainted."
    },
    {
      "phase": "before",
      "kind": "backend",
      "file": "health-dots-before-backend-detail.png",
      "sha256": "ba62d12c7708442e131b096c46f8d1db34ca0359eea5c4a79d4b442105d86c5b",
      "parent": "health-dots-evidence/before-light-plus-backend-desktop.png",
      "parentSha256": "0549de9a0011894254b8c838a79822156392553efa8d829bfed48fac32a9b0b6",
      "cropPixels": [
        420,
        474,
        600,
        126
      ],
      "note": "Lossless rectangular crop from the original actual app screenshot; no UI added or repainted."
    },
    {
      "phase": "after",
      "kind": "backend",
      "file": "health-dots-after-backend-detail.png",
      "sha256": "2083134535d45ad8aaeb2dcbfa3e5f083f6a2613fcc62f961b9eacc129742d30",
      "parent": "health-dots-evidence/after-light-plus-backend-desktop.png",
      "parentSha256": "30e037a15ca92816068b7c2f99ce5cc34b978bfd9c5bb0e0857c5038638779a9",
      "cropPixels": [
        420,
        474,
        600,
        126
      ],
      "note": "Lossless rectangular crop from the original actual app screenshot; no UI added or repainted."
    }
  ]
}
