{
  "version": "0.19.0",
  "date": "2026-10-29",
  "normal_data_check": {
    "all_bytes_verified_unchanged": false,
    "verified_matching_paths": [
      ".data.lock",
      "oak/business.sqlite3"
    ],
    "cloud_only_unverified_paths": [
      "registry.sqlite3",
      "harbour/business.sqlite3"
    ],
    "written_or_migrated_by_this_stage": false
  },
  "normal_data_migrated": false,
  "review_data_and_sessions_check": {
    "all_bytes_verified_unchanged": true,
    "verified_matching_paths": [
      ".data.lock",
      "registry.sqlite3",
      "oak/business.sqlite3",
      "harbour/business.sqlite3"
    ],
    "cloud_only_unverified_paths": [],
    "written_or_migrated_by_this_stage": false
  },
  "prior_archive_baseline_hashes": {
    "SHS-Local-Prototype-v0.16.zip": "39e86a314ce80aa9c1efa454bf259704ea03afab2d457b0e20f96647797b7d55",
    "SHS-Local-Prototype-v0.3.zip": "cd2bbdf3539e1cfec485270b060c0c2f22704e89e330684c258ca30caf5d5127",
    "SHS-Local-Prototype-v0.2.zip": "bd2b7d226b7c321f0ed17d482fdd34220641a9da9c3bd4c06f5f0cc9a8504c28",
    "SHS-Local-Prototype-v0.17.zip": "90703943443900e25b6586a214c44befc45333b6989c9a10ddb28c3378680540",
    "SHS-Local-Prototype-v0.15.zip": "b03c5a91801333d505d15cd256bf2ac0816743ff7e21e9895182745cc8251a12",
    "SHS-Local-Prototype-v0.1.zip": "95bf1432729b967b5c5c55b64191f2a79b92fa90913f9064178c0728e717ca2a",
    "SHS-Local-Prototype-v0.14.zip": "56fdf4d36192ae48d6e7e41ab51dd22d64b28a97a503ead7debafc0e900a7641",
    "SHS-Local-Prototype-v0.12.1.zip": "cda20f34ee5debd0c8f49c03882e73c0d53f56c90667cbe3130c3e7271da5121",
    "SHS-Local-Prototype-v0.10.zip": "851be18aa0d95af64d76ce7b3345baaa2a2099b39529f1f2b831b26413813e63",
    "SHS-Local-Prototype-v0.5.zip": "d5134f3fc330d379c456324b39ef6d4ed0fe3f96f12e7f8401a1a2a680396a31",
    "SHS-Local-Prototype-v0.4.zip": "e269ae24fa027d09fed752a659eac44060b64771eb7dea9b2e1e47396581a5fd",
    "SHS-Local-Prototype-v0.11.zip": "2424fd3d242b212d2d46d59c3df13a3fb5cfb66ec5271525107d496f4f3322b8",
    "SHS-Local-Prototype-v0.12.2.zip": "7a00f2b004e1d614383ce9de7f1377be83b2bdb977ca6f07ed6a4e64550d4b62",
    "SHS-Local-Prototype-v0.13.zip": "9114dc69205f77a21a62f76eb318c115ca738107e19ce7c004440a2bbbfb046d",
    "SHS-Local-Prototype-v0.6.zip": "b17dc90199182f5f6a59d19a4aa46aee13fa2337962f505855ad45472a12b4ce",
    "SHS-Local-Prototype-v0.7.zip": "28393b4c9e661359ede080ad668478d5e023cabc8013c44c5d99815e8c88ad42",
    "SHS-Local-Prototype-v0.12.zip": "306d65ab6d918f5f4659a895a723b5ecc2b3ae40144c1d3ca9326cb95e810c6a",
    "SHS-Local-Prototype-v0.9.zip": "3d806923d4e37a4b1649a8fa6e7eb2bf067133b14020515718ca632267bd3d51",
    "SHS-Local-Prototype-v0.8.zip": "e64c771598876f3645fe5ec329dda181255b361abf0be581082ae4c29c3890d6",
    "SHS-Local-Prototype-v0.18.zip": "31c32e0ff1d2c39e851d5dac502588137d4d61ba68d9b22c56694d7eb6b51a65"
  },
  "prior_archive_cloud_only_unverified": [
    "SHS-Local-Prototype-v0.2.zip"
  ],
  "source_zip_baseline_sha256": "d6155e3a2968e6880a99b626be9528a4671a03e34209df480022d0231087fa04",
  "original_zip_verified_unchanged": true,
  "original_zip_written": false,
  "source_copies": {
    "SHS-code-review": {
      "files": 275,
      "verified_sha256_matches": 234,
      "cloud_only_unverified_paths": [
        "backend/metrics_service.py",
        "backend/routers/ai_chat.py",
        "backend/routers/auth.py",
        "backend/routers/material_extraction.py",
        "backend/tests/conftest.py",
        "backend/tests/test_deposit_payments_iteration34.py",
        "backend/tests/test_iteration10.py",
        "backend/tests/test_iteration40_version_refresh.py",
        "backend/tests/test_iteration43_accountant.py",
        "backend/tests/test_iteration44_uifix_regression.py",
        "backend/tests/test_iteration46_regression.py",
        "backend/tests/test_iteration51_phase2_procurement.py",
        "backend/tests/test_iteration63_ai_filtering.py",
        "backend/tests/test_iteration68_seo_and_opportunities.py",
        "backend/tests/test_iteration72_traffic_invariant.py",
        "backend/tests/test_iteration84_heic_upload.py",
        "backend/tests/test_iteration89_publish_to_gallery.py",
        "backend/tests/test_iteration90_ai_chat.py",
        "backend/tests/test_job_stage_update.py",
        "backend/tests/test_metrics_api_iteration93.py",
        "backend/tests/test_phase3_customer_dedup.py",
        "backend/tests/test_phase5_csrf.py",
        "backend/tests/test_smarter_ai_weekly_reports.py",
        "frontend/src/components/admin/CustomersTab.jsx",
        "frontend/src/components/admin/ExtractMaterialsDialog.jsx",
        "frontend/src/components/admin/FeedbackTab.jsx",
        "frontend/src/components/admin/InvoiceBulkUpload.jsx",
        "frontend/src/components/admin/JobMaterialsPanel.jsx",
        "frontend/src/components/admin/JobsTab.jsx",
        "frontend/src/components/admin/ProjectCommandCenter.jsx",
        "frontend/src/components/admin/RichTextEditor.jsx",
        "frontend/src/components/admin/SettingsTab.jsx",
        "frontend/src/components/admin/SiteModeTab.jsx",
        "frontend/src/components/admin/WhatsAppButton.jsx",
        "frontend/src/contexts/AdminDashboardContext.jsx",
        "frontend/src/hooks/use-toast.js",
        "frontend/src/hooks/usePublicData.js",
        "frontend/src/lib/__tests__/adminRouting.test.jsx",
        "frontend/src/lib/__tests__/siteModeTimeEntries.test.jsx",
        "frontend/src/pages/GalleryIndexPage.jsx",
        "frontend/src/pages/LandingPage.jsx"
      ],
      "written_or_changed_by_this_stage": false
    },
    "shs-product-source-baseline": {
      "files": 275,
      "verified_sha256_matches": 226,
      "cloud_only_unverified_paths": [
        "backend/constants.py",
        "backend/metrics_service.py",
        "backend/routers/ai_chat.py",
        "backend/routers/gilberts.py",
        "backend/routers/project.py",
        "backend/tests/test_iteration55_invoice_referencing.py",
        "backend/tests/test_iteration58_materials_supplier.py",
        "backend/tests/test_iteration59_unified_customer_jobs.py",
        "backend/tests/test_iteration63plus_material_extraction.py",
        "backend/tests/test_iteration83_ai_wording.py",
        "backend/tests/test_iteration89_publish_to_gallery.py",
        "backend/tests/test_metrics_api_iteration93.py",
        "backend/tests/test_metrics_reconciliation.py",
        "backend/tests/test_phase3_disabled_state.py",
        "backend/tests/test_phase5_live_compat.py",
        "backend/tests/test_phase5_recovery_containment.py",
        "backend/tests/test_phase5_security.py",
        "backend/tests/test_smarter_ai_weekly_reports.py",
        "backend/tests/test_staged_payment_financials.py",
        "frontend/public/index.html",
        "frontend/src/components/admin/ChatGPTConnectorCard.jsx",
        "frontend/src/components/admin/CustomerTimeline.jsx",
        "frontend/src/components/admin/ExtractMaterialsDialog.jsx",
        "frontend/src/components/admin/GilbertsTab.jsx",
        "frontend/src/components/admin/ImageUploader.jsx",
        "frontend/src/components/admin/JobsTab.jsx",
        "frontend/src/components/admin/MaterialsTab.jsx",
        "frontend/src/components/admin/PossibleDuplicatesPanel.jsx",
        "frontend/src/components/ui/breadcrumb.jsx",
        "frontend/src/components/ui/button.jsx",
        "frontend/src/components/ui/checkbox.jsx",
        "frontend/src/components/ui/command.jsx",
        "frontend/src/components/ui/dialog.jsx",
        "frontend/src/components/ui/dropdown-menu.jsx",
        "frontend/src/components/ui/form.jsx",
        "frontend/src/components/ui/menubar.jsx",
        "frontend/src/components/ui/navigation-menu.jsx",
        "frontend/src/components/ui/radio-group.jsx",
        "frontend/src/components/ui/separator.jsx",
        "frontend/src/components/ui/switch.jsx",
        "frontend/src/components/ui/table.jsx",
        "frontend/src/components/ui/textarea.jsx",
        "frontend/src/components/ui/toggle-group.jsx",
        "frontend/src/index.css",
        "frontend/src/index.js",
        "frontend/src/lib/metricDefinitions.js",
        "frontend/src/pages/AdminLogin.jsx",
        "frontend/src/pages/CookiePolicy.jsx",
        "frontend/src/pages/TermsConditions.jsx"
      ],
      "written_or_changed_by_this_stage": false
    }
  },
  "owner_review_runtime": {
    "version": "0.12.1",
    "runtime": "/Users/sandyrestall/Documents/Codex/2026-10-27/t/work/owner-review-v0.12.1-runtime/SHS-Local-Prototype",
    "data_dir": "/Users/sandyrestall/Documents/Codex/2026-10-27/t/work/v0.12-visible-rehearsal-2026-10-28",
    "url": "http://127.0.0.1:8788/",
    "pid": 35036,
    "exec_session": 11806,
    "data_and_sessions_byte_for_byte_preserved": true,
    "browser_reload_or_unsaved_discard": false,
    "archive_sha256": "cda20f34ee5debd0c8f49c03882e73c0d53f56c90667cbe3130c3e7271da5121"
  },
  "owner_runtime_verified_files": 209,
  "owner_runtime_cloud_only_unverified_paths": [],
  "owner_runtime_written_by_this_stage": false,
  "process_cwd": "p35036\nfcwd\nn/Users/sandyrestall/Documents/Codex/2026-10-27/t/work/owner-review-v0.12.1-runtime/SHS-Local-Prototype",
  "listener_evidence": "COMMAND     PID         USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME\npython3.1 35036 sandyrestall    7u  IPv4 0x325c8b6c587fae3b      0t0  TCP 127.0.0.1:8788 (LISTEN)",
  "normal_server_8787_stopped": true,
  "test_server_8789_stopped": true,
  "owner_review_not_reloaded_or_signed_out": true,
  "live_SHS_changed": false
}
