{
  "schema_version": 2,
  "started_at": "2026-09-22T16:59:16.138Z",
  "status": "passed",
  "source_sha256": {
    "demo/fixture.mjs": "559c9899a4a8bdcbf2bd230e3dc93d24737225e6f86a4340f2ab16a5c06887d0",
    "demo/record.mjs": "11bfb689311c0896bc0a5bedcc2c126c97dc5ece5d5cda456054dbdafed4be48",
    "demo/render-video.mjs": "c3bd1860df2e27500f6a5bc0f35420511322d86d4e3d4420ab7d725364456196",
    "demo/viewer.html": "f467e4d95541a3a137da76939cf216a1bd02a0a0e5930c6031b2b45d2989d142",
    "dist/agent.js": "a82919ae552619acd083faae0b0fa2e622956b2d1b1c6523e87e06caa3e7f814",
    "dist/browser.js": "9a23ea78b4bd100e3a9b42f24ab1a77729d41c4300545774d9290e024defe69f",
    "dist/checkpoint.js": "51f4f8a2626cfabfecbf7d11a8b87b43fa6bb995b4d8b6462193cc27dc78fd8d",
    "dist/cli.js": "dfbaf5c2983275b38050064ed664b3538c9df7a6386c8a6e6f0ae18c8fd5f4ad",
    "dist/codex.js": "8d4c71b82203e7d00a7275f94b6edf9339754750448b479ed524562c31dddc2f",
    "dist/custom-tools.js": "414246ad8b92567d0a7ffeba51f073d13c1ff2f9b03abf9afb65e488edd44841",
    "dist/extraction.js": "1a998c281523ef934d1a227e87dcbc07c9d2276be8b9734938cf812f97206971",
    "dist/index.js": "f68d6d44c6f1c68fab0f4ea03d875b3a04f0d74beb9bf7c86e1d0803908d2c43",
    "dist/navigation-guard.js": "46ecca43e1f93800337c65dc85fe86d77bacc89d30632c849261a00b2681e88d",
    "dist/navigation-policy.js": "20c0fa2be5889a828934ca5b2c75918cd5264bb5c72d0fa504480fb2e7a5d47f",
    "dist/providers.js": "316d182ebd152e07049f38d858e24aee189dadc0010eeb3d35443bd8023f1b4c",
    "dist/server.js": "ca1868e3a02ac86220ecd3dce541ca5b8c6d588f18cc7d8c0c3204c38c0ee058",
    "dist/snapshot.js": "bb0675169765265ed5178863c7d19f7afcae3fe98c619136a71b243cfb4bb042",
    "package-lock.json": "0defcc13cd2deeff5b4a90e7d678ab8bec1d5144e13287cf629524ffafb17971",
    "package.json": "c75edf26a70bb57b7345a18ee99f483a8083d4a59350bb093159631e83945ca4",
    "src/agent.ts": "89ba3b29d102fb32688bc79d117dce346b34a2a90ed82c562918b9015e645fce",
    "src/browser.ts": "afcf03d035c98f4f6d54949b2dad7319b3509cd4afe6ea894b764f524b4fb7c4",
    "src/checkpoint.ts": "07a979b9bbff344a3c5814b1b727061233ada8ed24c180d9e5477c3243a5aac7",
    "src/cli.ts": "62892d7fc42038e955b9aef4e9f8d7194b1ea73cc6898c3625a9fb16b2164d50",
    "src/codex.ts": "a60744b322aab629350e58522f6a5b1c52eb48f446fe8750b2789512c329116b",
    "src/custom-tools.ts": "d9244e369b874436b2e26d0057b9821d0ba400b7cd86e9af20b8090fc78fa71f",
    "src/extraction.ts": "8647fbab7d6e5d8e42fe63b5e3baabd0a5de8fa0bb3f5e41d524a4809032f329",
    "src/index.ts": "204012513ea8321c7cbe257a41f7e7bda73bbb9cf021aad19d4eeb56b4879fc8",
    "src/navigation-guard.ts": "5c67fe7243b27dc0257d8eae7110aefaf97f761652badb5e11d47852e0903ef4",
    "src/navigation-policy.ts": "5f96625778d05598f53f58751df74125e59db3f5c0a26b489c1167df68ba2470",
    "src/providers.ts": "3b09a9532f54475cce74c916d1692eb00a026b26cf2cada45bc660276e898a01",
    "src/server.ts": "79c0f09b73052bdd941dc3840ba7ccf842ce9555eb642a53063a2734cde9d88b",
    "src/snapshot.ts": "0753753c143408074d03ce7834c230b6e8f555a0c79eca1bcdee8d0ef722ab40"
  },
  "environment": {
    "node": "v25.9.0",
    "platform": "darwin",
    "arch": "arm64",
    "browser_channel": "chrome",
    "browser_version": "153.0.8010.53"
  },
  "method": {
    "client": "Real MCP TypeScript SDK client over stdio. Deterministic script; no Codex/model inference.",
    "display": "Normal-speed recording of a presentation rendering actual MCP responses and tab_capture images. Not a continuous video feed from the controlled tab.",
    "fixture": "One continuous localhost travel workflow, with a real form, DOM replacement, approval popup, server-side order and CSV download. No external booking or payment.",
    "pauses": "Explicit reading holds are excluded from tool elapsed_ms. No timeline acceleration.",
    "independent_checks": "Fixture server counters and locally read downloaded bytes supplement browser assertions. They are recorder checks, not additional MCP tools.",
    "quick_mode": false
  },
  "task": {
    "destination": "Lisbon",
    "nights": 3,
    "travelers": 2,
    "free_cancellation": true,
    "budget_eur": 900,
    "requester": "Lin Chen",
    "cost_center": "design"
  },
  "events": [
    {
      "at_ms": 1697.792,
      "name": "tab_open",
      "arguments": {
        "url": "http://127.0.0.1:61313/"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:1",
        "tab_id": "t1",
        "tabs": [
          {
            "tab_id": "t1",
            "url": "http://127.0.0.1:61313/",
            "active": true
          }
        ],
        "scope": {
          "selector": null,
          "viewport_only": false
        },
        "mode": "full",
        "frame_id": "f0",
        "url": "http://127.0.0.1:61313/",
        "title": "差旅计划 — Wayfar",
        "frames": [
          {
            "frame_id": "f0",
            "url": "http://127.0.0.1:61313/",
            "name": "",
            "is_main": true
          }
        ],
        "frame_count": 1,
        "elements": [
          {
            "ref": "r1",
            "role": "heading",
            "name": "下一站，里斯本。"
          },
          {
            "ref": "r2",
            "role": "textbox",
            "name": "目的地",
            "value": ""
          },
          {
            "ref": "r3",
            "role": "combobox",
            "name": "住宿晚数",
            "value": "1",
            "options": [
              {
                "value": "1",
                "label": "1 晚",
                "selected": true,
                "disabled": false
              },
              {
                "value": "3",
                "label": "3 晚",
                "selected": false,
                "disabled": false
              },
              {
                "value": "5",
                "label": "5 晚",
                "selected": false,
                "disabled": false
              }
            ]
          },
          {
            "ref": "r4",
            "role": "combobox",
            "name": "出行人数",
            "value": "1",
            "options": [
              {
                "value": "1",
                "label": "1 人",
                "selected": true,
                "disabled": false
              },
              {
                "value": "2",
                "label": "2 人",
                "selected": false,
                "disabled": false
              },
              {
                "value": "3",
                "label": "3 人",
                "selected": false,
                "disabled": false
              }
            ]
          },
          {
            "ref": "r5",
            "role": "spinbutton",
            "name": "预算上限（EUR）",
            "value": ""
          },
          {
            "ref": "r6",
            "role": "checkbox",
            "name": "免费取消",
            "value": "yes",
            "checked": false
          },
          {
            "ref": "r7",
            "role": "button",
            "name": "查找酒店"
          },
          {
            "ref": "r8",
            "role": "heading",
            "name": "把计划变成行程"
          }
        ],
        "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 01 / PLAN THE TRIP 下一站，里斯本。 为两位同事安排 3 晚住宿，选择可免费取消的酒店。 目的地 住宿晚数 出行人数 预算上限（EUR） 免费取消 查找酒店 YOUR BRIEF 把计划变成行程 Lisbon · 3 晚 · 2 人 € 900 / 上限 取消政策 免费取消 后续步骤 审批 → 导出行程 所有表单与结果均由真实浏览器操作。 虚构差旅任务 · 无外部预订或付款",
        "truncated": false,
        "truncation": {
          "elements": false,
          "text": false,
          "fields": false,
          "scan": false,
          "metadata": false
        },
        "budgets": {
          "max_elements": 150,
          "text_limit": 6000,
          "max_frames": 100
        },
        "elapsed_ms": 43,
        "session_mode": "isolated"
      },
      "is_error": false,
      "elapsed_ms": 479.174
    },
    {
      "at_ms": 1944.136,
      "name": "tab_capture",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "url": "http://127.0.0.1:61313/",
        "mime_type": "image/jpeg",
        "bytes": 48982,
        "tab_id": "t1",
        "viewport": {
          "width": 1280,
          "height": 800,
          "scrollX": 0,
          "scrollY": 0
        },
        "coordinate_space": "viewport-css"
      },
      "is_error": false,
      "elapsed_ms": 26.433,
      "image_file": "01-plan.jpg"
    },
    {
      "at_ms": 28071.234,
      "name": "tab_act",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:1",
        "actions": [
          {
            "type": "fill",
            "ref": "r2",
            "value": "Lisbon"
          },
          {
            "type": "select",
            "ref": "r3",
            "values": [
              "3"
            ]
          },
          {
            "type": "select",
            "ref": "r4",
            "values": [
              "2"
            ]
          },
          {
            "type": "fill",
            "ref": "r5",
            "value": "900"
          },
          {
            "type": "check",
            "ref": "r6",
            "checked": true
          },
          {
            "type": "click",
            "ref": "r7"
          }
        ]
      },
      "result": {
        "ok": true,
        "batch_complete": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:1",
        "partial": false,
        "completed": 6,
        "failed": null,
        "failed_action_may_have_side_effects": false,
        "results": [
          {
            "index": 0,
            "type": "fill",
            "status": "completed"
          },
          {
            "index": 1,
            "type": "select",
            "status": "completed"
          },
          {
            "index": 2,
            "type": "select",
            "status": "completed"
          },
          {
            "index": 3,
            "type": "fill",
            "status": "completed"
          },
          {
            "index": 4,
            "type": "check",
            "status": "completed"
          },
          {
            "index": 5,
            "type": "click",
            "status": "completed"
          }
        ],
        "elapsed_ms": 509,
        "snapshot": {
          "ok": true,
          "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
          "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:2",
          "tab_id": "t1",
          "tabs": [
            {
              "tab_id": "t1",
              "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
              "active": true
            }
          ],
          "scope": {
            "selector": null,
            "viewport_only": false
          },
          "mode": "full",
          "frame_id": "f0",
          "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
          "title": "酒店筛选结果 — Wayfar",
          "frames": [
            {
              "frame_id": "f0",
              "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
              "name": "",
              "is_main": true
            }
          ],
          "frame_count": 1,
          "elements": [
            {
              "ref": "r9",
              "role": "heading",
              "name": "里斯本，一处合适的落脚点。"
            },
            {
              "ref": "r10",
              "role": "generic",
              "name": "酒店结果"
            },
            {
              "ref": "r11",
              "role": "heading",
              "name": "Casa Flora"
            },
            {
              "ref": "r12",
              "role": "button",
              "name": "发起审批"
            },
            {
              "ref": "r13",
              "role": "textbox",
              "name": "目的地",
              "value": "Lisbon",
              "readonly": true
            }
          ],
          "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 02 / MATCH YOUR CRITERIA 里斯本，一处合适的落脚点。 3 晚 · 2 人 · 免费取消 · 预算 € 900 符合全部条件 Casa Flora Lisbon · 双人套房 · 含早餐 免费取消 € 780 3 晚总价 · 低于预算 € 120 结果可验收 城市、晚数、人数与政策 发起审批 房型与价格已刷新。 APPLIED FILTERS 目的地 住宿晚数 3 晚 出行人数 2 人 预算上限 € 900 ✓ 筛选 → 审批 → 导出 虚构差旅任务 · 无外部预订或付款",
          "truncated": false,
          "truncation": {
            "elements": false,
            "text": false,
            "fields": false,
            "scan": false,
            "metadata": false
          },
          "budgets": {
            "max_elements": 150,
            "text_limit": 6000,
            "max_frames": 100
          },
          "elapsed_ms": 29
        }
      },
      "is_error": false,
      "elapsed_ms": 510.7
    },
    {
      "at_ms": 28392.59,
      "name": "tab_capture",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
        "mime_type": "image/jpeg",
        "bytes": 50464,
        "tab_id": "t1",
        "viewport": {
          "width": 1280,
          "height": 800,
          "scrollX": 0,
          "scrollY": 0
        },
        "coordinate_space": "viewport-css"
      },
      "is_error": false,
      "elapsed_ms": 19.875,
      "image_file": "02-results.jpg"
    },
    {
      "at_ms": 41466.464,
      "name": "tab_verify",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "checks": [
          {
            "kind": "url",
            "value": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes"
          },
          {
            "kind": "title",
            "contains": "酒店筛选结果"
          },
          {
            "kind": "text",
            "contains": "3 晚 · 2 人 · 免费取消 · 预算 € 900"
          },
          {
            "kind": "value",
            "selector": "#destination",
            "value": "Lisbon"
          },
          {
            "kind": "count",
            "selector": "[data-hotel=\"casa-flora\"]",
            "value": 1
          }
        ]
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "passed": true,
        "checks": [
          {
            "index": 0,
            "kind": "url",
            "pass": true,
            "actual": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes"
          },
          {
            "index": 1,
            "kind": "title",
            "pass": true,
            "actual": "酒店筛选结果 — Wayfar"
          },
          {
            "index": 2,
            "kind": "text",
            "pass": true,
            "actual": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 02 / MATCH YOUR CRITERIA 里斯本，一处合适的落脚点。 3 晚 · 2 人 · 免费取消 · 预算 € 900 符合全部条件 Casa Flora Lisbon · 双人套房 · 含早餐 免费取消 € 780 3 晚总价 · 低于预算 € 120 结果可验收 城市、晚数、人数与政策 发起审批 房型与价格已刷新。 APPLIED FILTERS 目的地 住宿晚数 3 晚 出行人数 2 人 预算上限 € 900 ✓ 筛选 → 审批 → 导出 虚构差旅任务 · 无外部预订或付款"
          },
          {
            "index": 3,
            "kind": "value",
            "pass": true,
            "actual": "Lisbon"
          },
          {
            "index": 4,
            "kind": "count",
            "pass": true,
            "actual": 1
          }
        ],
        "elapsed_ms": 11
      },
      "is_error": false,
      "elapsed_ms": 12.416
    },
    {
      "at_ms": 56265.129,
      "name": "tab_snapshot",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:3",
        "tab_id": "t1",
        "tabs": [
          {
            "tab_id": "t1",
            "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
            "active": true
          }
        ],
        "scope": {
          "selector": null,
          "viewport_only": false
        },
        "mode": "full",
        "frame_id": "f0",
        "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
        "title": "酒店筛选结果 — Wayfar",
        "frames": [
          {
            "frame_id": "f0",
            "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
            "name": "",
            "is_main": true
          }
        ],
        "frame_count": 1,
        "elements": [
          {
            "ref": "r9",
            "role": "heading",
            "name": "里斯本，一处合适的落脚点。"
          },
          {
            "ref": "r10",
            "role": "generic",
            "name": "酒店结果"
          },
          {
            "ref": "r11",
            "role": "heading",
            "name": "Casa Flora"
          },
          {
            "ref": "r12",
            "role": "button",
            "name": "发起审批"
          },
          {
            "ref": "r13",
            "role": "textbox",
            "name": "目的地",
            "value": "Lisbon",
            "readonly": true
          }
        ],
        "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 02 / MATCH YOUR CRITERIA 里斯本，一处合适的落脚点。 3 晚 · 2 人 · 免费取消 · 预算 € 900 符合全部条件 Casa Flora Lisbon · 双人套房 · 含早餐 免费取消 € 780 3 晚总价 · 低于预算 € 120 结果可验收 城市、晚数、人数与政策 发起审批 房型与价格已刷新。 APPLIED FILTERS 目的地 住宿晚数 3 晚 出行人数 2 人 预算上限 € 900 ✓ 筛选 → 审批 → 导出 虚构差旅任务 · 无外部预订或付款",
        "truncated": false,
        "truncation": {
          "elements": false,
          "text": false,
          "fields": false,
          "scan": false,
          "metadata": false
        },
        "budgets": {
          "max_elements": 150,
          "text_limit": 6000,
          "max_frames": 100
        },
        "elapsed_ms": 9
      },
      "is_error": false,
      "elapsed_ms": 10.793
    },
    {
      "at_ms": 68305.332,
      "name": "fixture.replace_approval",
      "result": {
        "acknowledged": true,
        "replacements": 1
      },
      "is_error": false,
      "elapsed_ms": 0,
      "not_mcp": true
    },
    {
      "at_ms": 68469.767,
      "name": "tab_act",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:3",
        "actions": [
          {
            "type": "click",
            "ref": "r12"
          }
        ]
      },
      "result": {
        "ok": false,
        "batch_complete": false,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:3",
        "partial": false,
        "completed": 0,
        "failed": {
          "index": 0,
          "action": "click",
          "error": {
            "code": "STALE_REFERENCE",
            "message": "The element was detached, hidden, or its identity changed. Take a fresh snapshot."
          }
        },
        "failed_action_may_have_side_effects": false,
        "results": [
          {
            "index": 0,
            "type": "click",
            "status": "failed",
            "error": {
              "code": "STALE_REFERENCE",
              "message": "The element was detached, hidden, or its identity changed. Take a fresh snapshot."
            }
          }
        ],
        "elapsed_ms": 8,
        "snapshot": {
          "ok": true,
          "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
          "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:4",
          "tab_id": "t1",
          "tabs": [
            {
              "tab_id": "t1",
              "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
              "active": true
            }
          ],
          "scope": {
            "selector": null,
            "viewport_only": false
          },
          "mode": "full",
          "frame_id": "f0",
          "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
          "title": "酒店筛选结果 — Wayfar",
          "frames": [
            {
              "frame_id": "f0",
              "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
              "name": "",
              "is_main": true
            }
          ],
          "frame_count": 1,
          "elements": [
            {
              "ref": "r9",
              "role": "heading",
              "name": "里斯本，一处合适的落脚点。"
            },
            {
              "ref": "r10",
              "role": "generic",
              "name": "酒店结果"
            },
            {
              "ref": "r11",
              "role": "heading",
              "name": "Casa Flora"
            },
            {
              "ref": "r14",
              "role": "button",
              "name": "发起审批"
            },
            {
              "ref": "r13",
              "role": "textbox",
              "name": "目的地",
              "value": "Lisbon",
              "readonly": true
            }
          ],
          "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 02 / MATCH YOUR CRITERIA 里斯本，一处合适的落脚点。 3 晚 · 2 人 · 免费取消 · 预算 € 900 符合全部条件 Casa Flora Lisbon · 双人套房 · 含早餐 免费取消 € 780 3 晚总价 · 低于预算 € 120 结果可验收 城市、晚数、人数与政策 发起审批 页面已更新：审批按钮由新节点替换。 APPLIED FILTERS 目的地 住宿晚数 3 晚 出行人数 2 人 预算上限 € 900 ✓ 筛选 → 审批 → 导出 虚构差旅任务 · 无外部预订或付款",
          "truncated": false,
          "truncation": {
            "elements": false,
            "text": false,
            "fields": false,
            "scan": false,
            "metadata": false
          },
          "budgets": {
            "max_elements": 150,
            "text_limit": 6000,
            "max_frames": 100
          },
          "elapsed_ms": 5
        }
      },
      "is_error": true,
      "elapsed_ms": 9.856
    },
    {
      "at_ms": 68618.518,
      "name": "fixture.confirm_zero_writes",
      "result": {
        "refused_code": "STALE_REFERENCE",
        "completed": 0,
        "popup_visits": 0,
        "submission_attempts": 0,
        "orders": 0
      },
      "is_error": false,
      "elapsed_ms": 0,
      "not_mcp": true
    },
    {
      "at_ms": 68791.335,
      "name": "tab_capture",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
        "mime_type": "image/jpeg",
        "bytes": 51386,
        "tab_id": "t1",
        "viewport": {
          "width": 1280,
          "height": 800,
          "scrollX": 0,
          "scrollY": 0
        },
        "coordinate_space": "viewport-css"
      },
      "is_error": false,
      "elapsed_ms": 23.931,
      "image_file": "03-stopped.jpg"
    },
    {
      "at_ms": 82856.153,
      "name": "tab_snapshot",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:5",
        "tab_id": "t1",
        "tabs": [
          {
            "tab_id": "t1",
            "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
            "active": true
          }
        ],
        "scope": {
          "selector": null,
          "viewport_only": false
        },
        "mode": "full",
        "frame_id": "f0",
        "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
        "title": "酒店筛选结果 — Wayfar",
        "frames": [
          {
            "frame_id": "f0",
            "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
            "name": "",
            "is_main": true
          }
        ],
        "frame_count": 1,
        "elements": [
          {
            "ref": "r9",
            "role": "heading",
            "name": "里斯本，一处合适的落脚点。"
          },
          {
            "ref": "r10",
            "role": "generic",
            "name": "酒店结果"
          },
          {
            "ref": "r11",
            "role": "heading",
            "name": "Casa Flora"
          },
          {
            "ref": "r14",
            "role": "button",
            "name": "发起审批"
          },
          {
            "ref": "r13",
            "role": "textbox",
            "name": "目的地",
            "value": "Lisbon",
            "readonly": true
          }
        ],
        "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 02 / MATCH YOUR CRITERIA 里斯本，一处合适的落脚点。 3 晚 · 2 人 · 免费取消 · 预算 € 900 符合全部条件 Casa Flora Lisbon · 双人套房 · 含早餐 免费取消 € 780 3 晚总价 · 低于预算 € 120 结果可验收 城市、晚数、人数与政策 发起审批 页面已更新：审批按钮由新节点替换。 APPLIED FILTERS 目的地 住宿晚数 3 晚 出行人数 2 人 预算上限 € 900 ✓ 筛选 → 审批 → 导出 虚构差旅任务 · 无外部预订或付款",
        "truncated": false,
        "truncation": {
          "elements": false,
          "text": false,
          "fields": false,
          "scan": false,
          "metadata": false
        },
        "budgets": {
          "max_elements": 150,
          "text_limit": 6000,
          "max_frames": 100
        },
        "elapsed_ms": 4
      },
      "is_error": false,
      "elapsed_ms": 5.48
    },
    {
      "at_ms": 95371.323,
      "name": "tab_act",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:5",
        "actions": [
          {
            "type": "click",
            "ref": "r14"
          }
        ]
      },
      "result": {
        "ok": true,
        "batch_complete": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:5",
        "partial": false,
        "completed": 1,
        "failed": null,
        "failed_action_may_have_side_effects": false,
        "results": [
          {
            "index": 0,
            "type": "click",
            "status": "completed"
          }
        ],
        "replan_required": true,
        "popup_followed": {
          "from_tab_id": "t1",
          "tab_id": "t2",
          "action_index": 0,
          "window_ms": 250
        },
        "elapsed_ms": 283,
        "snapshot": {
          "ok": true,
          "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
          "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:6",
          "tab_id": "t2",
          "tabs": [
            {
              "tab_id": "t1",
              "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
              "active": false
            },
            {
              "tab_id": "t2",
              "url": "http://127.0.0.1:61313/approval",
              "active": true
            }
          ],
          "scope": {
            "selector": null,
            "viewport_only": false
          },
          "mode": "full",
          "frame_id": "f0",
          "url": "http://127.0.0.1:61313/approval",
          "title": "差旅审批 — Wayfar",
          "frames": [
            {
              "frame_id": "f0",
              "url": "http://127.0.0.1:61313/approval",
              "name": "",
              "is_main": true
            }
          ],
          "frame_count": 1,
          "elements": [
            {
              "ref": "r15",
              "role": "heading",
              "name": "审批这一趟差旅。"
            },
            {
              "ref": "r16",
              "role": "textbox",
              "name": "申请人",
              "value": ""
            },
            {
              "ref": "r17",
              "role": "combobox",
              "name": "成本中心",
              "value": "",
              "options": [
                {
                  "value": "",
                  "label": "请选择",
                  "selected": true,
                  "disabled": false
                },
                {
                  "value": "design",
                  "label": "设计团队",
                  "selected": false,
                  "disabled": false
                },
                {
                  "value": "engineering",
                  "label": "研发团队",
                  "selected": false,
                  "disabled": false
                }
              ]
            },
            {
              "ref": "r18",
              "role": "checkbox",
              "name": "我已确认行程与预算",
              "value": "yes",
              "checked": false
            },
            {
              "ref": "r19",
              "role": "button",
              "name": "批准行程"
            },
            {
              "ref": "r20",
              "role": "heading",
              "name": "Casa Flora"
            }
          ],
          "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 03 / APPROVAL · NEW TAB 审批这一趟差旅。 原来的筛选页保留在另一个标签页。 申请人 成本中心 我已确认行程与预算 批准行程 提交后生成审批回执与可下载的行程文件。 待审批 Casa Flora Lisbon · 3 晚 · 2 人 € 780 取消政策 免费取消 预算余额 € 120 虚构差旅任务 · 无外部预订或付款",
          "truncated": false,
          "truncation": {
            "elements": false,
            "text": false,
            "fields": false,
            "scan": false,
            "metadata": false
          },
          "budgets": {
            "max_elements": 150,
            "text_limit": 6000,
            "max_frames": 100
          },
          "elapsed_ms": 15
        }
      },
      "is_error": false,
      "elapsed_ms": 284.462
    },
    {
      "at_ms": 95712.545,
      "name": "tab_snapshot",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:7",
        "tab_id": "t2",
        "tabs": [
          {
            "tab_id": "t1",
            "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
            "active": false
          },
          {
            "tab_id": "t2",
            "url": "http://127.0.0.1:61313/approval",
            "active": true
          }
        ],
        "scope": {
          "selector": null,
          "viewport_only": false
        },
        "mode": "full",
        "frame_id": "f0",
        "url": "http://127.0.0.1:61313/approval",
        "title": "差旅审批 — Wayfar",
        "frames": [
          {
            "frame_id": "f0",
            "url": "http://127.0.0.1:61313/approval",
            "name": "",
            "is_main": true
          }
        ],
        "frame_count": 1,
        "elements": [
          {
            "ref": "r15",
            "role": "heading",
            "name": "审批这一趟差旅。"
          },
          {
            "ref": "r16",
            "role": "textbox",
            "name": "申请人",
            "value": ""
          },
          {
            "ref": "r17",
            "role": "combobox",
            "name": "成本中心",
            "value": "",
            "options": [
              {
                "value": "",
                "label": "请选择",
                "selected": true,
                "disabled": false
              },
              {
                "value": "design",
                "label": "设计团队",
                "selected": false,
                "disabled": false
              },
              {
                "value": "engineering",
                "label": "研发团队",
                "selected": false,
                "disabled": false
              }
            ]
          },
          {
            "ref": "r18",
            "role": "checkbox",
            "name": "我已确认行程与预算",
            "value": "yes",
            "checked": false
          },
          {
            "ref": "r19",
            "role": "button",
            "name": "批准行程"
          },
          {
            "ref": "r20",
            "role": "heading",
            "name": "Casa Flora"
          }
        ],
        "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 03 / APPROVAL · NEW TAB 审批这一趟差旅。 原来的筛选页保留在另一个标签页。 申请人 成本中心 我已确认行程与预算 批准行程 提交后生成审批回执与可下载的行程文件。 待审批 Casa Flora Lisbon · 3 晚 · 2 人 € 780 取消政策 免费取消 预算余额 € 120 虚构差旅任务 · 无外部预订或付款",
        "truncated": false,
        "truncation": {
          "elements": false,
          "text": false,
          "fields": false,
          "scan": false,
          "metadata": false
        },
        "budgets": {
          "max_elements": 150,
          "text_limit": 6000,
          "max_frames": 100
        },
        "elapsed_ms": 5
      },
      "is_error": false,
      "elapsed_ms": 5.692
    },
    {
      "at_ms": 96039.596,
      "name": "tab_capture",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "url": "http://127.0.0.1:61313/approval",
        "mime_type": "image/jpeg",
        "bytes": 43300,
        "tab_id": "t2",
        "viewport": {
          "width": 1280,
          "height": 800,
          "scrollX": 0,
          "scrollY": 0
        },
        "coordinate_space": "viewport-css"
      },
      "is_error": false,
      "elapsed_ms": 22.083,
      "image_file": "04-popup.jpg"
    },
    {
      "at_ms": 108568.856,
      "name": "tab_act",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:7",
        "actions": [
          {
            "type": "fill",
            "ref": "r16",
            "value": "Lin Chen"
          },
          {
            "type": "select",
            "ref": "r17",
            "values": [
              "design"
            ]
          },
          {
            "type": "check",
            "ref": "r18",
            "checked": true
          },
          {
            "type": "click",
            "ref": "r19"
          }
        ]
      },
      "result": {
        "ok": true,
        "batch_complete": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:7",
        "partial": false,
        "completed": 4,
        "failed": null,
        "failed_action_may_have_side_effects": false,
        "results": [
          {
            "index": 0,
            "type": "fill",
            "status": "completed"
          },
          {
            "index": 1,
            "type": "select",
            "status": "completed"
          },
          {
            "index": 2,
            "type": "check",
            "status": "completed"
          },
          {
            "index": 3,
            "type": "click",
            "status": "completed"
          }
        ],
        "elapsed_ms": 438,
        "snapshot": {
          "ok": true,
          "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
          "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:8",
          "tab_id": "t2",
          "tabs": [
            {
              "tab_id": "t1",
              "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
              "active": false
            },
            {
              "tab_id": "t2",
              "url": "http://127.0.0.1:61313/receipt",
              "active": true
            }
          ],
          "scope": {
            "selector": null,
            "viewport_only": false
          },
          "mode": "full",
          "frame_id": "f0",
          "url": "http://127.0.0.1:61313/receipt",
          "title": "审批完成 — Wayfar",
          "frames": [
            {
              "frame_id": "f0",
              "url": "http://127.0.0.1:61313/receipt",
              "name": "",
              "is_main": true
            }
          ],
          "frame_count": 1,
          "elements": [
            {
              "ref": "r21",
              "role": "heading",
              "name": "审批通过，行程已就绪。"
            },
            {
              "ref": "r22",
              "role": "heading",
              "name": "一份可交付的行程"
            },
            {
              "ref": "r23",
              "role": "link",
              "name": "下载行程 CSV",
              "href": "http://127.0.0.1:61313/itinerary.csv"
            }
          ],
          "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 04 / READY TO GO ✓ 审批通过，行程已就绪。 审批编号 WF-001 申请人 Lin Chen 成本中心 设计团队 酒店 Casa Flora 行程 Lisbon · 3 晚 · 2 人 审批金额 EUR 780 审批完成 一份可交付的行程 下载 CSV 文件，交给同事或导入后续工作流。 下载行程 CSV 取消政策 免费取消 文件包含审批编号、城市、晚数、人数与金额。 虚构差旅任务 · 无外部预订或付款",
          "truncated": false,
          "truncation": {
            "elements": false,
            "text": false,
            "fields": false,
            "scan": false,
            "metadata": false
          },
          "budgets": {
            "max_elements": 150,
            "text_limit": 6000,
            "max_frames": 100
          },
          "elapsed_ms": 27
        }
      },
      "is_error": false,
      "elapsed_ms": 439.262
    },
    {
      "at_ms": 108899.858,
      "name": "tab_verify",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "checks": [
          {
            "kind": "title",
            "contains": "审批完成"
          },
          {
            "kind": "text",
            "contains": "WF-001"
          },
          {
            "kind": "text",
            "contains": "EUR 780"
          }
        ]
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "passed": true,
        "checks": [
          {
            "index": 0,
            "kind": "title",
            "pass": true,
            "actual": "审批完成 — Wayfar"
          },
          {
            "index": 1,
            "kind": "text",
            "pass": true,
            "actual": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 04 / READY TO GO ✓ 审批通过，行程已就绪。 审批编号 WF-001 申请人 Lin Chen 成本中心 设计团队 酒店 Casa Flora 行程 Lisbon · 3 晚 · 2 人 审批金额 EUR 780 审批完成 一份可交付的行程 下载 CSV 文件，交给同事或导入后续工作流。 下载行程 CSV 取消政策 免费取消 文件包含审批编号、城市、晚数、人数与金额。 虚构差旅任务 · 无外部预订或付款"
          },
          {
            "index": 2,
            "kind": "text",
            "pass": true,
            "actual": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 04 / READY TO GO ✓ 审批通过，行程已就绪。 审批编号 WF-001 申请人 Lin Chen 成本中心 设计团队 酒店 Casa Flora 行程 Lisbon · 3 晚 · 2 人 审批金额 EUR 780 审批完成 一份可交付的行程 下载 CSV 文件，交给同事或导入后续工作流。 下载行程 CSV 取消政策 免费取消 文件包含审批编号、城市、晚数、人数与金额。 虚构差旅任务 · 无外部预订或付款"
          }
        ],
        "elapsed_ms": 1
      },
      "is_error": false,
      "elapsed_ms": 2.155
    },
    {
      "at_ms": 109047.431,
      "name": "fixture.confirm_order",
      "result": {
        "submission_attempts": 1,
        "orders": [
          {
            "id": "WF-001",
            "requester": "Lin Chen",
            "cost_center": "design",
            "amount_eur": 780,
            "destination": "Lisbon",
            "nights": "3",
            "travelers": "2",
            "budget": "900",
            "flexible": "yes"
          }
        ]
      },
      "is_error": false,
      "elapsed_ms": 0,
      "not_mcp": true
    },
    {
      "at_ms": 109204.793,
      "name": "tab_capture",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "url": "http://127.0.0.1:61313/receipt",
        "mime_type": "image/jpeg",
        "bytes": 45004,
        "tab_id": "t2",
        "viewport": {
          "width": 1280,
          "height": 800,
          "scrollX": 0,
          "scrollY": 0
        },
        "coordinate_space": "viewport-css"
      },
      "is_error": false,
      "elapsed_ms": 9.243,
      "image_file": "05-approved.jpg"
    },
    {
      "at_ms": 123414.115,
      "name": "tab_snapshot",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:9",
        "tab_id": "t2",
        "tabs": [
          {
            "tab_id": "t1",
            "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
            "active": false
          },
          {
            "tab_id": "t2",
            "url": "http://127.0.0.1:61313/receipt",
            "active": true
          }
        ],
        "scope": {
          "selector": null,
          "viewport_only": false
        },
        "mode": "full",
        "frame_id": "f0",
        "url": "http://127.0.0.1:61313/receipt",
        "title": "审批完成 — Wayfar",
        "frames": [
          {
            "frame_id": "f0",
            "url": "http://127.0.0.1:61313/receipt",
            "name": "",
            "is_main": true
          }
        ],
        "frame_count": 1,
        "elements": [
          {
            "ref": "r21",
            "role": "heading",
            "name": "审批通过，行程已就绪。"
          },
          {
            "ref": "r22",
            "role": "heading",
            "name": "一份可交付的行程"
          },
          {
            "ref": "r23",
            "role": "link",
            "name": "下载行程 CSV",
            "href": "http://127.0.0.1:61313/itinerary.csv"
          }
        ],
        "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 04 / READY TO GO ✓ 审批通过，行程已就绪。 审批编号 WF-001 申请人 Lin Chen 成本中心 设计团队 酒店 Casa Flora 行程 Lisbon · 3 晚 · 2 人 审批金额 EUR 780 审批完成 一份可交付的行程 下载 CSV 文件，交给同事或导入后续工作流。 下载行程 CSV 取消政策 免费取消 文件包含审批编号、城市、晚数、人数与金额。 虚构差旅任务 · 无外部预订或付款",
        "truncated": false,
        "truncation": {
          "elements": false,
          "text": false,
          "fields": false,
          "scan": false,
          "metadata": false
        },
        "budgets": {
          "max_elements": 150,
          "text_limit": 6000,
          "max_frames": 100
        },
        "elapsed_ms": 4
      },
      "is_error": false,
      "elapsed_ms": 4.742
    },
    {
      "at_ms": 123996.205,
      "name": "tab_act",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:9",
        "actions": [
          {
            "type": "click",
            "ref": "r23"
          }
        ]
      },
      "result": {
        "ok": true,
        "batch_complete": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:9",
        "partial": false,
        "completed": 1,
        "failed": null,
        "failed_action_may_have_side_effects": false,
        "results": [
          {
            "index": 0,
            "type": "click",
            "status": "completed"
          }
        ],
        "elapsed_ms": 276,
        "snapshot": {
          "ok": true,
          "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
          "snapshot_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62:10",
          "tab_id": "t2",
          "tabs": [
            {
              "tab_id": "t1",
              "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
              "active": false
            },
            {
              "tab_id": "t2",
              "url": "http://127.0.0.1:61313/receipt",
              "active": true
            }
          ],
          "scope": {
            "selector": null,
            "viewport_only": false
          },
          "mode": "full",
          "frame_id": "f0",
          "url": "http://127.0.0.1:61313/receipt",
          "title": "审批完成 — Wayfar",
          "frames": [
            {
              "frame_id": "f0",
              "url": "http://127.0.0.1:61313/receipt",
              "name": "",
              "is_main": true
            }
          ],
          "frame_count": 1,
          "elements": [
            {
              "ref": "r21",
              "role": "heading",
              "name": "审批通过，行程已就绪。"
            },
            {
              "ref": "r22",
              "role": "heading",
              "name": "一份可交付的行程"
            },
            {
              "ref": "r23",
              "role": "link",
              "name": "下载行程 CSV",
              "href": "http://127.0.0.1:61313/itinerary.csv"
            }
          ],
          "text": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 04 / READY TO GO ✓ 审批通过，行程已就绪。 审批编号 WF-001 申请人 Lin Chen 成本中心 设计团队 酒店 Casa Flora 行程 Lisbon · 3 晚 · 2 人 审批金额 EUR 780 审批完成 一份可交付的行程 下载 CSV 文件，交给同事或导入后续工作流。 下载行程 CSV 取消政策 免费取消 文件包含审批编号、城市、晚数、人数与金额。 虚构差旅任务 · 无外部预订或付款",
          "truncated": false,
          "truncation": {
            "elements": false,
            "text": false,
            "fields": false,
            "scan": false,
            "metadata": false
          },
          "budgets": {
            "max_elements": 150,
            "text_limit": 6000,
            "max_frames": 100
          },
          "elapsed_ms": 4
        }
      },
      "is_error": false,
      "elapsed_ms": 277.04
    },
    {
      "at_ms": 124331.4,
      "name": "tab_downloads",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "downloads": [
          {
            "id": "9300b300-410c-471c-a7ff-9788849ab95f",
            "filename": "wayfar-itinerary.csv",
            "url": "http://127.0.0.1:61313/itinerary.csv",
            "status": "completed",
            "path": "/tmp/tablaze-artifacts-ufu8nc/9300b300-410c-471c-a7ff-9788849ab95f.download",
            "bytes": 145
          }
        ]
      },
      "is_error": false,
      "elapsed_ms": 0.69
    },
    {
      "at_ms": 124683.279,
      "name": "tab_downloads",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "download_id": "9300b300-410c-471c-a7ff-9788849ab95f",
        "timeout_ms": 5000
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "downloads": [
          {
            "id": "9300b300-410c-471c-a7ff-9788849ab95f",
            "filename": "wayfar-itinerary.csv",
            "url": "http://127.0.0.1:61313/itinerary.csv",
            "status": "completed",
            "path": "/tmp/tablaze-artifacts-ufu8nc/9300b300-410c-471c-a7ff-9788849ab95f.download",
            "bytes": 145
          }
        ]
      },
      "is_error": false,
      "elapsed_ms": 0.506
    },
    {
      "at_ms": 124835.895,
      "name": "artifact.verify_bytes",
      "result": {
        "filename": "wayfar-itinerary.csv",
        "status": "completed",
        "bytes": 145,
        "sha256": "3e2e22c4d5385e7e3f2ebb95793c414ce46cf226e287ca450e09afaec2b1dd53",
        "expected_sha256": "3e2e22c4d5385e7e3f2ebb95793c414ce46cf226e287ca450e09afaec2b1dd53",
        "contents_match": true,
        "server_download_requests": 1,
        "retained_file": "wayfar-itinerary.csv"
      },
      "is_error": false,
      "elapsed_ms": 0,
      "not_mcp": true
    },
    {
      "at_ms": 141450.616,
      "name": "tab_tabs",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "action": "list"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "tabs": [
          {
            "tab_id": "t1",
            "url": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes",
            "active": false
          },
          {
            "tab_id": "t2",
            "url": "http://127.0.0.1:61313/receipt",
            "active": true
          }
        ]
      },
      "is_error": false,
      "elapsed_ms": 0.59
    },
    {
      "at_ms": 141766.152,
      "name": "tab_close",
      "arguments": {
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62"
      },
      "result": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "closed": true
      },
      "is_error": false,
      "elapsed_ms": 15.363
    },
    {
      "at_ms": 142068.172,
      "name": "tab_list",
      "arguments": {},
      "result": {
        "ok": true,
        "sessions": []
      },
      "is_error": false,
      "elapsed_ms": 0.55
    }
  ],
  "chapters": [
    {
      "id": "overview",
      "start_seconds": 0,
      "title_zh": "从一句任务，到一份可交付的行程。",
      "title_en": "One task. An approved trip. A verified file."
    },
    {
      "id": "batch",
      "start_seconds": 14.866,
      "title_zh": "六个步骤，一次有序提交。",
      "title_en": "Six actions in one ordered request."
    },
    {
      "id": "verify",
      "start_seconds": 40.403,
      "title_zh": "点完之后，再验收五项结果。",
      "title_en": "Verify the outcome beyond a successful click."
    },
    {
      "id": "guard",
      "start_seconds": 55.658,
      "title_zh": "页面更新了，旧引用先停下来。",
      "title_en": "A changed target stops the next action."
    },
    {
      "id": "popup",
      "start_seconds": 93.979,
      "title_zh": "跟随审批弹窗，把流程接下去。",
      "title_en": "Continue the workflow in its owned approval tab."
    },
    {
      "id": "download",
      "start_seconds": 122.187,
      "title_zh": "拿到文件，还要核对文件内容。",
      "title_en": "Deliver the file and verify its actual bytes."
    },
    {
      "id": "recap",
      "start_seconds": 141.47,
      "title_zh": "做完工作，留下可核查的结果。",
      "title_en": "The task is complete. The evidence stays with it."
    }
  ],
  "presentation_holds": [
    {
      "at_ms": 2351.869,
      "duration_ms": 12952.472
    },
    {
      "at_ms": 15774.822,
      "duration_ms": 11280.770999999999
    },
    {
      "at_ms": 28839.549,
      "duration_ms": 12000
    },
    {
      "at_ms": 41772.3,
      "duration_ms": 14000
    },
    {
      "at_ms": 56568.988,
      "duration_ms": 11375.057
    },
    {
      "at_ms": 69238.959,
      "duration_ms": 13000
    },
    {
      "at_ms": 83155.792,
      "duration_ms": 11266.349
    },
    {
      "at_ms": 96483.589,
      "duration_ms": 11187.891
    },
    {
      "at_ms": 109648.304,
      "duration_ms": 13000
    },
    {
      "at_ms": 124980.131,
      "duration_ms": 16000
    },
    {
      "at_ms": 142379.404,
      "duration_ms": 12000
    }
  ],
  "checks": {
    "handshake": {
      "server": {
        "name": "tablaze",
        "version": "0.1.0"
      },
      "tools": [
        "tab_open",
        "tab_snapshot",
        "tab_act",
        "tab_extract",
        "tab_verify",
        "tab_capture",
        "tab_list",
        "tab_close",
        "tab_navigate",
        "tab_tabs",
        "tab_downloads",
        "tab_dialog",
        "tab_state",
        "tab_pdf",
        "tab_extract_structured"
      ]
    },
    "batch": {
      "completed": 6,
      "requested": 6,
      "tool_elapsed_ms": 510.7,
      "server_filters": {
        "destination": "Lisbon",
        "nights": "3",
        "travelers": "2",
        "budget": "900",
        "flexible": "yes"
      },
      "search_requests": 1
    },
    "result_verification": {
      "ok": true,
      "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
      "passed": true,
      "checks": [
        {
          "index": 0,
          "kind": "url",
          "pass": true,
          "actual": "http://127.0.0.1:61313/results?destination=Lisbon&nights=3&travelers=2&budget=900&flexible=yes"
        },
        {
          "index": 1,
          "kind": "title",
          "pass": true,
          "actual": "酒店筛选结果 — Wayfar"
        },
        {
          "index": 2,
          "kind": "text",
          "pass": true,
          "actual": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 02 / MATCH YOUR CRITERIA 里斯本，一处合适的落脚点。 3 晚 · 2 人 · 免费取消 · 预算 € 900 符合全部条件 Casa Flora Lisbon · 双人套房 · 含早餐 免费取消 € 780 3 晚总价 · 低于预算 € 120 结果可验收 城市、晚数、人数与政策 发起审批 房型与价格已刷新。 APPLIED FILTERS 目的地 住宿晚数 3 晚 出行人数 2 人 预算上限 € 900 ✓ 筛选 → 审批 → 导出 虚构差旅任务 · 无外部预订或付款"
        },
        {
          "index": 3,
          "kind": "value",
          "pass": true,
          "actual": "Lisbon"
        },
        {
          "index": 4,
          "kind": "count",
          "pass": true,
          "actual": 1
        }
      ],
      "elapsed_ms": 11
    },
    "changed_target": {
      "refused_code": "STALE_REFERENCE",
      "completed": 0,
      "popup_visits": 0,
      "submission_attempts": 0,
      "orders": 0
    },
    "approval": {
      "popup_followed": {
        "from_tab_id": "t1",
        "tab_id": "t2",
        "action_index": 0,
        "window_ms": 250
      },
      "owned_tabs": 2,
      "completed": 4,
      "tool_elapsed_ms": 439.262,
      "server": {
        "searches": 1,
        "popup_visits": 1,
        "submission_attempts": 1,
        "downloads": 0,
        "replacements": 1,
        "filters": {
          "destination": "Lisbon",
          "nights": "3",
          "travelers": "2",
          "budget": "900",
          "flexible": "yes"
        },
        "orders": [
          {
            "id": "WF-001",
            "requester": "Lin Chen",
            "cost_center": "design",
            "amount_eur": 780,
            "destination": "Lisbon",
            "nights": "3",
            "travelers": "2",
            "budget": "900",
            "flexible": "yes"
          }
        ]
      },
      "verification": {
        "ok": true,
        "session_id": "5ef88cb5-8c4d-4b67-a6de-61992d5ead62",
        "passed": true,
        "checks": [
          {
            "index": 0,
            "kind": "title",
            "pass": true,
            "actual": "审批完成 — Wayfar"
          },
          {
            "index": 1,
            "kind": "text",
            "pass": true,
            "actual": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 04 / READY TO GO ✓ 审批通过，行程已就绪。 审批编号 WF-001 申请人 Lin Chen 成本中心 设计团队 酒店 Casa Flora 行程 Lisbon · 3 晚 · 2 人 审批金额 EUR 780 审批完成 一份可交付的行程 下载 CSV 文件，交给同事或导入后续工作流。 下载行程 CSV 取消政策 免费取消 文件包含审批编号、城市、晚数、人数与金额。 虚构差旅任务 · 无外部预订或付款"
          },
          {
            "index": 2,
            "kind": "text",
            "pass": true,
            "actual": "way far / 差旅工作台 TABLAZE DEMO · 本地演示 04 / READY TO GO ✓ 审批通过，行程已就绪。 审批编号 WF-001 申请人 Lin Chen 成本中心 设计团队 酒店 Casa Flora 行程 Lisbon · 3 晚 · 2 人 审批金额 EUR 780 审批完成 一份可交付的行程 下载 CSV 文件，交给同事或导入后续工作流。 下载行程 CSV 取消政策 免费取消 文件包含审批编号、城市、晚数、人数与金额。 虚构差旅任务 · 无外部预订或付款"
          }
        ],
        "elapsed_ms": 1
      }
    },
    "download": {
      "filename": "wayfar-itinerary.csv",
      "status": "completed",
      "bytes": 145,
      "sha256": "3e2e22c4d5385e7e3f2ebb95793c414ce46cf226e287ca450e09afaec2b1dd53",
      "expected_sha256": "3e2e22c4d5385e7e3f2ebb95793c414ce46cf226e287ca450e09afaec2b1dd53",
      "contents_match": true,
      "server_download_requests": 1,
      "retained_file": "wayfar-itinerary.csv"
    },
    "cleanup": {
      "closed_owned_tabs": 2,
      "remaining_sessions": 0,
      "stderr_empty": true
    }
  },
  "summary": {
    "mcp_calls": 22,
    "successful_actions": 12,
    "rejected_actions": 1,
    "tool_elapsed_ms": 2161.036,
    "browser_assertions_passed": 8,
    "server_orders": 1,
    "downloaded_files": 1,
    "remaining_sessions": 0
  },
  "recording_duration_ms": 154864.792,
  "video_timeline_seconds": 154.104,
  "video_encoding": {
    "file": "tablaze-demo-hd.mp4",
    "codec": "H.264",
    "frames_per_second": 12,
    "crf": 16,
    "width": 2880,
    "height": 1800,
    "audio": {
      "codec": "AAC",
      "language": "en-US",
      "sample_rate": 48000,
      "bit_rate": 192000,
      "target_lufs": -16,
      "synthesis": "Microsoft Edge online neural TTS",
      "voices": [
        "en-US-AndrewMultilingualNeural"
      ],
      "segments": 11
    },
    "source": "Lossless 2x presentation PNG frames, encoded once. Real tab_capture images are embedded without re-encoding.",
    "encoder_sha256": "6d175a4743ca50256e89a8cdd731100f9cee33bd79aeea46894d209410dc6617",
    "command_arguments": [
      "-y",
      "-hide_banner",
      "-loglevel",
      "warning",
      "-i",
      "ORIGINAL/tablaze-demo-hd.mp4",
      "-i",
      "NARRATION/01-overview.wav",
      "-i",
      "NARRATION/02-six-actions.wav",
      "-i",
      "NARRATION/03-batch-complete.wav",
      "-i",
      "NARRATION/04-result-checks.wav",
      "-i",
      "NARRATION/05-node-replacement.wav",
      "-i",
      "NARRATION/06-stale-rejected.wav",
      "-i",
      "NARRATION/07-fresh-observation.wav",
      "-i",
      "NARRATION/08-popup-follow.wav",
      "-i",
      "NARRATION/09-approval.wav",
      "-i",
      "NARRATION/10-download-verify.wav",
      "-i",
      "NARRATION/11-summary-cleanup.wav",
      "-filter_complex",
      "[1:a]aresample=48000,adelay=1992:all=1[a0];[2:a]aresample=48000,adelay=15415:all=1[a1];[3:a]aresample=48000,adelay=28479:all=1[a2];[4:a]aresample=48000,adelay=41410:all=1[a3];[5:a]aresample=48000,adelay=56206:all=1[a4];[6:a]aresample=48000,adelay=68878:all=1[a5];[7:a]aresample=48000,adelay=82792:all=1[a6];[8:a]aresample=48000,adelay=96121:all=1[a7];[9:a]aresample=48000,adelay=109289:all=1[a8];[10:a]aresample=48000,adelay=124619:all=1[a9];[11:a]aresample=48000,adelay=142020:all=1[a10];[a0][a1][a2][a3][a4][a5][a6][a7][a8][a9][a10]amix=inputs=11:duration=longest:normalize=0,loudnorm=I=-16:TP=-1.5:LRA=7,apad[voice]",
      "-map",
      "0:v:0",
      "-map",
      "[voice]",
      "-c:v",
      "copy",
      "-c:a",
      "aac",
      "-b:a",
      "192k",
      "-ar",
      "48000",
      "-metadata:s:a:0",
      "language=eng",
      "-t",
      "154.104",
      "-movflags",
      "+faststart",
      "tablaze-demo-hd.mp4"
    ],
    "frames": [
      {
        "file": "frames/0000.png",
        "at_seconds": 0,
        "sha256": "8ee8a7e6e74241919b7d7c77a88b28dc41da90a9eec1abd442fb2d6e02dd4c3e"
      },
      {
        "file": "frames/0001.png",
        "at_seconds": 0.353,
        "sha256": "2587a389bdb32ac0fc067a943273f1cdb6ede0cd9d6496c5158f70f721c8deb0"
      },
      {
        "file": "frames/0002.png",
        "at_seconds": 0.939,
        "sha256": "093ea1da75d59b56ddfb4a49c390e188e9ebec4fa2d4c61d9ca0f3e9f7a11247"
      },
      {
        "file": "frames/0003.png",
        "at_seconds": 1.042,
        "sha256": "ee067b4fa41d47ceac8d7ae3de3c37ec8122b9296b1bf3254ed35181271badaa"
      },
      {
        "file": "frames/0004.png",
        "at_seconds": 1.185,
        "sha256": "476f07400678a591b26848884ff7fe4aece778ccf1049ba19d5d8d5818bd51f9"
      },
      {
        "file": "frames/0005.png",
        "at_seconds": 1.296,
        "sha256": "907782e976099091c572fd512f321b357ed35fedf0129433ba724be8205a7e43"
      },
      {
        "file": "frames/0006.png",
        "at_seconds": 1.446,
        "sha256": "ef0202552ecc71079aa3352ba816a9b06e206969c8e699e3589f2a9eeccb8842"
      },
      {
        "file": "frames/0007.png",
        "at_seconds": 1.592,
        "sha256": "2c4cb2733fc95894852647846671fb162db0b22a843d89a1a60ae7852eaa8246"
      },
      {
        "file": "frames/0008.png",
        "at_seconds": 14.696,
        "sha256": "da543c8d565ef619dfc480c100b539ca3640118715990b946b185d4f65853b72"
      },
      {
        "file": "frames/0009.png",
        "at_seconds": 14.867,
        "sha256": "9733d5ced254f419fdbc74afd7c6cd5df3f555eab9589c801331f47d1ce37db7"
      },
      {
        "file": "frames/0010.png",
        "at_seconds": 15.015,
        "sha256": "215cb5cb644f12270b8e4c297b68830c488ca705509a37d0436a2a24c01c6289"
      },
      {
        "file": "frames/0011.png",
        "at_seconds": 26.449,
        "sha256": "9733d5ced254f419fdbc74afd7c6cd5df3f555eab9589c801331f47d1ce37db7"
      },
      {
        "file": "frames/0012.png",
        "at_seconds": 26.642,
        "sha256": "912dc4ebcc8ce2423de6708f077a3a0ad7ede4531f0dda32f12104fd7e042488"
      },
      {
        "file": "frames/0013.png",
        "at_seconds": 27.319,
        "sha256": "38879788b91870702d5c141e2b91503202274cd4dd082bc83f7e16f69b8e1e87"
      },
      {
        "file": "frames/0014.png",
        "at_seconds": 27.465,
        "sha256": "6c4930e7e2ecab96e5563255090083791139cc9d413d2150ab9fdebf12e9ad5b"
      },
      {
        "file": "frames/0015.png",
        "at_seconds": 27.635,
        "sha256": "3d298be59c13e9c1b2571ffd1432365566352dd2d673397b9bf347ea281d5968"
      },
      {
        "file": "frames/0016.png",
        "at_seconds": 27.784,
        "sha256": "b76c3dc2e8709eb00d15e3be120df248f5cc7dd812ac7f9f2ad2eae968cbaf68"
      },
      {
        "file": "frames/0017.png",
        "at_seconds": 27.931,
        "sha256": "ef541cc331868367a13123032c1e7a115acba27833986649c401703a059fe4d5"
      },
      {
        "file": "frames/0018.png",
        "at_seconds": 28.08,
        "sha256": "1c19929928c489eb498e3052aa493cd6510dd36ed0e806ae1726071208705feb"
      },
      {
        "file": "frames/0019.png",
        "at_seconds": 40.233,
        "sha256": "ef541cc331868367a13123032c1e7a115acba27833986649c401703a059fe4d5"
      },
      {
        "file": "frames/0020.png",
        "at_seconds": 40.404,
        "sha256": "fe0b522a78059025898830c71ad5b906fd7cc720d8e071b3e21f841a2be6f7e9"
      },
      {
        "file": "frames/0021.png",
        "at_seconds": 40.55,
        "sha256": "f111bc5d6cbdd7cbb9b18f50ef434a59b2e6d94056f3864571d97f349379f373"
      },
      {
        "file": "frames/0022.png",
        "at_seconds": 40.709,
        "sha256": "971bcbb8ddf5530b4093b8e88e78a9462be6f3a556b074a921113810e6d37c4a"
      },
      {
        "file": "frames/0023.png",
        "at_seconds": 40.87,
        "sha256": "9b5aff64156daf174bd28c1b3b0541cfa28b3e97771e4cbada8e90b5c65cc550"
      },
      {
        "file": "frames/0024.png",
        "at_seconds": 41.012,
        "sha256": "1713da8142289d07de531433e86c038e7e6013b07be67324a4d5f97c8247759e"
      },
      {
        "file": "frames/0025.png",
        "at_seconds": 55.166,
        "sha256": "9b5aff64156daf174bd28c1b3b0541cfa28b3e97771e4cbada8e90b5c65cc550"
      },
      {
        "file": "frames/0026.png",
        "at_seconds": 55.354,
        "sha256": "b142f0b56a659e1c5f0c0639938b8fa188d361eb56f0197100211a6edc72ea56"
      },
      {
        "file": "frames/0027.png",
        "at_seconds": 55.509,
        "sha256": "2f0ba6b10def60fc58d8a27dce586cb48f1ad2b5d57d1a455448985c1013c972"
      },
      {
        "file": "frames/0028.png",
        "at_seconds": 55.659,
        "sha256": "f7f69222d91955afa441e12b5425ddf23fa1231d7b52841d1e5e567ac39ecda6"
      },
      {
        "file": "frames/0029.png",
        "at_seconds": 55.81,
        "sha256": "6f5f43b4a00d84e201997678b67a7152355fd0ac3c5abedd70251226dd01bf03"
      },
      {
        "file": "frames/0030.png",
        "at_seconds": 67.334,
        "sha256": "2c373fa329e9820f557eaad150d62002383ff1bffe955222f2b5ca39c36eb6e3"
      },
      {
        "file": "frames/0031.png",
        "at_seconds": 67.546,
        "sha256": "95c4d917ea46a0e1e9ef5ad2c6c1cd89ceead27175b16a059be327bbf6a725f9"
      },
      {
        "file": "frames/0032.png",
        "at_seconds": 67.713,
        "sha256": "7c1c2728dad3db6bc510a7cd680d188df09b3f96ac70e99e7481bd821db8fa66"
      },
      {
        "file": "frames/0033.png",
        "at_seconds": 67.859,
        "sha256": "cb23329d5880493a583a483b11fae5c03982b5788fc83d67427a97c493b344d2"
      },
      {
        "file": "frames/0034.png",
        "at_seconds": 68.034,
        "sha256": "c91f666f706b2eed8edc887ca28f848cdbc244b54a454de3cc166748c2915617"
      },
      {
        "file": "frames/0035.png",
        "at_seconds": 68.18,
        "sha256": "c91f666f706b2eed8edc887ca28f848cdbc244b54a454de3cc166748c2915617"
      },
      {
        "file": "frames/0036.png",
        "at_seconds": 68.327,
        "sha256": "e2d1236d39f28b577232c398ffb51618f0327cfa74d117e3a21111572b6df6eb"
      },
      {
        "file": "frames/0037.png",
        "at_seconds": 68.479,
        "sha256": "949f508ecd41c8510cb5f6fc19d6943772e445593dffd1d7b5a4edc14fac26be"
      },
      {
        "file": "frames/0038.png",
        "at_seconds": 81.633,
        "sha256": "12a74c1503e25656a773a52e57a0f7b3324e3832f1c1dcec4a146b116e69d2df"
      },
      {
        "file": "frames/0039.png",
        "at_seconds": 81.903,
        "sha256": "2a2dcb1461645d86e665d585b9fdb04b4537dcbc58a54f52f7f8c8f9b43ecce5"
      },
      {
        "file": "frames/0040.png",
        "at_seconds": 82.1,
        "sha256": "7292d53db246dd6cb3c5677f0166f1d5063a0c7603d272b90a16689aa4613693"
      },
      {
        "file": "frames/0041.png",
        "at_seconds": 82.25,
        "sha256": "6b4ae0f3e1d0ad43b5bdf2c860c4bee29bc494fe8cb00a652c9d8c040b6d5458"
      },
      {
        "file": "frames/0042.png",
        "at_seconds": 82.396,
        "sha256": "1808f8307995fd66701f0caa6cfb9f8f03e9b8c107622df15762a1f91be793fc"
      },
      {
        "file": "frames/0043.png",
        "at_seconds": 93.812,
        "sha256": "6b4ae0f3e1d0ad43b5bdf2c860c4bee29bc494fe8cb00a652c9d8c040b6d5458"
      },
      {
        "file": "frames/0044.png",
        "at_seconds": 93.98,
        "sha256": "b277ed22023eaacacf3a8d53559475239fdf97da2b1277aac8d0d6b14ada8b37"
      },
      {
        "file": "frames/0045.png",
        "at_seconds": 94.186,
        "sha256": "c04231dfa582c53caa1d274e01ca74231dce39d9ff771fe819785b3519d2759f"
      },
      {
        "file": "frames/0046.png",
        "at_seconds": 94.617,
        "sha256": "7b4b8c3665692877dd3d83c363a209d12142df06fead7501e955483faffed1ef"
      },
      {
        "file": "frames/0047.png",
        "at_seconds": 94.771,
        "sha256": "8ea8c45d8c96ac9cf75c708326d215f2c6943da6bf8a053ac6f8cd2714cee963"
      },
      {
        "file": "frames/0048.png",
        "at_seconds": 94.957,
        "sha256": "ffca6b06c24e3943db00375849867f36554befbd7a781ed278bbaf2fb8209077"
      },
      {
        "file": "frames/0049.png",
        "at_seconds": 95.111,
        "sha256": "be635d66c34056ed2f3c9a680ea53a9c57882b1c609f9583c4ff6bfa03d6a07d"
      },
      {
        "file": "frames/0050.png",
        "at_seconds": 95.283,
        "sha256": "44b8b51a22fb5b20b7aba95be595ad1e3dc60b032b8f05346cc1277510dc1d97"
      },
      {
        "file": "frames/0051.png",
        "at_seconds": 95.424,
        "sha256": "c8c8adeab730125a0a025f78cd2596d0a24f5434ba106cee2aa02a852cac420b"
      },
      {
        "file": "frames/0052.png",
        "at_seconds": 95.57,
        "sha256": "da4078bc5888dc7fe3755f91a20428e7f5593ee1950034b1bcf18d084891b67e"
      },
      {
        "file": "frames/0053.png",
        "at_seconds": 95.724,
        "sha256": "b72f873de12f47cf3938d94bb258f7dbe4486db2b2c53fd1986c3436c3368d9f"
      },
      {
        "file": "frames/0054.png",
        "at_seconds": 107.063,
        "sha256": "da4078bc5888dc7fe3755f91a20428e7f5593ee1950034b1bcf18d084891b67e"
      },
      {
        "file": "frames/0055.png",
        "at_seconds": 107.227,
        "sha256": "b7454f6a25b26bc12d7e63750c88a669233fddd4c4940a01036a4259d2c1fe35"
      },
      {
        "file": "frames/0056.png",
        "at_seconds": 107.819,
        "sha256": "017a791670f7e34a98ce449990f49a37863c2bc4edb322f2d5b1a07b984f405a"
      },
      {
        "file": "frames/0057.png",
        "at_seconds": 107.994,
        "sha256": "ff735fcadb0c73246ed911d5871b086cf38f51d02f862b8cf6ae452b7f8de35f"
      },
      {
        "file": "frames/0058.png",
        "at_seconds": 108.144,
        "sha256": "6bd865bbd7728f180ee97ad46c4dc9dfc319ef2b33c9708da8b65920514dce9f"
      },
      {
        "file": "frames/0059.png",
        "at_seconds": 108.288,
        "sha256": "5f59e6816d4c78594bf764700acd5ab35b22f43ee9d841cd246724ccda48694a"
      },
      {
        "file": "frames/0060.png",
        "at_seconds": 108.45,
        "sha256": "21a437d41fd04abbfa9701480ba384aa438caaff69882ac7076f0ce6e7405c77"
      },
      {
        "file": "frames/0061.png",
        "at_seconds": 108.588,
        "sha256": "d59fe0271cac272db0ac72c78238ca03e4a8f6ad47e6372327f658cfe69ed9be"
      },
      {
        "file": "frames/0062.png",
        "at_seconds": 108.741,
        "sha256": "df8ce21fe67762ec71aad17bcccacb9178cefd03f28fcc3ceadd7bf0e8b64b5b"
      },
      {
        "file": "frames/0063.png",
        "at_seconds": 108.888,
        "sha256": "035b707e1729b037be641cc21ca42711d4548c9eaf7fdc6c7b252d47f6cd6a58"
      },
      {
        "file": "frames/0064.png",
        "at_seconds": 122.04,
        "sha256": "df8ce21fe67762ec71aad17bcccacb9178cefd03f28fcc3ceadd7bf0e8b64b5b"
      },
      {
        "file": "frames/0065.png",
        "at_seconds": 122.187,
        "sha256": "a1b7fec23409fd10e7f52544889184ef7f1f5e9db73daeb9240f62cf6531a4ae"
      },
      {
        "file": "frames/0066.png",
        "at_seconds": 122.4,
        "sha256": "6b2c6c79d5681d8d6165a35569356a58766839edd09d0f4ac096c5397007c41c"
      },
      {
        "file": "frames/0067.png",
        "at_seconds": 122.659,
        "sha256": "b8337d0145f4b73c90337f59ae1a4f034ee411e405457e3a9c11caa162eed0da"
      },
      {
        "file": "frames/0068.png",
        "at_seconds": 122.804,
        "sha256": "471724d1286875a3962a616b56f5a92ced412e8c8e5666e285400db3bb20d51b"
      },
      {
        "file": "frames/0069.png",
        "at_seconds": 123.242,
        "sha256": "c255c945283c26a23f8779bd2333062bd3bd9e500f2b8838f8bc921e4c2aab6a"
      },
      {
        "file": "frames/0070.png",
        "at_seconds": 123.387,
        "sha256": "d47316052a678cbd351f9247818037b6ec1baf2f8ef76ac1a6f41c145f72715b"
      },
      {
        "file": "frames/0071.png",
        "at_seconds": 123.577,
        "sha256": "f251d4b5dde70280d3c8b68f965282bcbf6732f41703f820bc8bbf5a0c7c6b23"
      },
      {
        "file": "frames/0072.png",
        "at_seconds": 123.782,
        "sha256": "81d6e9891f76b8c4374a4cb51baf472ee2977ebeb31f0184ee25b959d48dc0d7"
      },
      {
        "file": "frames/0073.png",
        "at_seconds": 123.929,
        "sha256": "508ed9c89696fd5bd9b9df0444ffcf2b36b6ce8e557d8807c255d422b417df96"
      },
      {
        "file": "frames/0074.png",
        "at_seconds": 124.077,
        "sha256": "9868d59ec1e54417e0bb1abf8140cde5a4a9bb28d7fb07c364b7c713ee67819d"
      },
      {
        "file": "frames/0075.png",
        "at_seconds": 124.22,
        "sha256": "d587952048ed99a285cafaa8bc12d4c12ea7c51b1fffea60e596bbd3201f50fa"
      },
      {
        "file": "frames/0076.png",
        "at_seconds": 140.372,
        "sha256": "9868d59ec1e54417e0bb1abf8140cde5a4a9bb28d7fb07c364b7c713ee67819d"
      },
      {
        "file": "frames/0077.png",
        "at_seconds": 140.55,
        "sha256": "4c90710c5c4ab6da5804872aaf805bb736f5403a00b8712879e6a559ca193a6c"
      },
      {
        "file": "frames/0078.png",
        "at_seconds": 140.696,
        "sha256": "4b1b91303cf251d2ca20f063fa953f5696d1de60ef2465baa948cbc2512f8ecd"
      },
      {
        "file": "frames/0079.png",
        "at_seconds": 140.835,
        "sha256": "43b6e545cc0ddbd8ed72f2756d0e383ccda34a6d2068d1c1d89f93564930d8be"
      },
      {
        "file": "frames/0080.png",
        "at_seconds": 141.015,
        "sha256": "1871490fcf429cd60820aaa9caba3ec3edc619b06f9525dfb17deed2436dda03"
      },
      {
        "file": "frames/0081.png",
        "at_seconds": 141.166,
        "sha256": "3d1bf840204f0716931d3555cd662215e574214595168206a98b6657e9221050"
      },
      {
        "file": "frames/0082.png",
        "at_seconds": 141.318,
        "sha256": "0c25380e81ac3c216728dc18d84f872096f01392a8042c4cfe97ec5964d9b90b"
      },
      {
        "file": "frames/0083.png",
        "at_seconds": 141.47,
        "sha256": "4ffeb82e82bec01e15cd0e012639929bd8ad61520c6eee25638406ee2850e9c3"
      },
      {
        "file": "frames/0084.png",
        "at_seconds": 141.62,
        "sha256": "dbac6d3544878627bdae62a55cd26fa5c7d7f32ec5610fa888e7d404634b4f9c"
      },
      {
        "file": "frames/0085.png",
        "at_seconds": 153.774,
        "sha256": "4ffeb82e82bec01e15cd0e012639929bd8ad61520c6eee25638406ee2850e9c3"
      }
    ],
    "narration": [
      {
        "index": 0,
        "id": "overview",
        "text": "Let's find a Lisbon hotel for two: three nights, a nine-hundred-euro budget, and free cancellation. We'll search, handle approval, and check the downloaded file.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 11.376,
        "sha256": "d2a187076d8a517357567c51873deb9fb6be89e53daedaa0b28fef8de2893b56",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "44a33d2915d98b6db2719a996771fde32b61732469fc1527dce9a3396694a87b",
        "text_zh": "来找一家里斯本酒店，两人住三晚，预算九百欧，还要能免费取消。接着走完搜索、审批，再核验下载的文件。",
        "start_seconds": 1.992,
        "next_start_or_end_seconds": 15.415,
        "hold_available_seconds": 12.702472,
        "max_duration_seconds": 12.302472,
        "remaining_before_next_seconds": 2.047,
        "remaining_in_hold_seconds": 1.326472,
        "timing_passed": true,
        "file": "01-overview.wav",
        "source_file": "01-overview.mp3"
      },
      {
        "index": 1,
        "id": "six-actions",
        "text": "Fill in the city, nights, guests, and budget, select free cancellation, then search. Those six actions run in order in one request.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 9.648,
        "sha256": "fc490ca2f6332ae527ddd1060a49b57ca4b12c0f2296aaee809efedafdae9e76",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "9ae3efb77b5d4a79aa6d79a3bae83f453512a0f09f69f63bb224a8d6750cf1a0",
        "text_zh": "填好城市、晚数、人数和预算，勾选免费取消，再搜索。这六个动作放在同一个请求里，按顺序执行。",
        "start_seconds": 15.415,
        "next_start_or_end_seconds": 28.479,
        "hold_available_seconds": 11.030771,
        "max_duration_seconds": 10.630771,
        "remaining_before_next_seconds": 3.416,
        "remaining_in_hold_seconds": 1.382771,
        "timing_passed": true,
        "file": "02-six-actions.wav",
        "source_file": "02-six-actions.mp3"
      },
      {
        "index": 2,
        "id": "batch-complete",
        "text": "All six actions are done, and the matching hotels are on screen. The server confirms we sent just one search request.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 7.488,
        "sha256": "d0fdfe7f8f6b4dcd2256b8e1dc3d251c8b1d50b33cd422edfd20b083c7e0a0bc",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "553612a7f45b7ceec7f137b233335df2bc43803509cd356d0da67f63ea8cdb68",
        "text_zh": "六个动作都完成了，符合条件的酒店也出来了。服务器记录确认，我们只发起了一次搜索请求。",
        "start_seconds": 28.479,
        "next_start_or_end_seconds": 41.41,
        "hold_available_seconds": 11.75,
        "max_duration_seconds": 11.35,
        "remaining_before_next_seconds": 5.443,
        "remaining_in_hold_seconds": 4.262,
        "timing_passed": true,
        "file": "03-batch-complete.wav",
        "source_file": "03-batch-complete.mp3"
      },
      {
        "index": 3,
        "id": "result-checks",
        "text": "Now let's check the URL, title, page text, form fields, and hotel count. All five checks pass, so the search is confirmed.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 9.288,
        "sha256": "5f1aaf789673e2ebee2ed3780c6edb74476d2c462da831a887703bd45a9327cd",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "0a62602f199eb9e347226a87ca497c8c3ea97d991bae8e4f8103be2e8490f197",
        "text_zh": "再来核对网址、标题、页面文字、表单字段和酒店数量。五项检查都通过，这次搜索才算确认成功。",
        "start_seconds": 41.41,
        "next_start_or_end_seconds": 56.206,
        "hold_available_seconds": 13.75,
        "max_duration_seconds": 13.35,
        "remaining_before_next_seconds": 5.508,
        "remaining_in_hold_seconds": 4.462,
        "timing_passed": true,
        "file": "04-result-checks.wav",
        "source_file": "04-result-checks.mp3"
      },
      {
        "index": 4,
        "id": "node-replacement",
        "text": "Let's replace the button's page element without changing its appearance. It still looks the same, but that old reference no longer works.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 8.328,
        "sha256": "800dbc9b107ff46f29b58374e8a7e29e981690155b1940f4b08ca9a4d5f2a551",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "27b9922ae4dcccfc7876037c8c5470e41dc24045c7e2d921330f6e28cb3785f8",
        "text_zh": "现在换掉按钮背后的页面节点，外观保持不变。它看起来还是那个按钮，但原来的引用已经失效了。",
        "start_seconds": 56.206,
        "next_start_or_end_seconds": 68.878,
        "hold_available_seconds": 11.125057,
        "max_duration_seconds": 10.725057,
        "remaining_before_next_seconds": 4.344,
        "remaining_in_hold_seconds": 2.797057,
        "timing_passed": true,
        "file": "05-node-replacement.wav",
        "source_file": "05-node-replacement.mp3"
      },
      {
        "index": 5,
        "id": "stale-rejected",
        "text": "Try that old reference again, and it's rejected. No actions ran, no popups opened, and there were zero submissions or orders.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 9.024,
        "sha256": "0caecdc9470302f7773361bb8c77f579b9030280ceffcb3bc3cf614fb9bb910a",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "1a467add9b50aa53339959fb4a65ae30f5540822671ce5ef104d060a6fcfcc48",
        "text_zh": "再试一次旧引用，请求就被拒绝了。一个动作都没执行，没有弹窗，也没有任何提交或订单。",
        "start_seconds": 68.878,
        "next_start_or_end_seconds": 82.792,
        "hold_available_seconds": 12.75,
        "max_duration_seconds": 12.35,
        "remaining_before_next_seconds": 4.89,
        "remaining_in_hold_seconds": 3.726,
        "timing_passed": true,
        "file": "06-stale-rejected.wav",
        "source_file": "06-stale-rejected.mp3"
      },
      {
        "index": 6,
        "id": "fresh-observation",
        "text": "To pick up from here, we look at the page again. A fresh snapshot gives us a new button reference to work with.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 6.504,
        "sha256": "47d91fd5fc210260e9e9d928bb2116d211c9f5d5c5bd0c592af6d6faa60d40cf",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "07c0939b16d6e4f9c53ae972e47208c39da95e1ee7a045d4693f50aecfe0f6ef",
        "text_zh": "要继续操作，先重新观察页面。新的快照给了我们新的按钮引用，可以用它继续操作。",
        "start_seconds": 82.792,
        "next_start_or_end_seconds": 96.121,
        "hold_available_seconds": 11.016349,
        "max_duration_seconds": 10.616349,
        "remaining_before_next_seconds": 6.825,
        "remaining_in_hold_seconds": 4.512349,
        "timing_passed": true,
        "file": "07-fresh-observation.wav",
        "source_file": "07-fresh-observation.mp3"
      },
      {
        "index": 7,
        "id": "popup-follow",
        "text": "Let's enable pop-up following. When approval opens, we move to it in the same session, keeping the original page open.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 7.776,
        "sha256": "0298acea0a68217898c633b52d4a4ad2e1d3728ac661b4bfe4ac95b101c85a4a",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "a0fa5e605b9239223077a5d206c502faeb0a921cfc665591c47da519a23a2b68",
        "text_zh": "先开启弹窗跟随。审批页打开后，我们在同一个会话里切换过去，同时保留原来的页面。",
        "start_seconds": 96.121,
        "next_start_or_end_seconds": 109.289,
        "hold_available_seconds": 10.937891,
        "max_duration_seconds": 10.537891,
        "remaining_before_next_seconds": 5.392,
        "remaining_in_hold_seconds": 3.161891,
        "timing_passed": true,
        "file": "08-popup-follow.wav",
        "source_file": "08-popup-follow.mp3"
      },
      {
        "index": 8,
        "id": "approval",
        "text": "First the name and cost center, then confirm and approve: four actions. Three receipt checks pass. One server submission, one order.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 9.624,
        "sha256": "6e3fd48e2341f555df636cf4a88ddbabc8a09f97dcb1ca105c3c3327f5361d56",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "60da2eb194c4f254e63c211a40dd6d6080417350cd74faef1ffb75a4fcdc3002",
        "text_zh": "先填姓名和成本中心，再确认、批准，四个动作完成。回执三项检查通过，服务器收到一次提交，生成一份订单。",
        "start_seconds": 109.289,
        "next_start_or_end_seconds": 124.619,
        "hold_available_seconds": 12.75,
        "max_duration_seconds": 12.35,
        "remaining_before_next_seconds": 5.706,
        "remaining_in_hold_seconds": 3.126,
        "timing_passed": true,
        "file": "09-approval.wav",
        "source_file": "09-approval.mp3"
      },
      {
        "index": 9,
        "id": "download-verify",
        "text": "Now we download the actual CSV, read its bytes, and check both its contents and hash. Both match, so we've got the right file.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 9,
        "sha256": "b340e5096d8f0f7c08c44b7fa224b708de8620bdd4e6868d45db67c340b71438",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "9eb57af962ffd3b0f5207d29480abeda6b147e36de41555c42bddad125c88aa7",
        "text_zh": "接着实际下载 CSV，读取真实字节，再核对文件内容和哈希摘要。两项都匹配，确认拿到的文件没错。",
        "start_seconds": 124.619,
        "next_start_or_end_seconds": 142.02,
        "hold_available_seconds": 15.75,
        "max_duration_seconds": 15.35,
        "remaining_before_next_seconds": 8.401,
        "remaining_in_hold_seconds": 6.75,
        "timing_passed": true,
        "file": "10-download-verify.wav",
        "source_file": "10-download-verify.mp3"
      },
      {
        "index": 10,
        "id": "summary-cleanup",
        "text": "Eight checks, one approval, and one verified file. We close both tabs we own, leaving none behind, with a record we can audit.",
        "voice": "en-US-AndrewMultilingualNeural",
        "language": "en-US",
        "gender": "Male",
        "rate": "-3%",
        "duration_seconds": 8.928,
        "sha256": "e0255f052a3e940ab34d239d7a141a34ad719cf2b15d29caa8a90ee34c3c44d5",
        "service": "Microsoft Edge online neural TTS",
        "synthesis": "Microsoft Edge online neural TTS",
        "edge_tts_version": "7.2.8",
        "source_sha256": "a3deed8d1bbe119a707b5d0f5e78c3559a0cedbab7d3b1a7379fd07145cf214c",
        "text_zh": "八项检查，一次审批，一个文件核验。最后关闭我们打开的两个标签页，没有遗留页面，操作记录也都能核查。",
        "start_seconds": 142.02,
        "next_start_or_end_seconds": 154.104,
        "hold_available_seconds": 11.75,
        "max_duration_seconds": 11.35,
        "remaining_before_next_seconds": 3.156,
        "remaining_in_hold_seconds": 2.822,
        "timing_passed": true,
        "file": "11-summary-cleanup.wav",
        "source_file": "11-summary-cleanup.mp3"
      }
    ],
    "original_command_arguments": [
      "-y",
      "-hide_banner",
      "-loglevel",
      "warning",
      "-f",
      "concat",
      "-safe",
      "1",
      "-i",
      "frames.ffconcat",
      "-i",
      "NARRATION/01-overview.aiff",
      "-i",
      "NARRATION/02-six-actions.aiff",
      "-i",
      "NARRATION/03-batch-complete.aiff",
      "-i",
      "NARRATION/04-result-checks.aiff",
      "-i",
      "NARRATION/05-node-replacement.aiff",
      "-i",
      "NARRATION/06-stale-rejected.aiff",
      "-i",
      "NARRATION/07-fresh-observation.aiff",
      "-i",
      "NARRATION/08-popup-follow.aiff",
      "-i",
      "NARRATION/09-approval.aiff",
      "-i",
      "NARRATION/10-download-verify.aiff",
      "-i",
      "NARRATION/11-summary-cleanup.aiff",
      "-filter_complex",
      "[1:a]aresample=48000,adelay=1992:all=1[a0];[2:a]aresample=48000,adelay=15415:all=1[a1];[3:a]aresample=48000,adelay=28479:all=1[a2];[4:a]aresample=48000,adelay=41410:all=1[a3];[5:a]aresample=48000,adelay=56206:all=1[a4];[6:a]aresample=48000,adelay=68878:all=1[a5];[7:a]aresample=48000,adelay=82792:all=1[a6];[8:a]aresample=48000,adelay=96121:all=1[a7];[9:a]aresample=48000,adelay=109289:all=1[a8];[10:a]aresample=48000,adelay=124619:all=1[a9];[11:a]aresample=48000,adelay=142020:all=1[a10];[a0][a1][a2][a3][a4][a5][a6][a7][a8][a9][a10]amix=inputs=11:duration=longest:normalize=0,loudnorm=I=-16:TP=-1.5:LRA=7,apad[voice]",
      "-map",
      "0:v:0",
      "-map",
      "[voice]",
      "-c:v",
      "libx264",
      "-preset",
      "fast",
      "-crf",
      "16",
      "-pix_fmt",
      "yuv420p",
      "-r",
      "12",
      "-fps_mode",
      "cfr",
      "-c:a",
      "aac",
      "-b:a",
      "192k",
      "-ar",
      "48000",
      "-t",
      "154.104",
      "-movflags",
      "+faststart",
      "tablaze-demo-hd.mp4"
    ]
  },
  "video": {
    "file": "tablaze-demo-hd.mp4",
    "sha256": "ba2e6cc03a59a20eb16120a83b2c26bd6d43de4a1108f3159951dc5dd3fb5122",
    "size_bytes": 6577817,
    "duration_seconds": 154.104,
    "width": 2880,
    "height": 1800,
    "has_audio": true,
    "chapter_timing": "Monotonic elapsed time since recorder page creation; first chapter starts at zero. Presentation frames and narration retain this timeline, quantized to the encoding frame rate."
  },
  "completed_at": "2026-09-22T17:02:02.696Z",
  "media_revision": {
    "type": "narration_replacement",
    "revised_at": "2026-09-22T17:58:35.054Z",
    "method": "Only synthesized narration and captions changed. Original encoded H.264 packets are copied unchanged; MCP events, checks, tool timing, chapters and visual timeline remain from the original run.",
    "original_report_sha256": "51eece587baa525fc0b403b071258790fc566c61cb578ccbc9e50a04629d6f9a",
    "original_video_sha256": "daa95f35d1005daaa4a87822bd4a955c36006962db1d9fc00e1579f9a22b9db8",
    "encoded_picture_sha256_before": "00ebf81e1234c630a495bdea82d3cf57cc03a6d70da165d4de3db3509bf58ba0",
    "encoded_picture_sha256_after": "00ebf81e1234c630a495bdea82d3cf57cc03a6d70da165d4de3db3509bf58ba0",
    "picture_stream_identical": true,
    "revoice_script_sha256": "d0892b3a867310cca7077a882d583d1e6a08071bd7b227d5aadd476f57af1cda",
    "remux_encoder_sha256": "6d175a4743ca50256e89a8cdd731100f9cee33bd79aeea46894d209410dc6617",
    "minimum_gap_seconds": 2.046999999999999
  }
}
