{
  "schemaVersion": 1,
  "mode": "recorded",
  "source": "Real Android 14 sandbox on the existing Hetzner host. No generated screens.",
  "startedAt": "2026-10-29T01:21:50.157Z",
  "completedAt": "2026-10-29T01:22:33.413Z",
  "scenario": "Create → install Fossify Notes → type through MCP → observe through REST → park → resume → verify persisted note",
  "app": {
    "package": "org.fossify.notes",
    "versionCode": 13,
    "source": "https://f-droid.org/repo/org.fossify.notes_13.apk"
  },
  "steps": [
    {
      "id": "create",
      "title": "Create a sandbox",
      "transport": "REST",
      "method": "POST /v1/phones?wait=ready",
      "request": {
        "name": "mobilebox-demo",
        "idle_timeout": 300,
        "max_duration": 900
      },
      "response": {
        "id": "ph_5i7bt6tuj7ul",
        "object": "phone",
        "name": "mobilebox-demo",
        "status": "ready",
        "created_at": "2026-10-29T01:21:50.249Z",
        "settings": {},
        "session": {
          "id": "ses_fuhxfawlquvs",
          "started_at": "2026-10-29T01:21:50.250Z",
          "ready_at": "2026-10-29T01:22:08.333Z",
          "last_active_at": "2026-10-29T01:22:08.333Z",
          "idle_timeout": 300,
          "max_duration": 900,
          "reserved_usd": "0.150000"
        },
        "failure": null
      },
      "durationMs": 18101,
      "frame": "create.png",
      "frameSha256": "4c48f16c9e9c7c41ccd7e06bc237ad7faad44add4b4ddcb33ff3674c9e0715b8",
      "capturedAt": "2026-10-29T01:22:09.798Z"
    },
    {
      "id": "install",
      "title": "Install a real Android app",
      "transport": "REST",
      "method": "POST /v1/phones/{phone_id}/apps",
      "request": {
        "url": "https://f-droid.org/repo/org.fossify.notes_13.apk"
      },
      "response": {
        "package": "org.fossify.notes",
        "version_code": 13,
        "version_name": "1.7.0"
      },
      "durationMs": 2654,
      "frame": "install.png",
      "frameSha256": "6ebab0a584a0453ddef03bdf57dc780f34eac5dbc216d9ed47b8ea830071af3c",
      "capturedAt": "2026-10-29T01:22:12.828Z"
    },
    {
      "id": "write",
      "title": "Let the agent write",
      "transport": "MCP",
      "method": "tools/call → act",
      "request": {
        "actions": [
          {
            "type": "type",
            "text": "Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished",
            "target": {
              "text": "Insert text here"
            }
          }
        ]
      },
      "response": {
        "content": [
          {
            "type": "text",
            "text": "1. type ok\n\napp: org.fossify.notes\n[1] Button desc=\"Search\" (657,146)\n[2] Button desc=\"Create a new note\" (784,146)\n[3] Button desc=\"Undo\" (911,146)\n[4] Image desc=\"More options\" (1027,146)\n[5] TextField \"Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished\" [focused] (540,1252)"
          }
        ]
      },
      "durationMs": 791,
      "frame": "write.png",
      "frameSha256": "7fd8e1018c9367548f28a6ce85753d2fad4df1f5c7d756da73a00ed48f6bf29f",
      "capturedAt": "2026-10-29T01:22:13.938Z"
    },
    {
      "id": "observe",
      "title": "Read the result as structured data",
      "transport": "REST",
      "method": "GET /v1/phones/{phone_id}/observe",
      "request": null,
      "response": {
        "app": "org.fossify.notes",
        "elements": [
          {
            "ref": 1,
            "type": "Button",
            "text": null,
            "summary": null,
            "state": [],
            "desc": "Search",
            "id": "org.fossify.notes:id/open_search",
            "bounds": [
              594,
              83,
              721,
              209
            ],
            "center": [
              657,
              146
            ]
          },
          {
            "ref": 2,
            "type": "Button",
            "text": null,
            "summary": null,
            "state": [],
            "desc": "Create a new note",
            "id": "org.fossify.notes:id/new_note",
            "bounds": [
              721,
              83,
              848,
              209
            ],
            "center": [
              784,
              146
            ]
          },
          {
            "ref": 3,
            "type": "Button",
            "text": null,
            "summary": null,
            "state": [],
            "desc": "Undo",
            "id": "org.fossify.notes:id/undo",
            "bounds": [
              848,
              83,
              975,
              209
            ],
            "center": [
              911,
              146
            ]
          },
          {
            "ref": 4,
            "type": "Image",
            "text": null,
            "summary": null,
            "state": [],
            "desc": "More options",
            "id": null,
            "bounds": [
              975,
              83,
              1080,
              209
            ],
            "center": [
              1027,
              146
            ]
          },
          {
            "ref": 5,
            "type": "TextField",
            "text": "Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished",
            "summary": null,
            "state": [
              "focused"
            ],
            "desc": null,
            "id": "org.fossify.notes:id/text_note_view",
            "bounds": [
              0,
              231,
              1080,
              2274
            ],
            "center": [
              540,
              1252
            ]
          }
        ],
        "text": "app: org.fossify.notes\n[1] Button desc=\"Search\" (657,146)\n[2] Button desc=\"Create a new note\" (784,146)\n[3] Button desc=\"Undo\" (911,146)\n[4] Image desc=\"More options\" (1027,146)\n[5] TextField \"Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished\" [focused] (540,1252)"
      },
      "durationMs": 68,
      "frame": "observe.png",
      "frameSha256": "7fd8e1018c9367548f28a6ce85753d2fad4df1f5c7d756da73a00ed48f6bf29f",
      "capturedAt": "2026-10-29T01:22:14.321Z"
    },
    {
      "id": "save",
      "title": "Verify saved app data",
      "transport": "REST",
      "method": "POST /v1/phones/{phone_id}/actions",
      "request": {
        "actions": [
          {
            "type": "home"
          },
          {
            "type": "close_app",
            "package": "org.fossify.notes"
          },
          {
            "type": "open_app",
            "package": "org.fossify.notes"
          }
        ]
      },
      "response": {
        "results": [
          {
            "type": "home",
            "ok": true
          },
          {
            "type": "close_app",
            "ok": true
          },
          {
            "type": "open_app",
            "ok": true
          }
        ],
        "screen": {
          "app": "org.fossify.notes",
          "elements": [
            {
              "ref": 1,
              "type": "Button",
              "text": null,
              "summary": null,
              "state": [],
              "desc": "Search",
              "id": "org.fossify.notes:id/open_search",
              "bounds": [
                721,
                83,
                848,
                209
              ],
              "center": [
                784,
                146
              ]
            },
            {
              "ref": 2,
              "type": "Button",
              "text": null,
              "summary": null,
              "state": [],
              "desc": "Create a new note",
              "id": "org.fossify.notes:id/new_note",
              "bounds": [
                848,
                83,
                975,
                209
              ],
              "center": [
                911,
                146
              ]
            },
            {
              "ref": 3,
              "type": "Image",
              "text": null,
              "summary": null,
              "state": [],
              "desc": "More options",
              "id": null,
              "bounds": [
                975,
                83,
                1080,
                209
              ],
              "center": [
                1027,
                146
              ]
            },
            {
              "ref": 4,
              "type": "TextField",
              "text": "Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished",
              "summary": null,
              "state": [
                "focused"
              ],
              "desc": null,
              "id": "org.fossify.notes:id/text_note_view",
              "bounds": [
                0,
                231,
                1080,
                2274
              ],
              "center": [
                540,
                1252
              ]
            }
          ],
          "text": "app: org.fossify.notes\n[1] Button desc=\"Search\" (784,146)\n[2] Button desc=\"Create a new note\" (911,146)\n[3] Image desc=\"More options\" (1027,146)\n[4] TextField \"Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished\" [focused] (540,1252)"
        }
      },
      "durationMs": 3845,
      "frame": "save.png",
      "frameSha256": "fadf56fcba6c95ab79ef9300d4460b141cae325931fdc6039de21708fff5c354",
      "capturedAt": "2026-10-29T01:22:18.470Z"
    },
    {
      "id": "park",
      "title": "Park. Stop compute billing.",
      "transport": "REST",
      "method": "POST /v1/phones/{phone_id}/park",
      "request": null,
      "response": {
        "id": "ph_5i7bt6tuj7ul",
        "object": "phone",
        "name": "mobilebox-demo",
        "status": "parked",
        "created_at": "2026-10-29T01:21:50.249Z",
        "settings": {},
        "session": null,
        "failure": null
      },
      "durationMs": 845,
      "frame": null,
      "frameSha256": null,
      "capturedAt": "2026-10-29T01:22:19.315Z"
    },
    {
      "id": "resume",
      "title": "Resume the same sandbox",
      "transport": "REST",
      "method": "POST /v1/phones/{phone_id}/start?wait=ready",
      "request": null,
      "response": {
        "id": "ph_5i7bt6tuj7ul",
        "object": "phone",
        "name": "mobilebox-demo",
        "status": "ready",
        "created_at": "2026-10-29T01:21:50.249Z",
        "settings": {},
        "session": {
          "id": "ses_r7ybhndnzqud",
          "started_at": "2026-10-29T01:22:19.318Z",
          "ready_at": "2026-10-29T01:22:29.811Z",
          "last_active_at": "2026-10-29T01:22:29.811Z",
          "idle_timeout": 300,
          "max_duration": 900,
          "reserved_usd": "0.150000"
        },
        "failure": null
      },
      "durationMs": 10498,
      "frame": "resume.png",
      "frameSha256": "a833e7e347d7fa1dc37069baa5fdd281aab55c04e7fb9e7bdf01bc2817a80547",
      "capturedAt": "2026-10-29T01:22:31.093Z"
    },
    {
      "id": "persist",
      "title": "Confirm the note survived",
      "transport": "MCP",
      "method": "tools/call → act",
      "request": {
        "actions": [
          {
            "type": "open_app",
            "package": "org.fossify.notes"
          }
        ]
      },
      "response": {
        "app": "org.fossify.notes",
        "elements": [
          {
            "ref": 1,
            "type": "Button",
            "text": null,
            "summary": null,
            "state": [],
            "desc": "Search",
            "id": "org.fossify.notes:id/open_search",
            "bounds": [
              721,
              83,
              848,
              209
            ],
            "center": [
              784,
              146
            ]
          },
          {
            "ref": 2,
            "type": "Button",
            "text": null,
            "summary": null,
            "state": [],
            "desc": "Create a new note",
            "id": "org.fossify.notes:id/new_note",
            "bounds": [
              848,
              83,
              975,
              209
            ],
            "center": [
              911,
              146
            ]
          },
          {
            "ref": 3,
            "type": "Image",
            "text": null,
            "summary": null,
            "state": [],
            "desc": "More options",
            "id": null,
            "bounds": [
              975,
              83,
              1080,
              209
            ],
            "center": [
              1027,
              146
            ]
          },
          {
            "ref": 4,
            "type": "TextField",
            "text": "Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished",
            "summary": null,
            "state": [
              "focused"
            ],
            "desc": null,
            "id": "org.fossify.notes:id/text_note_view",
            "bounds": [
              0,
              231,
              1080,
              2274
            ],
            "center": [
              540,
              1252
            ]
          }
        ],
        "text": "app: org.fossify.notes\n[1] Button desc=\"Search\" (784,146)\n[2] Button desc=\"Create a new note\" (911,146)\n[3] Image desc=\"More options\" (1027,146)\n[4] TextField \"Release checklist\nRun the Android smoke test\nInspect the accessibility tree\nPark the phone when finished\" [focused] (540,1252)"
      },
      "durationMs": 1086,
      "frame": "persist.png",
      "frameSha256": "fadf56fcba6c95ab79ef9300d4460b141cae325931fdc6039de21708fff5c354",
      "capturedAt": "2026-10-29T01:22:32.603Z"
    }
  ],
  "sessions": {
    "data": [
      {
        "id": "ses_fuhxfawlquvs",
        "started_at": "2026-10-29T01:21:50.250Z",
        "ready_at": "2026-10-29T01:22:08.333Z",
        "ended_at": "2026-10-29T01:22:18.472Z",
        "end_reason": "manual",
        "billed_seconds": 60,
        "cost_usd": "0.010000"
      },
      {
        "id": "ses_r7ybhndnzqud",
        "started_at": "2026-10-29T01:22:19.318Z",
        "ready_at": "2026-10-29T01:22:29.811Z",
        "ended_at": "2026-10-29T01:22:32.604Z",
        "end_reason": "manual",
        "billed_seconds": 60,
        "cost_usd": "0.010000"
      }
    ]
  }
}