{
  "version": "0.12.1",
  "date": "2026-10-28",
  "scope": "Materials dirty-state repair and bounded fictional owner walkthrough; no new product stage.",
  "client_tests": 67,
  "materials_api_tests": 32,
  "server_render_smoke_cases": 43,
  "frontend_build_passed": true,
  "new_dependencies": false,
  "baseline_full_backend_regression": {
    "version": "0.12",
    "passed": 473,
    "repeated_in_this_patch": false
  },
  "browser": "Visible ChatGPT in-app browser; existing session, no controller reset or bypass.",
  "browser_verified": [
    "Fresh supported read after relayed human Cancel confirmation found a responsive workspace with no held Materials dialog.",
    "Persisted catalogue item reopened with its saved values; unchanged Cancel closed without a prompt.",
    "Changing cost from 12.34 to 13.50 produced an in-page unsaved-changes dialog; Keep editing was focused and retained the draft.",
    "Invalid charge text produced a client error; charge 1000001 produced a server rejection. Both retained the edited cost and charge input.",
    "After the rejected save, Cancel still warned and Keep editing preserved the draft.",
    "Valid 13.50 cost and 20.00 optional charge saved as catalogue version 2 and survived full reload/reopen.",
    "Changing only 13.50 to equivalent 13.5 closed without a false warning.",
    "Two catalogue boards were saved to the exact fictional job at 13.50 each, 27.00 total, with catalogue version 2 preserved.",
    "Job material values and private notes survived full reload/reopen; unchanged Cancel closed without a warning.",
    "A manually priced 150.00 quote was saved and reopened after reload as private draft Q-0001, revision 1.",
    "Printable owner quote excluded private supplier costs/notes; its Download private PDF button produced a one-page PDF.",
    "Downloaded PDF text and Poppler rendering verified: correct draft, customer, total and notes, no private cost or supplier, no clipped/overlapping text observed.",
    "Harbour showed empty job materials, reusable catalogue and document lists; direct Oak private quote URL returned Record not found in this business.",
    "Signed back into Oak and left its private draft visible on the final build. Captured warning/error console logs were empty."
  ],
  "not_exercised": [
    "Deliberate Discard changes button was not clicked; no user edits were discarded.",
    "CSV upload/mapping, supplier-reference editing and previous-price application were covered by focused draft comparisons and existing API tests, not this browser walkthrough.",
    "Browser print dialog, stage PDF, customer portal setup/response and mobile/PWA/offline verification remain pending.",
    "Native browser unload and workspace-navigation confirmation for genuine edits were not deliberately triggered.",
    "The earlier booking-dialog problem is not claimed fixed by this Materials patch."
  ],
  "rehearsal_url": "http://127.0.0.1:8788/",
  "rehearsal_data": "/Users/sandyrestall/Documents/Codex/2026-10-27/t/work/v0.12-visible-rehearsal-2026-10-28",
  "normal_data_unchanged": true,
  "normal_data_used_for_walkthrough": false,
  "quote_shared": false,
  "invoice_issued": false,
  "payment_recorded": false,
  "live_SHS_changed": false,
  "external_service_used": false,
  "message_sent": false,
  "source_findings_still_open": 14,
  "capabilities_still_tracked": 45,
  "production_approved": false,
  "full_product_complete": false,
  "evidence_files": [
    {
      "file": "Q-0001-local-demo.pdf",
      "bytes": 44971,
      "sha256": "1aa662b7c79590f3816d408bd01b358d9be4a8540fd0d3b7a743eeb1ce5f8d79"
    },
    {
      "file": "final-v0.12.1-private-draft.jpg",
      "bytes": 60309,
      "sha256": "1e974269eec195b0654c596ced33c1f95c2a609c1e94e7a4a9158424f143a4c3"
    },
    {
      "file": "harbour-empty-documents.jpg",
      "bytes": 83703,
      "sha256": "dd62dae65c75fe72333a86475fa8dc9a91ea02d55afe4ad89aaecf5f52e98c91"
    },
    {
      "file": "harbour-private-quote-denied.jpg",
      "bytes": 16061,
      "sha256": "358c27b33041cff3cd657f480dbb3e272f9a921b7acf32092a33cda3dc2968b6"
    },
    {
      "file": "job-material-saved.jpg",
      "bytes": 106606,
      "sha256": "2822eda46caf24df84f4d488c1453f0560a2c7ce756fcad1dd67e288a0b9e2a2"
    },
    {
      "file": "materials-unsaved-warning.jpg",
      "bytes": 48714,
      "sha256": "8eefa8027c2f9be2c74af700ac29ab8d1382ec53a65341e5f86c2ab7bdb34843"
    },
    {
      "file": "private-draft-quote.jpg",
      "bytes": 61038,
      "sha256": "a3a1f42d5e2f5ebd9e2ca545c8eac87ed1fc6e852132dcf8adb85cab714c16a9"
    }
  ]
}
