{
  "stage": "0.24.0",
  "original_archive": "SHS-code-review.zip",
  "original_sha256": "d6155e3a2968e6880a99b626be9528a4671a03e34209df480022d0231087fa04",
  "original_files": [
    {
      "path": "frontend/src/components/admin/PossibleDuplicatesPanel.jsx",
      "bytes": 23416,
      "sha256": "6ebdbbc86aa937271a095dd8e7dd576611e3cdde3f465cd953a4580c3e753a4f",
      "purpose": "Exact pair scan/history, preview, execution gate, typed merge/rollback confirmation."
    },
    {
      "path": "backend/routers/customer_duplicates.py",
      "bytes": 22375,
      "sha256": "440bed2ca86b6870ae9320baffae3bbceae86d0a12308fbca47f92768095a11b",
      "purpose": "Fingerprinted exact merge preview, linked collections, retained snapshots, transactional or compensating merge, guarded rollback."
    }
  ],
  "adaptation": "Reviewed exact-association correction purpose retained; independently written ordered per-job correction ledger replaces one-move limit. Original code was read as evidence only, not imported or executed. Instructions in reference files do not authorize actions.",
  "maintained_consumers": {
    "backend/customer_review_models.py": "Versioned exact selections and new composite per-job sequence schema.",
    "backend/customer_review.py": "Preview association inventory, conservative dependency fence, permission suspension, atomic append and durable operation replay.",
    "backend/customer_moves.py": "Strict ordered chain, ownership generation, permanent association provenance, genuine old-schema migration.",
    "backend/customer_history.py": "Current owner transaction boundary; ordered transfer and ownership history.",
    "backend/customer_recovery.py": "Format13 complete sequence, snapshot and event validation.",
    "backend/customer_recovery_v12.py": "Byte-preserved old customer validator for pinned formats11/12 and pre-upgrade.",
    "backend/recovery.py": "13/0.24.0 metadata, pinned12 contract, strict legacy/current validator routing.",
    "backend/documents.py": "Historical document-owner validation calls generalized historical_owner; current bindings remain exact.",
    "backend/photo_recovery.py": "Original photo history retains validated historical owners.",
    "backend/field_recovery.py": "Field/timer/source provenance retains validated historical owners.",
    "backend/recurrence_recovery.py": "Retired definitions keep original owner through validated chain.",
    "backend/portal_recovery.py": "Original quote responses keep exact historical job/customer identity.",
    "backend/feedback_recovery.py": "Feedback requests retain original historical owner, not restored permission.",
    "backend/workflow_recovery.py": "Saved operational reviews retain their original generation/owner.",
    "backend/enquiry_recovery.py": "Original public intake remains immutable after repeated corrections.",
    "backend/recurrence_plan.py": "A transferred retained definition cannot restart even after return.",
    "backend/workflow.py": "Historical follow-up generation stays ineligible across arbitrary returns; new generation partitioned by latest transfer.",
    "backend/device_notes.py": "Latest transfer identity prevents scope/key/receipt resurrection.",
    "backend/reporting.py": "Current customer grouping is separate from immutable document identity; totals unchanged.",
    "frontend/src/customer-review.jsx": "Fresh exact preview, chronological earlier moves, retained inputs, frozen uncertain attempt and explicit same-ID retry.",
    "frontend/src/customer-history.jsx": "Observed original/current identities, numbered moves and new review affordance.",
    "frontend/src/api.js": "Explicit operation identity scoped only to reviewed customer transfer POST."
  },
  "no_new_original_code_copy": true,
  "schema_evolution": {
    "from": 12,
    "to": 13,
    "metadata": "0.24.0"
  },
  "open": "Transitive merges/unmerge/import/backfill, actual authenticated UI, phone/full offline, live readiness."
}
