{
  "device": "Pixel 9 Pro, Android 17 / API 37",
  "scope": "10 known repository receipt fixtures; real UI scan path; unsaved drafts",
  "before": {
    "phase": "complete",
    "heartbeat_max_ms": 474.88,
    "ticks": 286,
    "label": "before",
    "fixture_count": 10,
    "applied": true,
    "elapsed_s": 33.441,
    "results": [
      {
        "fixture": "2026-06-01_26.60_Triple_O's.jpeg",
        "date": "",
        "amount": "26.60",
        "merchant": "Triple O's"
      },
      {
        "fixture": "2026-06-01_46.86_Uber.png",
        "date": "2026-06-01",
        "amount": "46.86",
        "merchant": "Uber"
      },
      {
        "fixture": "2026-06-02_10.76_Jugo_Juice.jpeg",
        "date": "2026-06-02",
        "amount": "10.76",
        "merchant": "Jugo Juice"
      },
      {
        "fixture": "2026-06-02_15.75_Olly_Fresco.jpeg",
        "date": "2026-06-02",
        "amount": "15.75",
        "merchant": "Olly Fresco's"
      },
      {
        "fixture": "2026-06-02_60.00_IL_Chianti.jpeg",
        "date": "2026-06-02",
        "amount": "60.00",
        "merchant": "Il Chianti Restaurant"
      },
      {
        "fixture": "2026-06-03_11.39_Tim_Hortons.jpeg",
        "date": "2026-06-03",
        "amount": "11.39",
        "merchant": "Tim Hortons"
      },
      {
        "fixture": "2026-06-03_18.48_Olly_Fresco.jpeg",
        "date": "2026-06-03",
        "amount": "18.48",
        "merchant": "Olly Fresco's"
      },
      {
        "fixture": "2026-06-03_25.95_HMSHost.jpeg",
        "date": "2026-06-03",
        "amount": "25.95",
        "merchant": "HMSHost"
      },
      {
        "fixture": "2026-06-03_41.97_Uber.png",
        "date": "2026-06-03",
        "amount": "41.97",
        "merchant": "Uber"
      },
      {
        "fixture": "2026-06-03_94.80_Uber.png",
        "date": "2026-06-03",
        "amount": "94.80",
        "merchant": "Uber"
      }
    ],
    "timing": "Accurate: 33.2s total, 3.3s per receipt (10 scanned).",
    "screen_after_scan": "add_receipt"
  },
  "after": {
    "phase": "complete",
    "heartbeat_max_ms": 524.22,
    "ticks": 187,
    "label": "after-parallel",
    "fixture_count": 10,
    "applied": true,
    "elapsed_s": 23.665,
    "results": [
      {
        "fixture": "2026-06-01_26.60_Triple_O's.jpeg",
        "date": "",
        "amount": "26.60",
        "merchant": "Triple O's"
      },
      {
        "fixture": "2026-06-01_46.86_Uber.png",
        "date": "2026-06-01",
        "amount": "46.86",
        "merchant": "Uber"
      },
      {
        "fixture": "2026-06-02_10.76_Jugo_Juice.jpeg",
        "date": "2026-06-02",
        "amount": "10.76",
        "merchant": "Jugo Juice"
      },
      {
        "fixture": "2026-06-02_15.75_Olly_Fresco.jpeg",
        "date": "2026-06-02",
        "amount": "15.75",
        "merchant": "Olly Fresco's"
      },
      {
        "fixture": "2026-06-02_60.00_IL_Chianti.jpeg",
        "date": "2026-06-02",
        "amount": "60.00",
        "merchant": "Il Chianti Restaurant"
      },
      {
        "fixture": "2026-06-03_11.39_Tim_Hortons.jpeg",
        "date": "2026-06-03",
        "amount": "11.39",
        "merchant": "Tim Hortons"
      },
      {
        "fixture": "2026-06-03_18.48_Olly_Fresco.jpeg",
        "date": "2026-06-03",
        "amount": "18.48",
        "merchant": "Olly Fresco's"
      },
      {
        "fixture": "2026-06-03_25.95_HMSHost.jpeg",
        "date": "2026-06-03",
        "amount": "25.95",
        "merchant": "HMSHost"
      },
      {
        "fixture": "2026-06-03_41.97_Uber.png",
        "date": "2026-06-03",
        "amount": "41.97",
        "merchant": "Uber"
      },
      {
        "fixture": "2026-06-03_94.80_Uber.png",
        "date": "2026-06-03",
        "amount": "94.80",
        "merchant": "Uber"
      }
    ],
    "timing": "Accurate: 23.4s total, 2.3s per receipt (10 scanned).",
    "screen_after_scan": "add_receipt"
  },
  "fields_identical": true,
  "batch_time_reduction_percent": 29.23,
  "on_phone_tests": {
    "command": "tests",
    "ok": true,
    "tests_run": 12,
    "tests_passed": true,
    "test_errors": ""
  },
  "apk_sha256": "d129b84b7e877fe693de4a44849516f51cd4a905fa9f6d6e73dde12bf35da0ae",
  "source_manifest": {
    "receipt_app/repository.py": "a9a0582df89b47f81c6bc13f6ee8a7eadd347cf875a5534a459a15104d011e48",
    "receipt_app/ui.py": "db1c1b320a129e5fd9864600db0204735e9ea65ab4ae20d409b570fa0fccc1cb",
    "receipt_app/services.py": "d0791f3687fca59e50cc0609ac5afe6e1309a169e01211109e0185b6bd449792",
    "receipt_app/exceptions.py": "1dbf6e85eacc8baa953812897a76cee7d872c2faaa5ac75a0608d63e8fe96ff1",
    "receipt_app/models.py": "a647fae023cadfac9507ed6499741f0fb3e56109b596a73a9c98c5cb384993a6",
    "receipt_app/__init__.py": "e2091ad2666062d11e31b0127d7b4c1c7f31b02b48abd406ca5cc0a76e0c97e9",
    "receipt_app/core/exceptions.py": "588a666cecd50391f0862300579e54db33e3133e9fdd4d0f8a000f665a760adf",
    "receipt_app/core/models.py": "f84916eb7865600d26bd2aa0873d65cd3bb4710a33ab33533c9bf7c5f0309023",
    "receipt_app/core/__init__.py": "d21150378b94a96c08215a146a576cbae0aa3f32aa1165fc61c4ae4bdfc006f2",
    "receipt_app/business/image_processing_service.py": "041e70cb5d248a6383c0abefec75391db49298ad118a315391ab9c72eab48d84",
    "receipt_app/business/image_storage_service.py": "09cda6816812a6aa697e99b3b75046558a0f5d9dce8901577175968df02e7a29",
    "receipt_app/business/ocr_service.py": "78f0e492fb596578a8e7ab77da42213f68474810be1232bcf4622677e835693a",
    "receipt_app/business/csv_export_service.py": "d7d545ba69f501cb1f7588ea3207395daae2d24905641db4a716be00377f8a80",
    "receipt_app/business/receipt_service.py": "a20a8da32dcd16c63bc77f4b0b69eef0009a8228114fc5b302071c37c9c71ae6",
    "receipt_app/business/ocr_performance.py": "5cea2a1fbf07517bdb2dc25467f6c6bb330ac8194544603f7a6825c0b96c21ef",
    "receipt_app/business/__init__.py": "18bbf5e4b760380df7110a97fcf35156a960a88baa6cd3b2cec7842178eaca01",
    "receipt_app/views/app.py": "3cb564f7df0fd48d4712ca5d94b16cf86b7a5465ed564bbc2a62444f9b6e6a92",
    "receipt_app/views/__init__.py": "72b5bd513440ae064291611282820d8b0877a6e5fef1003e98945fbca8ef62c3",
    "receipt_app/data/receipt_repository.py": "80bf4d331a6115329ad49185426f92a4557ec30b2eca54bc01e527313aeaba7b",
    "receipt_app/data/__init__.py": "631fcae0b82fd1da265443c6a19208a72513443b09d4840de119f5c24603ff4e",
    "receipt_app/views/shared/file_picker_helper.py": "c6ea5c9db368d2af65b68a0d32103d694750c42fd46c6db5cf9f9d26dd553500",
    "receipt_app/views/shared/popup_utils.py": "0b1179627c26b0498dda14329d8c89398b66759847a6b143c3ccedd6f3e32245",
    "receipt_app/views/shared/outlined_card.kv": "53c7b8cb0b14979c8ea52d753ba7869d6739e8f4697e5753347432b67a122980",
    "receipt_app/views/shared/outlined_card.py": "d336ec017a69eaec6cf78c88bbe47e8d19a9ca96335c769fcec59ec52ba05cd4",
    "receipt_app/views/shared/design.py": "36bd001a84ac432e30dbe14aa6d3c41706d48fd7a369f992b5bdf6ba911803f8",
    "receipt_app/views/shared/file_picker_helper.kv": "a977d52cda0d5f8938a8a953043f592a7ff5f92e705693049dccc146565761f6",
    "receipt_app/views/shared/__init__.py": "c73c87f1439a1774a83c7ea87da0eee37a4dbb2deda8ff1c3eff7f6e3ae37c4a",
    "receipt_app/views/components/__init__.py": "cda4e85210efcd25f4e9dfe1d976b926ecceb8f70f3bb9c7ddf739920699265e",
    "receipt_app/views/screens/__init__.py": "2bb9e20b00be58025be6e745567e7836aef3b95903432121a83178a385ac5450",
    "receipt_app/views/screens/add_receipt/add_receipt_screen.kv": "8c57803b264b3fad40ed974d17e1e54d3b09d4cdd58c6d4abaff497974f8ab7a",
    "receipt_app/views/screens/add_receipt/add_receipt_screen.py": "a92d633388df86d14f1e7134eb37dc9c1a46196ac342848f9035b39c8a2c12ff",
    "receipt_app/views/screens/add_receipt/receipt_draft_manager.py": "54b6da3817e246df5fbce60b8832b4791c74b05bcfc5abc75db82a6fb2e9912a",
    "receipt_app/views/screens/add_receipt/__init__.py": "98e7b6579572481da1a474b44de08cb6bda4c2f127c6ea54ba647f74684108ac",
    "receipt_app/views/screens/gallery/gallery_screen.py": "d3438e3371ceba24c72145268a8d4784c930d3d63abf45a149605c24055fe3b7",
    "receipt_app/views/screens/gallery/gallery_screen.kv": "5e5258ccfe0afe6b595441547874d14f5bd75b28cd17819ce9749303a884ffb1",
    "receipt_app/views/screens/gallery/__init__.py": "451c262968bb0a58c71020926303e1263119c847665aed92fa27e083059bcc31",
    "receipt_app/views/screens/home/home_screen.kv": "65b8287cfedabd6fd664c69ca9210159f5d3451ed1690ee104177c2e602f36f5",
    "receipt_app/views/screens/home/home_screen.py": "e5072d519bff7aba89101d6e02182cc0262fc556033ed2718ddfc6f5c470ed41",
    "receipt_app/views/screens/home/__init__.py": "beefa22282eef580d353ff429add8d3cbebd885b1a3b387eb8b61b74ff1b96e2",
    "receipt_app/views/screens/timeline/timeline_screen.kv": "3c63d5a3e405e27bd575cf47eb926e3b787e27e14513e0f82b5955595dc80cd6",
    "receipt_app/views/screens/timeline/timeline_screen.py": "8ed98a5bbca34a504cd4ceac6e6cf150640cdf45af43b4bf0a39abc2a3ad5ec9",
    "receipt_app/views/screens/timeline/__init__.py": "a060ecb0cb637a2feb19e7471c71b84ce026d2084bad637b06f7f53b39d793c1",
    "receipt_app/views/screens/root/root_screen.py": "ddd2a3ba7989d025a380204ac1daa04850991a00b9e9da43354255b1d782c477",
    "receipt_app/views/screens/root/root_screen.kv": "d4ceea1d9ae4b92c3554432f07bca6fd2e3267f5671913f03d45518933fe839c",
    "receipt_app/views/screens/root/__init__.py": "8424bb0ce7562787e59cada5cfe4eade635d509d7b105e478f6e65282ae85bdf",
    "receipt_app/views/screens/batch_review/batch_review_screen.kv": "22334c3e13976264770927568e5e63e16c8481eb40e9ec03ad7740b8d09a3fa9",
    "receipt_app/views/screens/batch_review/batch_review_screen.py": "7d05e76f57e83a6f0440a5872bd410ddf012fe168099730cbf54d3c54f6cea37",
    "receipt_app/views/screens/batch_review/__init__.py": "ec700723c6bb26ed161909296b11e346fc86547e99cb26eb5b2388a4659d9a79",
    "receipt_app/views/components/amount_numpad/amount_numpad_popup.py": "12b5396c3a0afe132a50a60532e0740af69c1a35ca0720d12bc9a27c12116d97",
    "receipt_app/views/components/amount_numpad/amount_numpad_popup.kv": "0234b026542fa1480db00e8e652e9a4613f954a61c69f699df6752611ef0105c",
    "receipt_app/views/components/amount_numpad/__init__.py": "f556db23768ca55989d1cba5cd372721dcd87df16fe90380a27921067a8e48c5",
    "receipt_app/views/components/receipt_editor/receipt_editor.kv": "4045e21b0eaffebde6b0680b8d004d28698db91e51fc95395262ed189a2cc727",
    "receipt_app/views/components/receipt_editor/__init__.py": "9c7710edc9a3870dc9b6ac67b24059291709724205a9407cd273fc820b5452c4",
    "receipt_app/views/components/receipt_editor/receipt_editor.py": "e69374a69a4bfce5422050d174bfc620de46d7738781ba07154ef135b076602a"
  },
  "database_and_settings_unchanged": true,
  "limits": "One cold-launch batch per build, same fixture order; final editor-only correction does not change benchmarked OCR source. Not a multi-run thermal or low-memory stress benchmark."
}
