{
  "$comment": "Stable public catalog of forensic check/finding codes and override-rule IDs. Generated, do not hand-edit. Codes are stable identifiers; the outbound webhook `top_findings[].code` and `verdict.override_rules_fired` reference these.",
  "verdicts": [
    "REJECT",
    "ESCALATE",
    "PENDING",
    "CONDITIONAL",
    "PASS"
  ],
  "checks": [
    {
      "code": "mrz_checksum_failure",
      "name": "MRZ checksum (passport/TD1/TD3)",
      "category": "identity"
    },
    {
      "code": "mrz_composite_checksum_unverified",
      "name": "MRZ composite-only checksum mismatch",
      "category": "identity"
    },
    {
      "code": "national_id_checksum_failure_egn",
      "name": "Bulgarian EGN checksum",
      "category": "identity"
    },
    {
      "code": "national_id_checksum_failure_cnp",
      "name": "Romanian CNP checksum",
      "category": "identity"
    },
    {
      "code": "national_id_checksum_failure_oib",
      "name": "Croatian OIB checksum",
      "category": "identity"
    },
    {
      "code": "national_id_checksum_failure_rodne_cislo",
      "name": "Slovak/Czech Rodné číslo",
      "category": "identity"
    },
    {
      "code": "national_id_checksum_failure_cpr",
      "name": "Danish CPR validity",
      "category": "identity"
    },
    {
      "code": "sv_nr_invalid",
      "name": "Austrian SV-Nr algorithm",
      "category": "identity"
    },
    {
      "code": "aut_pa_fraud_batch_range",
      "name": "AUT Personalausweis fraud batch",
      "category": "identity"
    },
    {
      "code": "pa_number_extended_batch_proximity",
      "name": "AUT PA batch proximity",
      "category": "identity"
    },
    {
      "code": "at_fuehrerschein_era_mismatch",
      "name": "AT Führerschein era",
      "category": "identity"
    },
    {
      "code": "identity_name_cross_script_unverifiable",
      "name": "Cross-script name",
      "category": "identity"
    },
    {
      "code": "applicant_name_id_mismatch",
      "name": "Applicant name vs ID",
      "category": "identity"
    },
    {
      "code": "height_cross_match",
      "name": "Height cross-match",
      "category": "identity"
    },
    {
      "code": "bv_cumulative_doubling",
      "name": "BV YTD doubling (P3)",
      "category": "payslip"
    },
    {
      "code": "bv_cumulative_reversal",
      "name": "BV YTD monotonicity (P3)",
      "category": "payslip"
    },
    {
      "code": "gz_arithmetic_mismatch",
      "name": "GZ arithmetic (P4)",
      "category": "payslip"
    },
    {
      "code": "gz_arithmetic_not_verified",
      "name": "GZ arithmetic verifiability",
      "category": "payslip"
    },
    {
      "code": "exit_payslip_detected",
      "name": "Exit payslip, commercial signal (T8)",
      "category": "payslip"
    },
    {
      "code": "payslip_period_duplicate",
      "name": "Period duplicate (P5)",
      "category": "payslip"
    },
    {
      "code": "payslip_period_gap",
      "name": "Period gap (P5)",
      "category": "payslip"
    },
    {
      "code": "payslip_period_future_dated",
      "name": "Period future-dated (P5)",
      "category": "payslip"
    },
    {
      "code": "payslip_period_label_mismatch",
      "name": "Period label vs date (P5)",
      "category": "payslip"
    },
    {
      "code": "financial_anomaly",
      "name": "Financial anomaly (T11)",
      "category": "payslip"
    },
    {
      "code": "lst_secondary_employer_override",
      "name": "LSt secondary-employer override (A2-PAY-06)",
      "category": "payslip"
    },
    {
      "code": "gz_creation_date_backdated",
      "name": "GZ creation-date backdating (T22)",
      "category": "payslip"
    },
    {
      "code": "kaz_creation_date_backdated",
      "name": "KAZ creation-date backdating (B2)",
      "category": "bank"
    },
    {
      "code": "kaz_creation_date_post_print_date",
      "name": "KAZ creation date post-dates Druckdatum (B2)",
      "category": "bank"
    },
    {
      "code": "balance_arithmetic_mismatch",
      "name": "Balance arithmetic",
      "category": "bank"
    },
    {
      "code": "credit_before_payslip_date",
      "name": "Credit timing",
      "category": "bank"
    },
    {
      "code": "iban_checksum_fail",
      "name": "IBAN checksum",
      "category": "bank"
    },
    {
      "code": "iban_blz_not_in_oenb",
      "name": "IBAN BLZ validity",
      "category": "bank"
    },
    {
      "code": "failed_debit_detected",
      "name": "Failed debit patterns",
      "category": "bank"
    },
    {
      "code": "chronic_overdraft",
      "name": "Chronic overdraft",
      "category": "bank"
    },
    {
      "code": "sollzinsen_detected",
      "name": "Overdraft interest",
      "category": "bank"
    },
    {
      "code": "address_not_extracted",
      "name": "KAZ address not extracted",
      "category": "bank"
    },
    {
      "code": "transactions_after_period_end",
      "name": "Transactions after period end (T44)",
      "category": "bank"
    },
    {
      "code": "aml_foreign_remittance",
      "name": "AML foreign-remittance pattern (T46)",
      "category": "bank"
    },
    {
      "code": "failed_debit_pattern",
      "name": "Failed direct-debit pattern (T47)",
      "category": "bank"
    },
    {
      "code": "anonymous_credit_cluster",
      "name": "Anonymous SEPA-Gutschrift cluster (T48)",
      "category": "bank"
    },
    {
      "code": "kaz_income_absent_high_expenses",
      "name": "KAZ income absent with high expenses (T12/B11)",
      "category": "bank"
    },
    {
      "code": "iban_country_not_allowed",
      "name": "IBAN country not in allowlist (T25)",
      "category": "bank"
    },
    {
      "code": "pensionsbescheid_detected",
      "name": "Pensionsbescheid detection",
      "category": "pensionsbescheid"
    },
    {
      "code": "pensionsbescheid_confirmed_by_kaz",
      "name": "Pension confirmed by KAZ",
      "category": "pensionsbescheid"
    },
    {
      "code": "pensionsbescheid_no_kaz_confirmation",
      "name": "Pension vs KAZ confirmation",
      "category": "pensionsbescheid"
    },
    {
      "code": "pensionsbescheid_amount_missing",
      "name": "Pension amount extracted",
      "category": "pensionsbescheid"
    },
    {
      "code": "pensionsbescheid_issuing_authority_unrecognized",
      "name": "Pension authority",
      "category": "pensionsbescheid"
    },
    {
      "code": "name_inconsistent_cross_doc",
      "name": "Name consistency across docs",
      "category": "cross_document"
    },
    {
      "code": "address_mismatch_cross_doc",
      "name": "Address consistency across docs",
      "category": "cross_document"
    },
    {
      "code": "dob_mismatch_cross_doc",
      "name": "DOB consistency across docs",
      "category": "cross_document"
    },
    {
      "code": "employer_salary_missing",
      "name": "Employer salary not found in KAZ (T49)",
      "category": "cross_document"
    },
    {
      "code": "employer_salary_unverified",
      "name": "Employer salary unverified in KAZ (T49)",
      "category": "cross_document"
    },
    {
      "code": "pdf_timezone_mismatch",
      "name": "PDF timestamp timezone",
      "category": "cross_document"
    },
    {
      "code": "document_type_mismatch",
      "name": "Document type vs content",
      "category": "cross_document"
    },
    {
      "code": "optical_vs_metadata_date_mismatch",
      "name": "Optical vs PDF metadata date (T24)",
      "category": "cross_document"
    },
    {
      "code": "salary_credit_confirmed",
      "name": "Salary credit confirmed in KAZ (B6)",
      "category": "cross_document"
    },
    {
      "code": "salary_credit_not_found",
      "name": "Salary credit missing from KAZ (B6/T14)",
      "category": "cross_document"
    },
    {
      "code": "bank_iban_payslip_mismatch",
      "name": "IBAN mismatch: payslip vs bank statement (B5)",
      "category": "cross_document"
    },
    {
      "code": "gz_kaz_sender_iban_mismatch",
      "name": "Employer sender IBAN not in KAZ credits (P7)",
      "category": "cross_document"
    },
    {
      "code": "gz_kaz_employer_cross_check",
      "name": "GZ-KAZ employer mismatch (P7)",
      "category": "cross_document"
    },
    {
      "code": "wrong_person_id",
      "name": "Wrong-person ID (cross-applicant)",
      "category": "cross_applicant"
    },
    {
      "code": "ring_match_biometric",
      "name": "Biometric ring match",
      "category": "cross_applicant"
    },
    {
      "code": "ring_match_shared_iban_non_household",
      "name": "Shared IBAN ring match",
      "category": "cross_applicant"
    },
    {
      "code": "ring_match_pa_proximity_plus_signals",
      "name": "PA proximity ring match",
      "category": "cross_applicant"
    },
    {
      "code": "ring_match_same_person_two_ids",
      "name": "Same-person / two-IDs ring",
      "category": "cross_applicant"
    },
    {
      "code": "ring_deterministic",
      "name": "Deterministic ring signals (≥2)",
      "category": "cross_applicant"
    },
    {
      "code": "identical_payslip_cross_applicant",
      "name": "Duplicate payslip",
      "category": "cross_applicant"
    },
    {
      "code": "shared_employer_cluster",
      "name": "Shared-employer cluster",
      "category": "cross_applicant"
    },
    {
      "code": "name_flip_cross_applicant",
      "name": "Name flip across applicants",
      "category": "cross_applicant"
    },
    {
      "code": "submission_timestamp_cluster",
      "name": "Submission timestamp cluster",
      "category": "cross_applicant"
    },
    {
      "code": "shared_pdf_creator",
      "name": "Shared PDF creator fingerprint",
      "category": "cross_applicant"
    },
    {
      "code": "ring_payslip_escalation",
      "name": "Ring payslip-anomaly escalation (X14)",
      "category": "cross_applicant"
    },
    {
      "code": "workplace_coupling_cluster",
      "name": "Workplace-coupling cluster (X13)",
      "category": "cross_applicant"
    },
    {
      "code": "aml_pass_through_account",
      "name": "AML pass-through account pattern (X10)",
      "category": "cross_applicant"
    },
    {
      "code": "shared_anonymous_credit_source",
      "name": "Shared anonymous SEPA credit source (X11)",
      "category": "cross_applicant"
    },
    {
      "code": "structured_dispersal_cross_applicant",
      "name": "Structured dispersal cross-applicant (X12)",
      "category": "cross_applicant"
    },
    {
      "code": "repeat_applicant_iban",
      "name": "Repeat applicant IBAN",
      "category": "cross_applicant"
    },
    {
      "code": "repeat_applicant_pa_number",
      "name": "Repeat applicant PA number",
      "category": "cross_applicant"
    },
    {
      "code": "repeat_applicant_sv_nr",
      "name": "Repeat applicant SV-Nr",
      "category": "cross_applicant"
    },
    {
      "code": "repeat_applicant_name",
      "name": "Repeat applicant name",
      "category": "cross_applicant"
    },
    {
      "code": "repeat_applicant_address",
      "name": "Repeat applicant address",
      "category": "cross_applicant"
    },
    {
      "code": "repeat_applicant_face_biometric",
      "name": "Repeat applicant face biometric",
      "category": "cross_applicant"
    },
    {
      "code": "same_applicant_resubmission",
      "name": "Same applicant resubmission",
      "category": "cross_applicant"
    },
    {
      "code": "repeat_applicant_employer",
      "name": "Repeat applicant employer",
      "category": "cross_applicant"
    },
    {
      "code": "cross_batch_ring",
      "name": "Cross-batch ring",
      "category": "cross_applicant"
    },
    {
      "code": "wrong_person_biometric",
      "name": "Wrong-person biometric",
      "category": "cross_applicant"
    },
    {
      "code": "image_source_detected",
      "name": "Image-sourced document",
      "category": "pipeline"
    },
    {
      "code": "phone_camera_capture",
      "name": "Phone camera capture",
      "category": "pipeline"
    },
    {
      "code": "scanner_capture",
      "name": "Scanner software",
      "category": "pipeline"
    },
    {
      "code": "metadata_absent",
      "name": "Image metadata absent",
      "category": "pipeline"
    },
    {
      "code": "metadata_datetime_mismatch",
      "name": "EXIF datetime mismatch",
      "category": "pipeline"
    },
    {
      "code": "metadata_edited",
      "name": "Photo-editing software detected",
      "category": "pipeline"
    },
    {
      "code": "gps_coordinates_present",
      "name": "GPS coordinates in EXIF",
      "category": "pipeline"
    },
    {
      "code": "whatsapp_transmission_detected",
      "name": "WhatsApp Transmission Detected",
      "category": "metadata"
    },
    {
      "code": "pending_biometric_viz_dob",
      "name": "Pending biometric VIZ/DOB",
      "category": "identity"
    },
    {
      "code": "viz_mrz_dob_mismatch",
      "name": "VIZ vs MRZ DOB mismatch",
      "category": "identity"
    },
    {
      "code": "signature_overlay_detected",
      "name": "Signature overlay detected",
      "category": "identity"
    },
    {
      "code": "extraction_quality_low",
      "name": "Extraction quality",
      "category": "pipeline"
    },
    {
      "code": "required_fields_missing",
      "name": "Required fields present",
      "category": "pipeline"
    },
    {
      "code": "image_only_submission",
      "name": "Text-layer presence",
      "category": "pipeline"
    },
    {
      "code": "page_count_implausible",
      "name": "Page-count plausibility",
      "category": "pipeline"
    },
    {
      "code": "acroform_present",
      "name": "PDF AcroForm fields",
      "category": "pipeline"
    },
    {
      "code": "ms_word_pdf_creator",
      "name": "Microsoft Word PDF creator",
      "category": "metadata"
    },
    {
      "code": "print_to_pdf_creator",
      "name": "Print-to-PDF creator",
      "category": "metadata"
    },
    {
      "code": "microsoft_print_to_pdf_creator",
      "name": "Microsoft Print-to-PDF creator (A2-MET-04)",
      "category": "metadata"
    },
    {
      "code": "pdf_timestamp_impossible",
      "name": "PDF timestamp causality violation (A2-BNK-04)",
      "category": "metadata"
    },
    {
      "code": "gradient_pixel_inconsistency",
      "name": "Pixel-level pasting",
      "category": "pipeline"
    },
    {
      "code": "Q3_EXTRACTION_FAILURE",
      "name": "Extraction completed",
      "category": "pipeline"
    },
    {
      "code": "extraction_failed",
      "name": "VL extraction call succeeded",
      "category": "quality_gate"
    },
    {
      "code": "social_media_crosscheck",
      "name": "Social-media live-account analysis (B2-WEB-01)",
      "category": "external"
    },
    {
      "code": "employer_internet_search",
      "name": "Employer internet-search verification (B2-WEB-02)",
      "category": "external"
    },
    {
      "code": "employer_reputation_search",
      "name": "Employer reputation assessment (B2-WEB-03)",
      "category": "external"
    },
    {
      "code": "ksv1870_person_not_found",
      "name": "KSV1870 person lookup",
      "category": "external"
    },
    {
      "code": "ksv1870_person_insolvent",
      "name": "KSV1870 insolvency",
      "category": "external"
    },
    {
      "code": "ksv1870_employer_not_found",
      "name": "KSV1870 employer lookup",
      "category": "external"
    },
    {
      "code": "ksv1870_employer_inactive",
      "name": "KSV1870 employer active",
      "category": "external"
    },
    {
      "code": "ksv1870_api_unreachable",
      "name": "KSV1870 API reachability",
      "category": "external"
    },
    {
      "code": "gradient_api_unreachable",
      "name": "Pixel-forensics service reachability",
      "category": "external"
    },
    {
      "code": "biller_registry_hit",
      "name": "Biller registry hit",
      "category": "external"
    },
    {
      "code": "umbrella_address_api_unreachable",
      "name": "Umbrella address API reachability",
      "category": "external"
    },
    {
      "code": "umbrella_address_invalid",
      "name": "Umbrella address invalid",
      "category": "external"
    },
    {
      "code": "umbrella_address_no_match",
      "name": "Umbrella address no-match",
      "category": "external"
    },
    {
      "code": "umbrella_aml_api_unreachable",
      "name": "Umbrella AML API reachability",
      "category": "external"
    },
    {
      "code": "umbrella_aml_sanction_hit",
      "name": "Umbrella AML sanction hit",
      "category": "external"
    },
    {
      "code": "umbrella_aml_criminal_hit",
      "name": "Umbrella AML criminal hit",
      "category": "external"
    },
    {
      "code": "umbrella_aml_pep_hit",
      "name": "Umbrella AML PEP hit",
      "category": "external"
    },
    {
      "code": "umbrella_credit_api_unreachable",
      "name": "Umbrella credit API reachability",
      "category": "external"
    },
    {
      "code": "umbrella_credit_poor",
      "name": "Umbrella poor credit",
      "category": "external"
    },
    {
      "code": "umbrella_osint_api_unreachable",
      "name": "Umbrella OSINT API reachability",
      "category": "external"
    },
    {
      "code": "umbrella_osint_adverse_media",
      "name": "Umbrella adverse media",
      "category": "external"
    },
    {
      "code": "id_template_nonconformance",
      "name": "ID template conformance (B2-TPL-01)",
      "category": "external"
    },
    {
      "code": "geographic_incoherence",
      "name": "Geographic coherence (B2-TPL-02)",
      "category": "cross_document"
    }
  ],
  "override_rules": [
    {
      "id": "I1",
      "name": "MRZ or national-ID check digit failure",
      "check_ids": [
        "mrz_checksum_failure",
        "national_id_checksum_failure_egn",
        "national_id_checksum_failure_cnp",
        "national_id_checksum_failure_oib",
        "national_id_checksum_failure_rodne_cislo",
        "national_id_checksum_failure_cpr"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "P3",
      "name": "BV cumulative doubling (mathematically impossible)",
      "check_ids": [
        "bv_cumulative_doubling"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "B2",
      "name": "Document creation date backdated (KAZ or GZ)",
      "check_ids": [
        "kaz_creation_date_backdated",
        "kaz_creation_date_post_print_date",
        "gz_creation_date_backdated"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "B3",
      "name": "KAZ transactions dated after stated period end",
      "check_ids": [
        "transactions_after_period_end"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "B5",
      "name": "CRITICAL balance arithmetic mismatch → REJECT",
      "check_ids": [
        "balance_arithmetic_mismatch"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "B11",
      "name": "KAZ income absent with significant recurring expenses, CRITICAL → REJECT",
      "check_ids": [
        "kaz_income_absent_high_expenses"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "I9_AT",
      "name": "AUT PA in confirmed fraud batch range",
      "check_ids": [
        "aut_pa_fraud_batch_range"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "X_RING",
      "name": "Cross-applicant ring match",
      "check_ids": [
        "ring_match_biometric",
        "ring_match_shared_iban_non_household",
        "ring_match_pa_proximity_plus_signals",
        "ring_match_same_person_two_ids",
        "ring_deterministic"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "W_BIO_REJECT",
      "name": "Wrong-person biometric (face mismatch across applicant's own documents)",
      "check_ids": [
        "wrong_person_biometric"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "S_OVERLAY_REJECT",
      "name": "Signature overlay detected",
      "check_ids": [
        "signature_overlay_detected"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "I13",
      "name": "Wrong-person ID",
      "check_ids": [
        "wrong_person_id"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "X_REPEAT_IBAN",
      "name": "Cross-batch IBAN re-use, different applicant",
      "check_ids": [
        "repeat_applicant_iban"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "X_REPEAT_BIOMETRIC",
      "name": "Cross-batch face biometric match, different applicant",
      "check_ids": [
        "repeat_applicant_face_biometric"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "X_REPEAT_PA",
      "name": "Cross-batch national ID re-use, different applicant",
      "check_ids": [
        "repeat_applicant_pa_number"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "X_REPEAT_SV",
      "name": "Cross-batch SV-Nr re-use, different applicant",
      "check_ids": [
        "repeat_applicant_sv_nr"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "X_CROSS_BATCH_RING",
      "name": "Cross-batch ring, coordinated multi-applicant re-use",
      "check_ids": [
        "cross_batch_ring"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "P5",
      "name": "CRITICAL financial anomaly → REJECT",
      "check_ids": [
        "financial_anomaly"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "P4_NV",
      "name": "GZ arithmetic not verified → CONDITIONAL minimum",
      "check_ids": [
        "gz_arithmetic_not_verified"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "CONDITIONAL"
    },
    {
      "id": "PB1_CONDITIONAL",
      "name": "Pensionsbescheid submitted → CONDITIONAL minimum",
      "check_ids": [
        "pensionsbescheid_detected"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "CONDITIONAL"
    },
    {
      "id": "I_CROSS_SCRIPT_CONDITIONAL",
      "name": "Cross-script name unverifiable → CONDITIONAL minimum",
      "check_ids": [
        "identity_name_cross_script_unverifiable"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "CONDITIONAL"
    },
    {
      "id": "P6",
      "name": "CRITICAL GZ arithmetic mismatch → REJECT",
      "check_ids": [
        "gz_arithmetic_mismatch"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "AML1",
      "name": "AML foreign-remittance pattern, CRITICAL → REJECT",
      "check_ids": [
        "aml_foreign_remittance"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "AML2",
      "name": "Anonymous SEPA-Gutschrift cluster, CRITICAL → REJECT",
      "check_ids": [
        "anonymous_credit_cluster"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "LIQ1",
      "name": "Severe liquidity failure, failed debits + significant overdraft → REJECT",
      "check_ids": [
        "failed_debit_pattern"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "REJECT"
    },
    {
      "id": "B10",
      "name": "Credit before payslip date",
      "check_ids": [
        "credit_before_payslip_date"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "ESCALATE"
    },
    {
      "id": "Q1",
      "name": "Image-only submission",
      "check_ids": [
        "image_only_submission"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "PENDING"
    },
    {
      "id": "Q3",
      "name": "VL extraction call failure, evidence incomplete",
      "check_ids": [
        "extraction_failed"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "PENDING"
    },
    {
      "id": "M_EXTRACTION_FAILED_CAP",
      "name": "Extraction call failure → cap severity at MEDIUM",
      "check_ids": [
        "extraction_failed"
      ],
      "effect": "severity_cap",
      "severity_cap": "MEDIUM"
    },
    {
      "id": "C3",
      "name": "Address mismatch across documents, always CRITICAL",
      "check_ids": [
        "address_mismatch_cross_doc"
      ],
      "effect": "severity_override",
      "severity_value": "CRITICAL"
    },
    {
      "id": "M8_ACROFORM",
      "name": "AcroForm alone → INFO",
      "check_ids": [
        "acroform_present"
      ],
      "effect": "severity_cap",
      "severity_cap": "INFO"
    },
    {
      "id": "M9_WORD",
      "name": "Microsoft Word / Print-to-PDF Creator → INFO",
      "check_ids": [
        "ms_word_pdf_creator",
        "print_to_pdf_creator",
        "microsoft_print_to_pdf_creator"
      ],
      "effect": "severity_cap",
      "severity_cap": "INFO"
    },
    {
      "id": "M9_WORD_CONDITIONAL",
      "name": "Microsoft Word / Print-to-PDF Creator → CONDITIONAL minimum",
      "check_ids": [
        "ms_word_pdf_creator",
        "print_to_pdf_creator",
        "microsoft_print_to_pdf_creator"
      ],
      "effect": "verdict_override",
      "verdict_on_trigger": "CONDITIONAL"
    },
    {
      "id": "X10_CRYPTO",
      "name": "Crypto / MoonPay transactions alone → INFO",
      "check_ids": [
        "crypto_transaction_alone",
        "moonpay_transaction_alone"
      ],
      "effect": "severity_cap",
      "severity_cap": "INFO"
    },
    {
      "id": "F13",
      "name": "HIGH or CRITICAL finding → ESCALATE minimum",
      "effect": "verdict_floor",
      "floor_severity": "HIGH",
      "verdict_floor": "ESCALATE"
    },
    {
      "id": "F14",
      "name": "Income-evidence HIGH cluster (≥3) → REJECT floor",
      "effect": "verdict_floor",
      "floor_severity": "HIGH",
      "verdict_floor": "REJECT"
    }
  ]
}
