{
  "schemaVersion": 1,
  "evidenceSchema": "sanmopia-legacy-contract-acceptance-source.v1",
  "capturedAt": "2026-07-19T19:36:04+09:00",
  "status": "provisional",
  "classification": "historical_source_only",
  "completionClaim": false,
  "frontendRevision": "248f4f9d04628a3c9c0e7dc7478669cf49d2d2c5",
  "sourceRepository": "source-refs/sanmopia_web",
  "assets": [
    {
      "path": "agree.png",
      "sha256": "7b5210e81d0db23e696598e1f2451e680b9d7ccc79a410c11c12128379bdc09f"
    },
    {
      "path": "third-party.png",
      "sha256": "3eee35cf8ac7781d5f1c1e455cd31c5126c662a2268b9f15afef9bfb4686bba5"
    }
  ],
  "artifacts": {
    "agree.png": {
      "sha256": "7b5210e81d0db23e696598e1f2451e680b9d7ccc79a410c11c12128379bdc09f",
      "sourcePath": "static/image/service/payment_agree/agree.png",
      "legacySelectors": ["privacy1", "privacy2", "privacy3"]
    },
    "third-party.png": {
      "sha256": "3eee35cf8ac7781d5f1c1e455cd31c5126c662a2268b9f15afef9bfb4686bba5",
      "sourcePath": "static/image/service/payment_agree/3rd.png",
      "legacySelectors": ["privacy4"]
    }
  },
  "sourceAnchors": [
    {
      "path": "application/views/service/reservation_payment.php",
      "sha256": "68e59469b2320b36d486b5143894180b04ba48d4bac1d5daf509fe61e63612f9",
      "lineRanges": ["42-61", "63-146"],
      "proves": ["document_application_sets", "four_checkbox_labels", "signature_entry", "payment_submit"]
    },
    {
      "path": "static/js/reservation_payment.js",
      "sha256": "cae81b546fba49efbe37386b4b827d81b1b16386aae035f99ff651985efb1dfa",
      "lineRanges": ["1-112"],
      "proves": ["three_to_one_document_mapping", "all_items_required", "signature_required", "signature_upload_before_payment"]
    },
    {
      "path": "application/views/modal/modal_sign.php",
      "sha256": "d83eee262d8ca1318dcafa2400d8de0a6f4978b7c17c2d2175263976edee026d",
      "lineRanges": ["1-11"],
      "proves": ["name_instruction", "canvas_capture", "clear_and_confirm_controls"]
    },
    {
      "path": "static/js/modal/modal_sign.js",
      "sha256": "5303a2028b7cd4540b3ee34d05cb6a33ce8be15769160759bde187cd9368a61b",
      "lineRanges": ["9-85"],
      "proves": ["non_blank_client_guard", "png_data_url"]
    },
    {
      "path": "application/controllers/api/Service.php",
      "sha256": "19c37d6a555db8a2402cfd9d53d58cd1bd4aaa7c3cd6296f8d09214fa13a2c47",
      "lineRanges": ["869-882"],
      "proves": ["path_reservation_id", "signature_model_handoff"]
    },
    {
      "path": "application/models/Payment_model.php",
      "sha256": "906160154b012d83320e31dbaa925373cc68874690e4941ae3b54ae4c5f4a86b",
      "lineRanges": ["13-42"],
      "proves": ["base64_decode", "mutable_signature_path", "previous_signature_delete"]
    }
  ],
  "legacyAcceptanceItems": [
    {
      "ordinal": 1,
      "label": "개인정보 처리에 동의하십니까?",
      "legacySelector": "privacy1",
      "document": "agree.png",
      "requiredByBrowser": true
    },
    {
      "ordinal": 2,
      "label": "고유식별정보 처리에 동의하십니까?",
      "legacySelector": "privacy2",
      "document": "agree.png",
      "requiredByBrowser": true
    },
    {
      "ordinal": 3,
      "label": "민감정보 처리에 동의하십니까?",
      "legacySelector": "privacy3",
      "document": "agree.png",
      "requiredByBrowser": true
    },
    {
      "ordinal": 4,
      "label": "제3자 제공에 동의하십니까?",
      "legacySelector": "privacy4",
      "document": "third-party.png",
      "requiredByBrowser": true
    }
  ],
  "signatureApplicationSets": {
    "일반": [
      "산모/신생아 건강관리 서비스 이용계약서",
      "서비스 제공기록지",
      "개인 정보 동의서"
    ],
    "바우처": [
      "산모/신생아 건강관리 서비스 이용계약서",
      "서비스 제공기록지",
      "사회 복지 서비스 제공 이용계획서",
      "개인 정보 동의서",
      "본인 부담금 영수증",
      "계약금액 산출 내역"
    ]
  },
  "legacyPersistence": {
    "acceptanceItemsPersisted": false,
    "documentDigestPersisted": false,
    "wordingRevisionPersisted": false,
    "signatureDigestPersisted": false,
    "signaturePathMutable": true,
    "previousSignatureDeleted": true
  },
  "privacyBoundary": {
    "copiedLegacySignatureBytes": false,
    "excludedSourceGlobs": ["upload/sign/**"],
    "reason": "Legacy uploaded signatures can identify a person and are not documentation evidence."
  },
  "proofBoundaries": {
    "legacySourceProof": true,
    "legalApprovalProof": false,
    "productionPolicyProof": false,
    "note": "Byte-identical legacy source assets. Preservation does not approve them as a modern legal-policy seed."
  },
  "observations": {
    "legacySourceAssetsByteIdentical": true,
    "assetCount": 2,
    "sharedAgreementImageSelectorCount": 3,
    "thirdPartyImageSelectorCount": 1
  },
  "limitations": [
    "These files prove only the legacy browser documents and selectors.",
    "Source anchors prove historical code behavior, not actor ownership or legal validity.",
    "The frontend revision identifies the immutable evidence-publication consumer, not authorship of the legacy bytes.",
    "Preservation does not approve the images as modern legal wording, policy, retention, or production seed.",
    "No uploaded legacy signature bytes are copied or published.",
    "No actor mutation, backend confirmation, durable acceptance, deployment, or migration-completion claim is made."
  ]
}
