{
  "title": "Extension dialog viewport limits",
  "beforeRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
  "afterRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
  "builds": {
    "before": {
      "servedBuildFingerprint": "8e365d1fa30953c3",
      "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
      "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
      "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
      "buildIdentityNote": "Actual build-source revision and exact input equality are preserved in source.buildSources; no build bytes are relabelled."
    },
    "after": {
      "servedBuildFingerprint": "086cdbb325a81428",
      "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
      "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
      "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
      "buildIdentityNote": "Actual build-source revision and exact input equality are preserved in source.buildSources; no build bytes are relabelled."
    }
  },
  "versions": {
    "before": {
      "pins": {
        "agentServer": "1.58.1",
        "agentCanvas": "1.33.0",
        "automation": "1.25.1"
      },
      "node": "v24.22.1",
      "npm": "11.12.1",
      "browser": "Installed Google Chrome, owned private verification profile",
      "browserUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.0.0 Safari/537.36"
    },
    "after": {
      "pins": {
        "agentServer": "1.58.1",
        "agentCanvas": "1.33.0",
        "automation": "1.25.1"
      },
      "node": "v24.22.1",
      "npm": "11.12.1",
      "browser": "Installed Google Chrome, owned private verification profile",
      "browserUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.0.0 Safari/537.36"
    }
  },
  "implementation": {
    "before": "Twelve repeated max-width/max-height occurrences spell the existing 90vw/85vh limits across six dialog frames.",
    "after": "One named compiled utility retains the same literal 90vw maximum width and 85vh maximum height. Twelve warnings are removed.",
    "owners": [
      "src/components/features/canvas-extensions/add-canvas-extension-modal.tsx",
      "src/components/features/mcp-page/install-server-modal.tsx",
      "src/components/features/plugins/add-plugin-modal.tsx",
      "src/components/features/plugins/plugin-detail-modal.tsx",
      "src/components/features/skills/add-skill-modal.tsx",
      "src/components/features/skills/skill-detail-modal.tsx",
      "src/tailwind.css"
    ],
    "compiledContract": "Independent actual app/library CSS review preserves the existing declarations, scope, specificity and conditions; attached proof and content hashes retain its precise limits."
  },
  "scope": {
    "before": {
      "mode": "Standalone Local Canvas",
      "recordingMethod": "Original active-tab recorder frames, 25fps normal action timing; no pixel-identity or frame-clock synchronization claim. Recorder trims still lead-in and adds final hold.",
      "mutationBoundary": {
        "sourceEdited": false,
        "verifierEdited": false,
        "dependenciesChanged": false,
        "routeInterception": false,
        "DOMStateInjection": false,
        "frontendMocks": false,
        "modelCalls": false,
        "primaryCheckoutTouched": false,
        "globalChromeProfileTouched": false,
        "unrelatedProcessesStopped": false
      }
    },
    "after": {
      "mode": "Standalone Local Canvas",
      "recordingMethod": "Original active-tab recorder frames, 25fps normal action timing; no pixel-identity or frame-clock synchronization claim. Recorder trims still lead-in and adds final hold.",
      "mutationBoundary": {
        "sourceEdited": false,
        "verifierEdited": false,
        "dependenciesChanged": false,
        "routeInterception": false,
        "DOMStateInjection": false,
        "frontendMocks": false,
        "modelCalls": false,
        "primaryCheckoutTouched": false,
        "globalChromeProfileTouched": false,
        "unrelatedProcessesStopped": false
      }
    },
    "mainFilm": "Genuine standalone Local UI only. Full viewport context precedes faithful actual detail crops. UI pixels are never recreated or restyled."
  },
  "comparisonSummary": "38 matched sampled states with no reported computed or geometry differences; scope is the named observed contract, not global pixel identity.",
  "limits": [
    "Appearance-preserving refactor. Genuine standalone Local captures cover only the named observed paths. No whole-UI pixel identity, contrast, layout, typography or performance improvement is claimed.",
    "Both Before and After already use compiled CSS.",
    "PNG and MP4 originals are byte-preserved. Complete selected MP4s retain their existing action cadence; the recorder trims still lead-in and adds its final hold. Source clocks, recorder counts/misses, MP4 duration, explicit still holds and actual detail crops remain distinct.",
    "No model prompt, completion or agent turn was run.",
    "Exact checkout revisions and actual app/library build-source revisions are recorded separately. A normal CLI cache may reuse prior build bytes only when the exact build-input fingerprint is equal. Test-only descendants never relabel older build bytes as newly built source.",
    "Branches independently change the 479-warning baseline to Home 473, Automation 477 or Extensions 467. These are separate branches; no integrated 459-warning result is claimed.",
    "All six real frames are captured at desktop and 390×844 phone; long content, native scrolling, footer reachability and representative themes remain explicit observed paths.",
    "The private skill/plugin fixtures are genuinely API-discovered. No extension was installed or executed.",
    "Authentic UI pixels retain nonsecret disposable QA fixture paths, the benign loopback backend origin and fixed OpenHands Test/test@openhands.dev example metadata. No credentials or sensitive user data were found. Public JSON links and identifiers are sanitized separately.",
    "ModalBackdrop continues to portal to document.body. Embedded hosts whose scoped root excludes body portals retain this existing limitation; compiled library scope evidence is not a live embedding claim.",
    "Live UI is genuine standalone Local Canvas. No live Cloud, ACP, isolated-runtime or embedded-host branch is claimed; actual app/library CSS build provenance is retained separately.",
    "Home isolated workspace notice is compiler-only: the native Local host runtime does not expose it, and no host/runtime change was made.",
    "Initial Home browser-preference-only captures are retained unchanged and excluded from final Home selection and motion-branch proof. Corrected runs set media before navigation and observe actual pill child/static button fill.",
    "Automation has four class substitutions but two scanner-reported findings. The real detail Draft badge is captured; compact Draft cards/rows are compiler-only because the genuine dashboard excludes materialized Draft test automations.",
    "Each Automation phase invoked exactly one reviewed credential-free shell printf Test. Bash output exited0 with the fixed marker, no model conversation was created, and schedules stayed disabled. The callback-free script left service state RUNNING; no completed Test lifecycle is claimed. Exact runs were cancelled, owned drafts/materialized objects deleted, and lists confirmed empty.",
    "Current ScriptSection has no expand or copy control; only actual file/header borders and supported source display are claimed.",
    "Extension limits are theme-independent: all six real frames have desktop/phone and short-phone coverage, with five-theme stills on one representative dialog. Long genuine skill content and plugin-file/instruction scroll areas exercise the actual constrained owners. No layout improvement is claimed.",
    "Frames and clips preserve original normal action timing and source-recorder clocks/miss counts. No whole-page pixel or synchronized-video-frame identity is claimed.",
    "Agent Server1.58.1 is confirmed by doctor; automation1.25.1 is the explicit launch pin and healthy endpoint, whose response has no independent version field."
  ],
  "captureProvenance": "extension-dialog-viewport-capture-provenance.json",
  "captureProvenanceSha256": "9fb72b1138fda6502fd817001de74877e981ef8914259d84b3d8ac600f43b7d9",
  "evidenceDownload": "extension-dialog-viewport-evidence.zip",
  "evidenceDownloadSha256": "ac0fcba06fedf818a59eed8a5145cb1f9ed5323f8d1ef9a0a52e91bb2161afaf",
  "archiveVerification": {
    "crcPassed": true,
    "allMemberHashesMatch": true,
    "memberCount": 89,
    "members": [
      {
        "file": "extension-dialog-viewport-captions.vtt",
        "sha256": "cb5cc91a4421514c06bf81df801ab7ad0b5fc0bc9466eddec1d9458440203a91",
        "bytes": 4347,
        "crc32": "5f566b5a"
      },
      {
        "file": "extension-dialog-viewport-capture-provenance.json",
        "sha256": "9fb72b1138fda6502fd817001de74877e981ef8914259d84b3d8ac600f43b7d9",
        "bytes": 101145,
        "crc32": "ac963ffd"
      },
      {
        "file": "extension-dialog-viewport-comparison.json",
        "sha256": "048e23ac8a76f3c2efb3bb87420100069c76b33f1dba244f66f2cd83e54a19f5",
        "bytes": 159398,
        "crc32": "23340c9a"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/capture-receipt.json",
        "sha256": "4f0414c8697c1afc839d771c855d76466a6914533fcfa96724fac11766629978",
        "bytes": 47722,
        "crc32": "862fa6ae"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/deepsea-desktop-skill-detail-modal-scrolled.png",
        "sha256": "dc1ee6b4b57ec3f8a65e4d5a4f46d9f51b5392d41a19754850ddbaef32dff205",
        "bytes": 190437,
        "crc32": "fc3842a7"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/deepsea-desktop-skill-detail-modal-upper.png",
        "sha256": "dc1ee6b4b57ec3f8a65e4d5a4f46d9f51b5392d41a19754850ddbaef32dff205",
        "bytes": 190437,
        "crc32": "fc3842a7"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/light-desktop-skill-detail-modal-scrolled.png",
        "sha256": "088b3086a48dad7db067b595470cada230f398506375d2d4b9b1b9edee56da87",
        "bytes": 156740,
        "crc32": "a2c10538"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/light-desktop-skill-detail-modal-upper.png",
        "sha256": "088b3086a48dad7db067b595470cada230f398506375d2d4b9b1b9edee56da87",
        "bytes": 156740,
        "crc32": "a2c10538"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/native-desktop-six-frames.mp4",
        "sha256": "60c24e0e09fadca4659de924c8c458b2efb41e2649d2add32f96e7fc2541f6da",
        "bytes": 1245234,
        "crc32": "1c058860"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/native-phone-six-frames.mp4",
        "sha256": "366978d154fa6f5dcebf045a9da647614b503cd7440c4e7e384e09f1d9ef1a93",
        "bytes": 463680,
        "crc32": "6d1ad84e"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neo-desktop-skill-detail-modal-scrolled.png",
        "sha256": "a1e48352714358f2b5d5d0d764bb2a147dd587655f492fd589100e98ce36ae8a",
        "bytes": 155338,
        "crc32": "be4a3822"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neo-desktop-skill-detail-modal-upper.png",
        "sha256": "a1e48352714358f2b5d5d0d764bb2a147dd587655f492fd589100e98ce36ae8a",
        "bytes": 155338,
        "crc32": "be4a3822"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-add-canvas-extension-modal-upper.png",
        "sha256": "456c69caaae32032b027ce9fc347653ead96cabae3cf3c088811e1fc641006ce",
        "bytes": 20365,
        "crc32": "dbccafb2"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-add-plugin-modal-upper.png",
        "sha256": "0545b7ca1cd4b5d8d07fa991bdd57465806246aa20ca4daf641d70f5a2b0a435",
        "bytes": 23104,
        "crc32": "bc91b056"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-add-skill-modal-scrolled.png",
        "sha256": "13d1d14921ae5a7f55f8b082a583ead74702451eea2bff88007cb7b336dcf378",
        "bytes": 40280,
        "crc32": "928e4c4f"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-add-skill-modal-upper.png",
        "sha256": "dcf28846a31ce76692d16706932bc4e444ae8dcc2249469f4956b3f04244768f",
        "bytes": 40510,
        "crc32": "fbd9949f"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-mcp-install-modal-upper.png",
        "sha256": "191ea968fe160c1e276df3503b83e5407937e9638fcede657b69f775397f2652",
        "bytes": 34518,
        "crc32": "c2b4a2f8"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-plugin-detail-modal-file.png",
        "sha256": "5cb7d8c02c5cdccf645841d8b6cdb9ea0de8f0fcbcccd79b0e18e2c784be2e77",
        "bytes": 29085,
        "crc32": "19abaa12"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-plugin-detail-modal-scrolled.png",
        "sha256": "6c937e6b3f9364206553e9faea57e2419e42fd7aed1f05e5f6051b3aad373c89",
        "bytes": 31957,
        "crc32": "1b4d61a7"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-plugin-detail-modal-upper.png",
        "sha256": "12689694ac042b770feea224d5c882410cebb0ce9e3f9d23516946a92a55ab13",
        "bytes": 29260,
        "crc32": "cf34ad1a"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-skill-detail-modal-scrolled.png",
        "sha256": "a9b72c4cf33442d8f6bb22a9116f9c32ce745650581b8d90895d1ddad07c34d6",
        "bytes": 31446,
        "crc32": "c9330698"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-320x640-skill-detail-modal-upper.png",
        "sha256": "1e78433838fcae5f3faf2957403e106488bd6947c82746743f83799a8ddb49db",
        "bytes": 30719,
        "crc32": "8c278ddd"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-add-canvas-extension-modal-upper.png",
        "sha256": "1284b012a5d597b994ab7754e5e80d9b5f5d5503646aa32d2a40965e4070e0e2",
        "bytes": 90098,
        "crc32": "12408bd9"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-add-plugin-modal-upper.png",
        "sha256": "64a37911de62dea3d1d3413b69d4b9db44e629e56373dcdf1ea5f927ce7707e7",
        "bytes": 141077,
        "crc32": "a2bb1bb9"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-add-skill-modal-scrolled.png",
        "sha256": "525f9aae4185b24f1112aab8e9a176bd832f65aa0090845eb886b7fd8347d292",
        "bytes": 189289,
        "crc32": "285efa91"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-add-skill-modal-upper.png",
        "sha256": "525f9aae4185b24f1112aab8e9a176bd832f65aa0090845eb886b7fd8347d292",
        "bytes": 189289,
        "crc32": "285efa91"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-mcp-install-modal-upper.png",
        "sha256": "a7685c3507bcd77c60727d4bd77aae383b394c3653c50ddc494a9e5fb48db688",
        "bytes": 146931,
        "crc32": "993fc4e6"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-plugin-detail-modal-file.png",
        "sha256": "35e87b1a96a125017aa8272db29c1d00c336c1e3646961ca0fc77a4d2367b8cc",
        "bytes": 163399,
        "crc32": "5bf42ba9"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-plugin-detail-modal-scrolled.png",
        "sha256": "c1bbb31efdbc6a2ab6d97aff8345abbee402263a38ac755e363ff492e3f1603c",
        "bytes": 163399,
        "crc32": "d975d7e8"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-plugin-detail-modal-upper.png",
        "sha256": "5ce81a91163e80db482e5d023d77a0b037751c6321d8a7902039009e3cc48f7b",
        "bytes": 147780,
        "crc32": "aa34a0ac"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-skill-detail-modal-scrolled.png",
        "sha256": "9d57a48e8ac71be59ddd8780f169a7c69784e39737957d3e4e1fb2244ebe14a5",
        "bytes": 155338,
        "crc32": "bfd6d595"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-desktop-skill-detail-modal-upper.png",
        "sha256": "a1e48352714358f2b5d5d0d764bb2a147dd587655f492fd589100e98ce36ae8a",
        "bytes": 155338,
        "crc32": "be4a3822"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-add-canvas-extension-modal-upper.png",
        "sha256": "c7f972c5c7db7de9e09cc6e580ccf2b681e62e63df12f263cfff216c975c679a",
        "bytes": 30198,
        "crc32": "8fb4ab0c"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-add-plugin-modal-upper.png",
        "sha256": "beb5b9b7258b314d268b992cca814c267a72cb706eedaff1c8479b284f8c48b1",
        "bytes": 42838,
        "crc32": "0fa97fca"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-add-skill-modal-scrolled.png",
        "sha256": "e5bac7213e67c343f1d9234e2075e68c2c44a163720f1c2055daf4719a79b0ac",
        "bytes": 60488,
        "crc32": "ad13543b"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-add-skill-modal-upper.png",
        "sha256": "16509f53b9d255b3d931054b2eed312ccf076e1d73a5538dcc1a0a1da57d32e5",
        "bytes": 60839,
        "crc32": "7752aa6a"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-mcp-install-modal-upper.png",
        "sha256": "48f280a0d99804aef36d874f463cdaf0d4c184c75d0108f0b2489450f9f48d45",
        "bytes": 43841,
        "crc32": "2eb4e645"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-plugin-detail-modal-file.png",
        "sha256": "c11532c33ccf05631a447ff26cd29b7be980e93e1e71654e927a5eae4b82f33c",
        "bytes": 48394,
        "crc32": "5ddd62b4"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-plugin-detail-modal-scrolled.png",
        "sha256": "232687b8dcef5cb229c1685ca6bfa196b84032cc183c52fcb3aa3ae03af2ed8b",
        "bytes": 51497,
        "crc32": "d39c198f"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-plugin-detail-modal-upper.png",
        "sha256": "94e6e3245558db4b18e63eeea8472b23360d3c5f56fa9cf4141cf224c17cc242",
        "bytes": 46616,
        "crc32": "1ea359d7"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-skill-detail-modal-scrolled.png",
        "sha256": "4c632dd8df82ceffab2e4e3d7603519e96c1b30dcc74fb0ba48858bef8b68f5d",
        "bytes": 47542,
        "crc32": "9d823bf8"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/neutral-phone-skill-detail-modal-upper.png",
        "sha256": "4c632dd8df82ceffab2e4e3d7603519e96c1b30dcc74fb0ba48858bef8b68f5d",
        "bytes": 47542,
        "crc32": "9d823bf8"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/solarized-desktop-skill-detail-modal-scrolled.png",
        "sha256": "5ee1920f26d9e3d624f5c4e2d717b1d3d7f40078a19b335a4986321a1bfc087f",
        "bytes": 178816,
        "crc32": "ced4f9ed"
      },
      {
        "file": "extension-dialog-viewport-evidence/after/solarized-desktop-skill-detail-modal-upper.png",
        "sha256": "5ee1920f26d9e3d624f5c4e2d717b1d3d7f40078a19b335a4986321a1bfc087f",
        "bytes": 178816,
        "crc32": "ced4f9ed"
      },
      {
        "file": "extension-dialog-viewport-evidence/authoritative-evidence.json",
        "sha256": "711327182079ff14ca10f715ebeea6c839991d3992a49726318f73ded17d230f",
        "bytes": 89292,
        "crc32": "bf9d59bd"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/capture-receipt.json",
        "sha256": "afdbab8302a2a4fd3e0be12284b5f2b5be9970f5b2aa15af118aa010142cbe55",
        "bytes": 47408,
        "crc32": "e3b705a5"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/deepsea-desktop-skill-detail-modal-scrolled.png",
        "sha256": "c44d57314bc027b469f8b7b72f5cc23ce0ace78e5309b00f66d18009fedac2c2",
        "bytes": 191056,
        "crc32": "0038cf55"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/deepsea-desktop-skill-detail-modal-upper.png",
        "sha256": "c44d57314bc027b469f8b7b72f5cc23ce0ace78e5309b00f66d18009fedac2c2",
        "bytes": 191056,
        "crc32": "0038cf55"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/light-desktop-skill-detail-modal-scrolled.png",
        "sha256": "bd95eefaeda7ea7ba1816bd712ea8062cbee743ac6e66413a56e4430c849aca5",
        "bytes": 157105,
        "crc32": "2e18e4ca"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/light-desktop-skill-detail-modal-upper.png",
        "sha256": "bd95eefaeda7ea7ba1816bd712ea8062cbee743ac6e66413a56e4430c849aca5",
        "bytes": 157105,
        "crc32": "2e18e4ca"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/native-desktop-six-frames-2.mp4",
        "sha256": "e768db22752b8d1ad69c54d1c71c1c5f0d3a6132c40e6f5bc54301593aeb3a31",
        "bytes": 1373227,
        "crc32": "ef492fe5"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/native-phone-six-frames.mp4",
        "sha256": "40193a7b27f990b961f4bb2d76bf798b14935803f47b1c6047dc1488170c0796",
        "bytes": 470284,
        "crc32": "32ff917a"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neo-desktop-skill-detail-modal-scrolled.png",
        "sha256": "8126cf25897b6dcc2545222f2e1e424b778438c0f42f7700d4978c47bd3de2c8",
        "bytes": 155711,
        "crc32": "57a158c9"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neo-desktop-skill-detail-modal-upper.png",
        "sha256": "8126cf25897b6dcc2545222f2e1e424b778438c0f42f7700d4978c47bd3de2c8",
        "bytes": 155711,
        "crc32": "57a158c9"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-add-canvas-extension-modal-upper.png",
        "sha256": "456c69caaae32032b027ce9fc347653ead96cabae3cf3c088811e1fc641006ce",
        "bytes": 20365,
        "crc32": "dbccafb2"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-add-plugin-modal-upper.png",
        "sha256": "0545b7ca1cd4b5d8d07fa991bdd57465806246aa20ca4daf641d70f5a2b0a435",
        "bytes": 23104,
        "crc32": "bc91b056"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-add-skill-modal-scrolled.png",
        "sha256": "13d1d14921ae5a7f55f8b082a583ead74702451eea2bff88007cb7b336dcf378",
        "bytes": 40280,
        "crc32": "928e4c4f"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-add-skill-modal-upper.png",
        "sha256": "dcf28846a31ce76692d16706932bc4e444ae8dcc2249469f4956b3f04244768f",
        "bytes": 40510,
        "crc32": "fbd9949f"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-mcp-install-modal-upper.png",
        "sha256": "191ea968fe160c1e276df3503b83e5407937e9638fcede657b69f775397f2652",
        "bytes": 34518,
        "crc32": "c2b4a2f8"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-plugin-detail-modal-file.png",
        "sha256": "5cb7d8c02c5cdccf645841d8b6cdb9ea0de8f0fcbcccd79b0e18e2c784be2e77",
        "bytes": 29085,
        "crc32": "19abaa12"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-plugin-detail-modal-scrolled.png",
        "sha256": "6c937e6b3f9364206553e9faea57e2419e42fd7aed1f05e5f6051b3aad373c89",
        "bytes": 31957,
        "crc32": "1b4d61a7"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-plugin-detail-modal-upper.png",
        "sha256": "12689694ac042b770feea224d5c882410cebb0ce9e3f9d23516946a92a55ab13",
        "bytes": 29260,
        "crc32": "cf34ad1a"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-skill-detail-modal-scrolled.png",
        "sha256": "a9b72c4cf33442d8f6bb22a9116f9c32ce745650581b8d90895d1ddad07c34d6",
        "bytes": 31446,
        "crc32": "c9330698"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-320x640-skill-detail-modal-upper.png",
        "sha256": "1e78433838fcae5f3faf2957403e106488bd6947c82746743f83799a8ddb49db",
        "bytes": 30719,
        "crc32": "8c278ddd"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-add-canvas-extension-modal-upper.png",
        "sha256": "559481ace2998dee6e165f3025f865270ed608fe4fd0b63f8632999e16431b6e",
        "bytes": 90097,
        "crc32": "72c85232"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-add-plugin-modal-upper-2.png",
        "sha256": "64a37911de62dea3d1d3413b69d4b9db44e629e56373dcdf1ea5f927ce7707e7",
        "bytes": 141077,
        "crc32": "a2bb1bb9"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-add-skill-modal-scrolled-2.png",
        "sha256": "746ea47e1c93381637ffc23199497e968ae86d1fead8cde0773df582f9d2cc7a",
        "bytes": 189289,
        "crc32": "6c1903df"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-add-skill-modal-upper-2.png",
        "sha256": "525f9aae4185b24f1112aab8e9a176bd832f65aa0090845eb886b7fd8347d292",
        "bytes": 189289,
        "crc32": "285efa91"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-mcp-install-modal-upper.png",
        "sha256": "a7685c3507bcd77c60727d4bd77aae383b394c3653c50ddc494a9e5fb48db688",
        "bytes": 146931,
        "crc32": "993fc4e6"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-plugin-detail-modal-file.png",
        "sha256": "c1bbb31efdbc6a2ab6d97aff8345abbee402263a38ac755e363ff492e3f1603c",
        "bytes": 163399,
        "crc32": "d975d7e8"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-plugin-detail-modal-scrolled.png",
        "sha256": "35e87b1a96a125017aa8272db29c1d00c336c1e3646961ca0fc77a4d2367b8cc",
        "bytes": 163399,
        "crc32": "5bf42ba9"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-plugin-detail-modal-upper.png",
        "sha256": "cefdf68debf9f5c5a2e3cda32f5a06b952bf98a354a4a90ddd6e61ac43f426db",
        "bytes": 147780,
        "crc32": "63fd1c9a"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-skill-detail-modal-scrolled-2.png",
        "sha256": "57429e3b3c83e9f97e6d35e6cb7af842ca27e6cc50b443f3190de9b0f28e266a",
        "bytes": 155710,
        "crc32": "6afc4063"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-desktop-skill-detail-modal-upper-2.png",
        "sha256": "8126cf25897b6dcc2545222f2e1e424b778438c0f42f7700d4978c47bd3de2c8",
        "bytes": 155711,
        "crc32": "57a158c9"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-add-canvas-extension-modal-upper.png",
        "sha256": "c7f972c5c7db7de9e09cc6e580ccf2b681e62e63df12f263cfff216c975c679a",
        "bytes": 30198,
        "crc32": "8fb4ab0c"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-add-plugin-modal-upper.png",
        "sha256": "beb5b9b7258b314d268b992cca814c267a72cb706eedaff1c8479b284f8c48b1",
        "bytes": 42838,
        "crc32": "0fa97fca"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-add-skill-modal-scrolled.png",
        "sha256": "e5bac7213e67c343f1d9234e2075e68c2c44a163720f1c2055daf4719a79b0ac",
        "bytes": 60488,
        "crc32": "ad13543b"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-add-skill-modal-upper.png",
        "sha256": "16509f53b9d255b3d931054b2eed312ccf076e1d73a5538dcc1a0a1da57d32e5",
        "bytes": 60839,
        "crc32": "7752aa6a"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-mcp-install-modal-upper.png",
        "sha256": "48f280a0d99804aef36d874f463cdaf0d4c184c75d0108f0b2489450f9f48d45",
        "bytes": 43841,
        "crc32": "2eb4e645"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-plugin-detail-modal-file.png",
        "sha256": "c11532c33ccf05631a447ff26cd29b7be980e93e1e71654e927a5eae4b82f33c",
        "bytes": 48394,
        "crc32": "5ddd62b4"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-plugin-detail-modal-scrolled.png",
        "sha256": "232687b8dcef5cb229c1685ca6bfa196b84032cc183c52fcb3aa3ae03af2ed8b",
        "bytes": 51497,
        "crc32": "d39c198f"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-plugin-detail-modal-upper.png",
        "sha256": "94e6e3245558db4b18e63eeea8472b23360d3c5f56fa9cf4141cf224c17cc242",
        "bytes": 46616,
        "crc32": "1ea359d7"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-skill-detail-modal-scrolled.png",
        "sha256": "4c632dd8df82ceffab2e4e3d7603519e96c1b30dcc74fb0ba48858bef8b68f5d",
        "bytes": 47542,
        "crc32": "9d823bf8"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/neutral-phone-skill-detail-modal-upper.png",
        "sha256": "4c632dd8df82ceffab2e4e3d7603519e96c1b30dcc74fb0ba48858bef8b68f5d",
        "bytes": 47542,
        "crc32": "9d823bf8"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/solarized-desktop-skill-detail-modal-scrolled.png",
        "sha256": "b5fd600f638975710157ce910df6ce338295738954ead24c0dc531c4d04e7664",
        "bytes": 179401,
        "crc32": "b125ade5"
      },
      {
        "file": "extension-dialog-viewport-evidence/before/solarized-desktop-skill-detail-modal-upper.png",
        "sha256": "b5fd600f638975710157ce910df6ce338295738954ead24c0dc531c4d04e7664",
        "bytes": 179401,
        "crc32": "b125ade5"
      },
      {
        "file": "extension-dialog-viewport-evidence/extension-dialog-viewport-compiled-contract.json",
        "sha256": "14e0c2936db89ad94a493491fb2acdd76630ceac4e69e583b4e7ab4be7fcdb4a",
        "bytes": 8495,
        "crc32": "0fa54b5d"
      },
      {
        "file": "extension-dialog-viewport-evidence/extension-dialog-viewport-repro.json",
        "sha256": "f553a8d3ad6c3cd5ab8a03dfa2ce932def81bafcfc4aa0620f421ff732a5322e",
        "bytes": 5288,
        "crc32": "bd3e3c0d"
      },
      {
        "file": "extension-dialog-viewport-evidence/packet-index.json",
        "sha256": "baebd8cfbb5e2e40eaf0983bbc74358973bf0349a1e77e28e7b842da3253133f",
        "bytes": 104968,
        "crc32": "7f420797"
      }
    ]
  },
  "publicTextPrivacy": {
    "identityPolicy": "Original private capture and runtime identifiers are consistently replaced by distinct labels. Local or private URL origins use distinct Captured origin labels. Source commit and content hashes remain exact.",
    "identityLabelCount": 2,
    "originLabels": []
  },
  "verification": {
    "encoding": {
      "decodePassed": true,
      "downloadCompatibilityPassed": true,
      "videoCodec": "h264",
      "pixelFormat": "yuv420p",
      "colorRange": "tv",
      "audioCodec": "aac",
      "dimensions": [
        1440,
        1120
      ],
      "fps": "25/1",
      "frames": 1947,
      "durationSeconds": 77.88,
      "audio": {
        "mean_volume": -52.5,
        "max_volume": -42.5
      },
      "topLevelAtoms": [
        "ftyp",
        "moov",
        "free",
        "mdat"
      ]
    },
    "nativeSourceTimeBounds": "Every selected MP4 interval is bounded by its original source duration; explicit still holds have no implied native time range.",
    "rootDecodedVisualGate": {
      "passed": true,
      "reviewedFilmSha256": "25fba58c5f22d8269f747754c507eaa7c0e6b4d47e6cb6c4627a96c1445c6745",
      "reviewer": "root",
      "method": "All eight final decoded contactboards, 66 first/middle/last samples, and six critical full frames. Labels/crops readable and faithful; QA paths/example metadata explicitly accepted with disclosure."
    },
    "seekLinearValidation": {
      "slug": "extension-dialog-viewport",
      "filmSha256": "25fba58c5f22d8269f747754c507eaa7c0e6b4d47e6cb6c4627a96c1445c6745",
      "method": "One contiguous decode selecting exact frame indexes compared against independent seeks at every scene first frame, middle frame and last frame. Pixel hashes compare RGB buffers, not PNG metadata.",
      "sampleCount": 66,
      "allPixelIdentical": true,
      "encoding": "Each scene is independently decoded, then concatenated in one continuous H264 encode with 2-second keyframes; no stream-copy video concatenation."
    }
  },
  "pullRequest": "https://github.com/OpenHands/OpenHands/pull/18948",
  "film": {
    "dimensions": [
      1440,
      1120
    ],
    "fps": 25,
    "durationSeconds": 77.88,
    "scenes": [
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-desktop-add-skill-modal-upper-2.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Extension dialogs · Full context · Appearance preserved",
        "caption": "Before: Actual Add skill frame in standalone Local Canvas. Existing 90vw/85vh limits, colors, layout and type are preserved. Authentic PNG held 2 seconds.",
        "view": "Extension dialogs · Full context · Appearance preserved",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "525f9aae4185b24f1112aab8e9a176bd832f65aa0090845eb886b7fd8347d292",
        "sourceBytes": 189289,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          0,
          2.0
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "recording",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/native-desktop-six-frames-2.mp4",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Native dialog walkthrough · Open and close",
        "caption": "Before: Existing dialog openings, content inspection and closing at source timing. No extension installation or execution. The recording is not a synchronized frame-by-frame record of every action. Complete original MP4 at its existing 25 fps cadence; no editorial speed change. The recorder trims still lead-in and adds its final hold.",
        "view": "Native dialog walkthrough · Open and close",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceClock": {
          "startedAt": "2026-10-25T21:19:56Z",
          "stoppedAt": "2026-10-25T21:20:07Z"
        },
        "recorder": {
          "seconds": 11.3,
          "recordedSeconds": 10.4,
          "size": "1440x1000",
          "fps": 25,
          "captures": 245,
          "changes": 85,
          "misses": 0,
          "capped": false,
          "cutSeconds": 0
        },
        "sourceSha256": "e768db22752b8d1ad69c54d1c71c1c5f0d3a6132c40e6f5bc54301593aeb3a31",
        "sourceBytes": 1373227,
        "sourceDurationSeconds": 11.28,
        "sourceFps": 25.0,
        "timelineSeconds": [
          2.0,
          13.28
        ],
        "presentationDurationSeconds": 11.28,
        "editorialSpeedChange": false,
        "sourceStartSeconds": 0,
        "sourceSelectedRangeSeconds": [
          0,
          11.28
        ],
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": true,
        "fullOriginalTimelineSelected": true,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Selected MP4 interval presented at its existing frame cadence. Recorder caps an initial static lead-in at 1 second and holds the final frame at least 1 second; action intervals retain capture timing. Presentation repeats frames only for output cadence; no motion interpolation."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-desktop-skill-detail-modal-upper-2.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Detail crop · Same Skill frame and footer",
        "caption": "Before: Actual API-discovered QA Skill detail with real long content and its existing footer. The visible disposable fixture path is nonsecret test provenance. Authentic PNG held 3 seconds.",
        "view": "Detail crop · Same Skill frame and footer",
        "cropDisclosure": "Actual source crop x440/y190/560×620px, fitted below separate editorial header.",
        "crop": [
          440,
          190,
          560,
          620
        ],
        "sourceSha256": "8126cf25897b6dcc2545222f2e1e424b778438c0f42f7700d4978c47bd3de2c8",
        "sourceBytes": 155711,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          13.28,
          16.28
        ],
        "presentationDurationSeconds": 3.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-desktop-plugin-detail-modal-scrolled.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Plugin detail · Full context",
        "caption": "Before: Actual private QA Plugin file view. Its fixed example author and email are sample fixture metadata. Authentic PNG held 2 seconds.",
        "view": "Plugin detail · Full context",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "35e87b1a96a125017aa8272db29c1d00c336c1e3646961ca0fc77a4d2367b8cc",
        "sourceBytes": 163399,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          16.28,
          18.28
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-desktop-plugin-detail-modal-scrolled.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Detail crop · Same Plugin file frame",
        "caption": "Before: Actual Plugin detail and native file content. The existing frame, internal scroll area and Close footer are preserved. Authentic PNG held 3 seconds.",
        "view": "Detail crop · Same Plugin file frame",
        "cropDisclosure": "Actual source crop x380/y105/680×790px, fitted below separate editorial header.",
        "crop": [
          380,
          105,
          680,
          790
        ],
        "sourceSha256": "35e87b1a96a125017aa8272db29c1d00c336c1e3646961ca0fc77a4d2367b8cc",
        "sourceBytes": 163399,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          18.28,
          21.28
        ],
        "presentationDurationSeconds": 3.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-desktop-mcp-install-modal-upper.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "MCP server · Existing dialog frame",
        "caption": "Before: Actual Filesystem MCP install frame opened and cancelled, without installing or executing it. Authentic PNG held 2 seconds.",
        "view": "MCP server · Existing dialog frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "a7685c3507bcd77c60727d4bd77aae383b394c3653c50ddc494a9e5fb48db688",
        "sourceBytes": 146931,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          21.28,
          23.28
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-desktop-add-canvas-extension-modal-upper.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Canvas app · Existing dialog frame",
        "caption": "Before: Actual empty Add app frame, closed without installation. Authentic PNG held 2 seconds.",
        "view": "Canvas app · Existing dialog frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "559481ace2998dee6e165f3025f865270ed608fe4fd0b63f8632999e16431b6e",
        "sourceBytes": 90097,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          23.28,
          25.28
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-phone-add-plugin-modal-upper.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Phone · Existing Add plugin frame",
        "caption": "Before: Actual 390×844 Add plugin frame, retaining its existing viewport caps and footer. Authentic PNG held 2.5 seconds.",
        "view": "Phone · Existing Add plugin frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "beb5b9b7258b314d268b992cca814c267a72cb706eedaff1c8479b284f8c48b1",
        "sourceBytes": 42838,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          25.28,
          27.76
        ],
        "presentationDurationSeconds": 2.48,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-phone-mcp-install-modal-upper.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Phone · Existing MCP frame",
        "caption": "Before: Actual 390×844 MCP dialog frame. No viewport or layout improvement is claimed. Authentic PNG held 2.5 seconds.",
        "view": "Phone · Existing MCP frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "48f280a0d99804aef36d874f463cdaf0d4c184c75d0108f0b2489450f9f48d45",
        "sourceBytes": 43841,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          27.76,
          30.24
        ],
        "presentationDurationSeconds": 2.48,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/neutral-320x640-add-skill-modal-scrolled.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "320 × 640 · Existing scroll and footer",
        "caption": "Before: Actual small-viewport Add skill content after native scrolling, with its footer reachable. All six small-viewport frames remain in the original source packet. Authentic PNG held 3 seconds.",
        "view": "320 × 640 · Existing scroll and footer",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "13d1d14921ae5a7f55f8b082a583ead74702451eea2bff88007cb7b336dcf378",
        "sourceBytes": 40280,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          30.24,
          33.24
        ],
        "presentationDurationSeconds": 3.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "checkoutRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "appBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "libraryBuildSourceRevision": "044ec59e12e5070406378ba24d568cfbb3a10bf0",
        "capturePhase": "before",
        "captureOriginLabel": "capture-run-001",
        "servedBuildFingerprint": "8e365d1fa30953c3",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/before/light-desktop-skill-detail-modal-upper.png",
        "label": "Before · Repeated viewport limits",
        "subtitle": "Light+ · Full context",
        "caption": "Before: Actual Light+ Skill detail. Five representative theme samples are retained in the source packet, with appearance preserved. Authentic PNG held 2 seconds.",
        "view": "Light+ · Full context",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "bd95eefaeda7ea7ba1816bd712ea8062cbee743ac6e66413a56e4430c849aca5",
        "sourceBytes": 157105,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          33.24,
          35.24
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-desktop-add-skill-modal-upper.png",
        "label": "After · Named dialog limits",
        "subtitle": "Extension dialogs · Full context · Appearance preserved",
        "caption": "After: Actual Add skill frame in standalone Local Canvas. Existing 90vw/85vh limits, colors, layout and type are preserved. Authentic PNG held 2 seconds.",
        "view": "Extension dialogs · Full context · Appearance preserved",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "525f9aae4185b24f1112aab8e9a176bd832f65aa0090845eb886b7fd8347d292",
        "sourceBytes": 189289,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          35.24,
          37.24
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "recording",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/native-desktop-six-frames.mp4",
        "label": "After · Named dialog limits",
        "subtitle": "Native dialog walkthrough · Open and close",
        "caption": "After: Existing dialog openings, content inspection and closing at source timing. No extension installation or execution. The recording is not a synchronized frame-by-frame record of every action. Complete original MP4 at its existing 25 fps cadence; no editorial speed change. The recorder trims still lead-in and adds its final hold.",
        "view": "Native dialog walkthrough · Open and close",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceClock": {
          "startedAt": "2026-10-25T21:39:30Z",
          "stoppedAt": "2026-10-25T21:39:48Z"
        },
        "recorder": {
          "seconds": 18.7,
          "recordedSeconds": 17.7,
          "size": "1440x1000",
          "fps": 25,
          "captures": 182,
          "changes": 70,
          "misses": 2,
          "capped": false,
          "cutSeconds": 0
        },
        "sourceSha256": "60c24e0e09fadca4659de924c8c458b2efb41e2649d2add32f96e7fc2541f6da",
        "sourceBytes": 1245234,
        "sourceDurationSeconds": 18.68,
        "sourceFps": 25.0,
        "timelineSeconds": [
          37.24,
          55.92
        ],
        "presentationDurationSeconds": 18.68,
        "editorialSpeedChange": false,
        "sourceStartSeconds": 0,
        "sourceSelectedRangeSeconds": [
          0,
          18.68
        ],
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": true,
        "fullOriginalTimelineSelected": true,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Selected MP4 interval presented at its existing frame cadence. Recorder caps an initial static lead-in at 1 second and holds the final frame at least 1 second; action intervals retain capture timing. Presentation repeats frames only for output cadence; no motion interpolation."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-desktop-skill-detail-modal-upper.png",
        "label": "After · Named dialog limits",
        "subtitle": "Detail crop · Same Skill frame and footer",
        "caption": "After: Actual API-discovered QA Skill detail with real long content and its existing footer. The visible disposable fixture path is nonsecret test provenance. Authentic PNG held 3 seconds.",
        "view": "Detail crop · Same Skill frame and footer",
        "cropDisclosure": "Actual source crop x440/y190/560×620px, fitted below separate editorial header.",
        "crop": [
          440,
          190,
          560,
          620
        ],
        "sourceSha256": "a1e48352714358f2b5d5d0d764bb2a147dd587655f492fd589100e98ce36ae8a",
        "sourceBytes": 155338,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          55.92,
          58.92
        ],
        "presentationDurationSeconds": 3.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-desktop-plugin-detail-modal-scrolled.png",
        "label": "After · Named dialog limits",
        "subtitle": "Plugin detail · Full context",
        "caption": "After: Actual private QA Plugin file view. Its fixed example author and email are sample fixture metadata. Authentic PNG held 2 seconds.",
        "view": "Plugin detail · Full context",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "c1bbb31efdbc6a2ab6d97aff8345abbee402263a38ac755e363ff492e3f1603c",
        "sourceBytes": 163399,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          58.92,
          60.92
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-desktop-plugin-detail-modal-scrolled.png",
        "label": "After · Named dialog limits",
        "subtitle": "Detail crop · Same Plugin file frame",
        "caption": "After: Actual Plugin detail and native file content. The existing frame, internal scroll area and Close footer are preserved. Authentic PNG held 3 seconds.",
        "view": "Detail crop · Same Plugin file frame",
        "cropDisclosure": "Actual source crop x380/y105/680×790px, fitted below separate editorial header.",
        "crop": [
          380,
          105,
          680,
          790
        ],
        "sourceSha256": "c1bbb31efdbc6a2ab6d97aff8345abbee402263a38ac755e363ff492e3f1603c",
        "sourceBytes": 163399,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          60.92,
          63.92
        ],
        "presentationDurationSeconds": 3.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-desktop-mcp-install-modal-upper.png",
        "label": "After · Named dialog limits",
        "subtitle": "MCP server · Existing dialog frame",
        "caption": "After: Actual Filesystem MCP install frame opened and cancelled, without installing or executing it. Authentic PNG held 2 seconds.",
        "view": "MCP server · Existing dialog frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "a7685c3507bcd77c60727d4bd77aae383b394c3653c50ddc494a9e5fb48db688",
        "sourceBytes": 146931,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          63.92,
          65.92
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-desktop-add-canvas-extension-modal-upper.png",
        "label": "After · Named dialog limits",
        "subtitle": "Canvas app · Existing dialog frame",
        "caption": "After: Actual empty Add app frame, closed without installation. Authentic PNG held 2 seconds.",
        "view": "Canvas app · Existing dialog frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "1284b012a5d597b994ab7754e5e80d9b5f5d5503646aa32d2a40965e4070e0e2",
        "sourceBytes": 90098,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          65.92,
          67.92
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-phone-add-plugin-modal-upper.png",
        "label": "After · Named dialog limits",
        "subtitle": "Phone · Existing Add plugin frame",
        "caption": "After: Actual 390×844 Add plugin frame, retaining its existing viewport caps and footer. Authentic PNG held 2.5 seconds.",
        "view": "Phone · Existing Add plugin frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "beb5b9b7258b314d268b992cca814c267a72cb706eedaff1c8479b284f8c48b1",
        "sourceBytes": 42838,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          67.92,
          70.4
        ],
        "presentationDurationSeconds": 2.48,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-phone-mcp-install-modal-upper.png",
        "label": "After · Named dialog limits",
        "subtitle": "Phone · Existing MCP frame",
        "caption": "After: Actual 390×844 MCP dialog frame. No viewport or layout improvement is claimed. Authentic PNG held 2.5 seconds.",
        "view": "Phone · Existing MCP frame",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "48f280a0d99804aef36d874f463cdaf0d4c184c75d0108f0b2489450f9f48d45",
        "sourceBytes": 43841,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          70.4,
          72.88
        ],
        "presentationDurationSeconds": 2.48,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/neutral-320x640-add-skill-modal-scrolled.png",
        "label": "After · Named dialog limits",
        "subtitle": "320 × 640 · Existing scroll and footer",
        "caption": "After: Actual small-viewport Add skill content after native scrolling, with its footer reachable. All six small-viewport frames remain in the original source packet. Authentic PNG held 3 seconds.",
        "view": "320 × 640 · Existing scroll and footer",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "13d1d14921ae5a7f55f8b082a583ead74702451eea2bff88007cb7b336dcf378",
        "sourceBytes": 40280,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          72.88,
          75.88
        ],
        "presentationDurationSeconds": 3.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "checkoutRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "appBuildSourceRevision": "510f00ebc3c7b236e76e6ace4b541f62e8cb71b2",
        "libraryBuildSourceRevision": "50b5f7e6a878cfa738e7cb5203d5ce7eeee7b144",
        "capturePhase": "extensions-after",
        "captureOriginLabel": "capture-run-002",
        "servedBuildFingerprint": "086cdbb325a81428",
        "kind": "screenshot",
        "publicSourcePath": "extension-dialog-viewport-evidence/after/light-desktop-skill-detail-modal-upper.png",
        "label": "After · Named dialog limits",
        "subtitle": "Light+ · Full context",
        "caption": "After: Actual Light+ Skill detail. Five representative theme samples are retained in the source packet, with appearance preserved. Authentic PNG held 2 seconds.",
        "view": "Light+ · Full context",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "088b3086a48dad7db067b595470cada230f398506375d2d4b9b1b9edee56da87",
        "sourceBytes": 156740,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          75.88,
          77.88
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "outputCadencePaddingSeconds": 0,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      }
    ],
    "ambience": {
      "origin": "Original synthesized ambient pad; no external samples or provider.",
      "frequenciesHz": [
        174.61,
        220,
        261.63
      ],
      "amplitude": 0.004,
      "normalizationGain": 1.244261,
      "fadeInSeconds": 1.5,
      "fadeOutSeconds": 2,
      "meanDbfs": -52.5,
      "peakDbfs": -42.5,
      "applicationAudio": false
    },
    "encodingNote": "Each scene is independently decoded, then concatenated in one continuous H264 encode with 2-second keyframes; no stream-copy video concatenation.",
    "recipeSha256": "5e0580e77ffebeb7f6975e58059cd214904e79e5766638c731f24c3e48fcc11e"
  },
  "preview": {
    "file": "extension-dialog-viewport-poster.jpg",
    "dimensions": [
      1440,
      1120
    ],
    "type": "poster",
    "audio": false,
    "limitation": "Still poster. Play or download the MP4 for original native motion and quiet original ambience. Appearance is preserved."
  },
  "files": {
    "extension-dialog-viewport-poster.jpg": {
      "sha256": "09b1dc2f3e3aea27d7284a8cd210e5ecbfcedec1de7a90ca21741dad826ad9d4",
      "bytes": 176653
    },
    "extension-dialog-viewport-before-after.mp4": {
      "sha256": "25fba58c5f22d8269f747754c507eaa7c0e6b4d47e6cb6c4627a96c1445c6745",
      "bytes": 8993787
    },
    "extension-dialog-viewport-capture-provenance.json": {
      "sha256": "9fb72b1138fda6502fd817001de74877e981ef8914259d84b3d8ac600f43b7d9",
      "bytes": 101145
    },
    "extension-dialog-viewport-comparison.json": {
      "sha256": "048e23ac8a76f3c2efb3bb87420100069c76b33f1dba244f66f2cd83e54a19f5",
      "bytes": 159398
    },
    "extension-dialog-viewport-captions.vtt": {
      "sha256": "cb5cc91a4421514c06bf81df801ab7ad0b5fc0bc9466eddec1d9458440203a91",
      "bytes": 4347
    },
    "extension-dialog-viewport-evidence.zip": {
      "sha256": "ac0fcba06fedf818a59eed8a5145cb1f9ed5323f8d1ef9a0a52e91bb2161afaf",
      "bytes": 10637690
    }
  }
}
