{
  "beforeRevision": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
  "afterRevision": "123afde75d2c94caff4b3a0e31fae2b461d20857",
  "agentServer": "1.56.0",
  "sdk": "1.56.0",
  "builds": {
    "before": "82868222f7e79663",
    "after": "e194956296a8320c"
  },
  "captureProvenance": "health-dots-capture-provenance.json",
  "captureProvenanceSha256": "fafb0d3b5b3031d5cd81697fcf3b8bb73644c2b883776313bee38afa75c3b501",
  "evidenceDownload": "health-dots-evidence.zip",
  "evidenceDownloadSha256": "463af5cdf825695aae0b417cc8737a154e7809c298e83ef9cefb248ef1a8b512",
  "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
  },
  "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."
  ],
  "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."
  },
  "summary": "Semantic-role migration to existing status-error fill. Baseline already met 3:1; minimum sampled nontext contrast changes from 3.107 to 3.774 across 40 selected screenshots.",
  "implementation": {
    "sourceFiles": [
      "src/components/features/backends/backend-status-dot.tsx",
      "src/components/features/mcp-page/mcp-server-health.tsx"
    ],
    "behavior": "Theme-owned failure dots retain actual failed/disconnected states, labels and controls."
  },
  "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
    }
  ],
  "page": "https://enyst.github.io/arch/agentic-linting-refactoring.html#health-dots-film",
  "directDownload": "https://enyst.github.io/experiments/agentic-linting-refactoring/health-dots-before-after.mp4",
  "title": "Theme-aware failure dots",
  "recipeSha256": "3b7356b6406bfec8636bbfc19b0d7fca5558c1f43266fd13c2b751c5be2c7e83",
  "film": {
    "file": "health-dots-before-after.mp4",
    "dimensions": [
      1440,
      1120
    ],
    "durationSeconds": 54.2,
    "framesPerSecond": 20,
    "source": "Authentic control-openhands browser receipts. Complete app viewports are established before any explicitly labeled actual screenshot Detail crops. Title cards and banners are editorial labels, not execution proof.",
    "scenes": [
      {
        "phase": "before",
        "kind": "recording",
        "publicSourcePath": "health-dots-before-raw.mp4",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "MCP health \u00b7 Neutral \u00b7 Desktop \u00b7 Normal-speed recording",
        "caption": "Before: MCP health failure in the real app. Normal-speed recording; final frame may be held.",
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual missing-command MCP failure and real stopped-secondary backend probe.",
        "source": "health-dots-before-raw.mp4",
        "sourceSha256": "25abd43cc3e961a464ed5fd566c97585cead7f516997007a8a0888db8a8ffe8f",
        "sourceBytes": 197525,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          1.8,
          4.8
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": 19.8,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 0.0
      },
      {
        "phase": "after",
        "kind": "recording",
        "publicSourcePath": "health-dots-after-raw.mp4",
        "label": "After \u00b7 Theme error role",
        "subtitle": "MCP health \u00b7 Neutral \u00b7 Desktop \u00b7 Normal-speed recording",
        "caption": "After: MCP health failure in the real app. Normal-speed recording; final frame may be held.",
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual missing-command MCP failure and real stopped-secondary backend probe.",
        "source": "health-dots-after-raw.mp4",
        "sourceSha256": "47efd041bedd7745e66545cc05f8991ade1a04371d02234263539b7fd4f61296",
        "sourceBytes": 187060,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          4.8,
          7.8
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": 6.3,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 0.0
      },
      {
        "phase": "before",
        "kind": "recording",
        "publicSourcePath": "health-dots-before-raw.mp4",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "Backend health \u00b7 Neutral \u00b7 Desktop \u00b7 Normal-speed recording",
        "caption": "Before: Backend health failure in the real app. Normal-speed recording; final frame may be held.",
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual missing-command MCP failure and real stopped-secondary backend probe.",
        "source": "health-dots-before-raw.mp4",
        "sourceSha256": "25abd43cc3e961a464ed5fd566c97585cead7f516997007a8a0888db8a8ffe8f",
        "sourceBytes": 197525,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          7.8,
          11.0
        ],
        "selectedSourceStartSeconds": 17.4,
        "sourceDurationSeconds": 19.8,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 0.8
      },
      {
        "phase": "after",
        "kind": "recording",
        "publicSourcePath": "health-dots-after-raw.mp4",
        "label": "After \u00b7 Theme error role",
        "subtitle": "Backend health \u00b7 Neutral \u00b7 Desktop \u00b7 Normal-speed recording",
        "caption": "After: Backend health failure in the real app. Normal-speed recording; final frame may be held.",
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual missing-command MCP failure and real stopped-secondary backend probe.",
        "source": "health-dots-after-raw.mp4",
        "sourceSha256": "47efd041bedd7745e66545cc05f8991ade1a04371d02234263539b7fd4f61296",
        "sourceBytes": 187060,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          11.0,
          14.2
        ],
        "selectedSourceStartSeconds": 3.9,
        "sourceDurationSeconds": 6.3,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 0.8
      },
      {
        "phase": "before",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/before-light-plus-mcp-desktop.png",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "MCP health \u00b7 Light+ \u00b7 Desktop \u00b7 Screenshot hold",
        "caption": "Before: Light+, desktop, failed MCP card. Screenshot hold.",
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/before-light-plus-mcp-desktop.png",
        "sourceSha256": "2aeedbcf46061f17305f3a0dacad6547a5d23857c82e2c43d335bb3e2082f6d6",
        "sourceBytes": 141782,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          14.2,
          17.7
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "after",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/after-light-plus-mcp-desktop.png",
        "label": "After \u00b7 Theme error role",
        "subtitle": "MCP health \u00b7 Light+ \u00b7 Desktop \u00b7 Screenshot hold",
        "caption": "After: Light+, desktop, failed MCP card. Screenshot hold.",
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/after-light-plus-mcp-desktop.png",
        "sourceSha256": "f33b479b772ca6821c92607a83401de0142f0a83abe1351ffd873e1e75fbd30c",
        "sourceBytes": 145826,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          17.7,
          21.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "before",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/before-solarized-light-mcp-phone.png",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "MCP health \u00b7 Solarized Light \u00b7 Phone \u00b7 Screenshot hold",
        "caption": "Before: Solarized Light, phone, failed MCP card. Screenshot hold.",
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/before-solarized-light-mcp-phone.png",
        "sourceSha256": "3615ee7bd658935184711269d7b733b850ab448143b645a834ca28588d78c490",
        "sourceBytes": 49693,
        "sourceDimensions": [
          390,
          844
        ],
        "timelineSeconds": [
          21.2,
          24.7
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "after",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/after-solarized-light-mcp-phone.png",
        "label": "After \u00b7 Theme error role",
        "subtitle": "MCP health \u00b7 Solarized Light \u00b7 Phone \u00b7 Screenshot hold",
        "caption": "After: Solarized Light, phone, failed MCP card. Screenshot hold.",
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/after-solarized-light-mcp-phone.png",
        "sourceSha256": "44f25637583e394e08707e3cc50ac30c6e4b0c7c2fc25732706caaf192b57e30",
        "sourceBytes": 52641,
        "sourceDimensions": [
          390,
          844
        ],
        "timelineSeconds": [
          24.7,
          28.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "before",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/before-light-plus-backend-desktop.png",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "Backend health \u00b7 Light+ \u00b7 Desktop \u00b7 Screenshot hold",
        "caption": "Before: Light+, desktop, disconnected backend row. Screenshot hold.",
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/before-light-plus-backend-desktop.png",
        "sourceSha256": "0549de9a0011894254b8c838a79822156392553efa8d829bfed48fac32a9b0b6",
        "sourceBytes": 140889,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          28.2,
          31.7
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "after",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/after-light-plus-backend-desktop.png",
        "label": "After \u00b7 Theme error role",
        "subtitle": "Backend health \u00b7 Light+ \u00b7 Desktop \u00b7 Screenshot hold",
        "caption": "After: Light+, desktop, disconnected backend row. Screenshot hold.",
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/after-light-plus-backend-desktop.png",
        "sourceSha256": "30e037a15ca92816068b7c2f99ce5cc34b978bfd9c5bb0e0857c5038638779a9",
        "sourceBytes": 144738,
        "sourceDimensions": [
          1440,
          1000
        ],
        "timelineSeconds": [
          31.7,
          35.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "before",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/before-solarized-light-backend-phone.png",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "Backend health \u00b7 Solarized Light \u00b7 Phone \u00b7 Screenshot hold",
        "caption": "Before: Solarized Light, phone, disconnected backend row. Screenshot hold.",
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/before-solarized-light-backend-phone.png",
        "sourceSha256": "2538a1377ba87d68b70d96ec0cba751f5ba2763382f3c2573a9649f6561b4140",
        "sourceBytes": 54431,
        "sourceDimensions": [
          390,
          844
        ],
        "timelineSeconds": [
          35.2,
          38.7
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "after",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-evidence/after-solarized-light-backend-phone.png",
        "label": "After \u00b7 Theme error role",
        "subtitle": "Backend health \u00b7 Solarized Light \u00b7 Phone \u00b7 Screenshot hold",
        "caption": "After: Solarized Light, phone, disconnected backend row. Screenshot hold.",
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Matched failed/disconnected state; controls, label, ARIA and viewport bounds retained.",
        "source": "health-dots-evidence/after-solarized-light-backend-phone.png",
        "sourceSha256": "fad2f8b4d631419f3d6b210e510ee24fa7dca4355f61fbccb951b44b6c690f34",
        "sourceBytes": 56454,
        "sourceDimensions": [
          390,
          844
        ],
        "timelineSeconds": [
          38.7,
          42.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Full real viewport, proportionally fitted below a separate editorial banner.",
        "stillOrHeldSeconds": 3.5
      },
      {
        "phase": "before",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-before-mcp-detail.png",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "Detail \u00b7 MCP card \u00b7 Light+",
        "caption": "Before: MCP card detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role.",
        "actualDetailCrop": true,
        "detailOf": "health-dots-evidence/before-light-plus-mcp-desktop.png",
        "detailOfSha256": "2aeedbcf46061f17305f3a0dacad6547a5d23857c82e2c43d335bb3e2082f6d6",
        "detailCropPixels": [
          640,
          222,
          383,
          167
        ],
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual MCP card crop after full app context; no UI synthesized.",
        "source": "health-dots-before-mcp-detail.png",
        "sourceSha256": "837d9ed2d931496c2d29a780847f72755be1d31247ee04603e41acedeeee0cb5",
        "sourceBytes": 12518,
        "sourceDimensions": [
          383,
          167
        ],
        "timelineSeconds": [
          42.2,
          45.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Actual screenshot detail crop, proportionally enlarged below a separate editorial banner; full viewport established earlier.",
        "stillOrHeldSeconds": 3.0
      },
      {
        "phase": "after",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-after-mcp-detail.png",
        "label": "After \u00b7 Theme error role",
        "subtitle": "Detail \u00b7 MCP card \u00b7 Light+",
        "caption": "After: MCP card detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role.",
        "actualDetailCrop": true,
        "detailOf": "health-dots-evidence/after-light-plus-mcp-desktop.png",
        "detailOfSha256": "f33b479b772ca6821c92607a83401de0142f0a83abe1351ffd873e1e75fbd30c",
        "detailCropPixels": [
          640,
          222,
          383,
          167
        ],
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual MCP card crop after full app context; no UI synthesized.",
        "source": "health-dots-after-mcp-detail.png",
        "sourceSha256": "2cae4577c82af84777bf0b8445838e3d193fdd97e390682283a659d1b86d6be7",
        "sourceBytes": 13116,
        "sourceDimensions": [
          383,
          167
        ],
        "timelineSeconds": [
          45.2,
          48.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Actual screenshot detail crop, proportionally enlarged below a separate editorial banner; full viewport established earlier.",
        "stillOrHeldSeconds": 3.0
      },
      {
        "phase": "before",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-before-backend-detail.png",
        "label": "Before \u00b7 Fixed palette red",
        "subtitle": "Detail \u00b7 Backend row \u00b7 Light+",
        "caption": "Before: Backend row detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role.",
        "actualDetailCrop": true,
        "detailOf": "health-dots-evidence/before-light-plus-backend-desktop.png",
        "detailOfSha256": "0549de9a0011894254b8c838a79822156392553efa8d829bfed48fac32a9b0b6",
        "detailCropPixels": [
          420,
          474,
          600,
          126
        ],
        "head": "8d39305538c1d17a30cbe477e57a0e18fcee7d95",
        "servedBuildFingerprint": "82868222f7e79663",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual Backend row crop after full app context; no UI synthesized.",
        "source": "health-dots-before-backend-detail.png",
        "sourceSha256": "ba62d12c7708442e131b096c46f8d1db34ca0359eea5c4a79d4b442105d86c5b",
        "sourceBytes": 16541,
        "sourceDimensions": [
          600,
          126
        ],
        "timelineSeconds": [
          48.2,
          51.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Actual screenshot detail crop, proportionally enlarged below a separate editorial banner; full viewport established earlier.",
        "stillOrHeldSeconds": 3.0
      },
      {
        "phase": "after",
        "kind": "screenshot",
        "publicSourcePath": "health-dots-after-backend-detail.png",
        "label": "After \u00b7 Theme error role",
        "subtitle": "Detail \u00b7 Backend row \u00b7 Light+",
        "caption": "After: Backend row detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role.",
        "actualDetailCrop": true,
        "detailOf": "health-dots-evidence/after-light-plus-backend-desktop.png",
        "detailOfSha256": "30e037a15ca92816068b7c2f99ce5cc34b978bfd9c5bb0e0857c5038638779a9",
        "detailCropPixels": [
          420,
          474,
          600,
          126
        ],
        "head": "123afde75d2c94caff4b3a0e31fae2b461d20857",
        "servedBuildFingerprint": "e194956296a8320c",
        "agentServer": "1.56.0",
        "sdk": "1.56.0",
        "scope": "Actual Backend row crop after full app context; no UI synthesized.",
        "source": "health-dots-after-backend-detail.png",
        "sourceSha256": "2083134535d45ad8aaeb2dcbfa3e5f083f6a2613fcc62f961b9eacc129742d30",
        "sourceBytes": 16881,
        "sourceDimensions": [
          600,
          126
        ],
        "timelineSeconds": [
          51.2,
          54.2
        ],
        "selectedSourceStartSeconds": 0.0,
        "sourceDurationSeconds": null,
        "presentation": "Actual screenshot detail crop, proportionally enlarged below a separate editorial banner; full viewport established earlier.",
        "stillOrHeldSeconds": 3.0
      }
    ],
    "chapters": [
      {
        "from": 0,
        "to": 1.8,
        "kind": "presentation-title",
        "caption": "Theme-aware failure dots"
      },
      {
        "from": 1.8,
        "to": 4.8,
        "kind": "recording",
        "caption": "Before: MCP health failure in the real app. Normal-speed recording; final frame may be held."
      },
      {
        "from": 4.8,
        "to": 7.8,
        "kind": "recording",
        "caption": "After: MCP health failure in the real app. Normal-speed recording; final frame may be held."
      },
      {
        "from": 7.8,
        "to": 11.0,
        "kind": "recording",
        "caption": "Before: Backend health failure in the real app. Normal-speed recording; final frame may be held."
      },
      {
        "from": 11.0,
        "to": 14.2,
        "kind": "recording",
        "caption": "After: Backend health failure in the real app. Normal-speed recording; final frame may be held."
      },
      {
        "from": 14.2,
        "to": 17.7,
        "kind": "screenshot",
        "caption": "Before: Light+, desktop, failed MCP card. Screenshot hold."
      },
      {
        "from": 17.7,
        "to": 21.2,
        "kind": "screenshot",
        "caption": "After: Light+, desktop, failed MCP card. Screenshot hold."
      },
      {
        "from": 21.2,
        "to": 24.7,
        "kind": "screenshot",
        "caption": "Before: Solarized Light, phone, failed MCP card. Screenshot hold."
      },
      {
        "from": 24.7,
        "to": 28.2,
        "kind": "screenshot",
        "caption": "After: Solarized Light, phone, failed MCP card. Screenshot hold."
      },
      {
        "from": 28.2,
        "to": 31.7,
        "kind": "screenshot",
        "caption": "Before: Light+, desktop, disconnected backend row. Screenshot hold."
      },
      {
        "from": 31.7,
        "to": 35.2,
        "kind": "screenshot",
        "caption": "After: Light+, desktop, disconnected backend row. Screenshot hold."
      },
      {
        "from": 35.2,
        "to": 38.7,
        "kind": "screenshot",
        "caption": "Before: Solarized Light, phone, disconnected backend row. Screenshot hold."
      },
      {
        "from": 38.7,
        "to": 42.2,
        "kind": "screenshot",
        "caption": "After: Solarized Light, phone, disconnected backend row. Screenshot hold."
      },
      {
        "from": 42.2,
        "to": 45.2,
        "kind": "screenshot",
        "caption": "Before: MCP card detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role."
      },
      {
        "from": 45.2,
        "to": 48.2,
        "kind": "screenshot",
        "caption": "After: MCP card detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role."
      },
      {
        "from": 48.2,
        "to": 51.2,
        "kind": "screenshot",
        "caption": "Before: Backend row detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role."
      },
      {
        "from": 51.2,
        "to": 54.2,
        "kind": "screenshot",
        "caption": "After: Backend row detail in Light+. Actual screenshot crop; only the failure dot adopts the existing theme error role."
      }
    ],
    "ambience": {
      "origin": "Original synthesized ambient pad; no external samples or provider.",
      "frequenciesHz": [
        174.61,
        220,
        261.63
      ],
      "amplitude": 0.004,
      "fadeInSeconds": 1.5,
      "fadeOutSeconds": 2,
      "meanDbfs": -52.5,
      "peakDbfs": -42.9,
      "applicationAudio": false
    }
  },
  "preview": {
    "file": "health-dots-before-after.gif",
    "durationSeconds": 52.5,
    "dimensions": [
      864,
      672
    ],
    "audio": false,
    "limitation": "Scaled silent preview; use the MP4 or original screenshots for small UI details."
  },
  "files": {
    "health-dots-before-after.mp4": {
      "sha256": "9f06bd08f3bf388697e682a74f3699d2229911f240300d473ec48c6757a72f26",
      "bytes": 1754806
    },
    "health-dots-poster.jpg": {
      "sha256": "fe4e29c1d5baa9575c636272b1965d0317bc7ad797d760a231d03e1dbe92ff60",
      "bytes": 72395
    },
    "health-dots-captions.vtt": {
      "sha256": "445e9c591a967cfbd15e10616279f68cd5d5e704834a44dd5a40efcdc408a483",
      "bytes": 1945
    },
    "health-dots-before-after.gif": {
      "sha256": "597dadaed948956f7f03eb2dfb2dac762e206de7a899c99bf8e1b5ad3b299d88",
      "bytes": 1384024
    }
  }
}
