{
  "tool_id": "art-535-fdic370-output-file-validator",
  "note": "Vectors computed directly from the shipped kernel. Covers a clean file-conforms-and-ties-out pass, a structural error excluding a row from totals (review_required regardless of totals), a totals mismatch against a supplied art-507 recompute (escalate), and a missing art-507 result (did_not_run).",
  "vectors": [
    {
      "name": "conforms-and-ties-out",
      "description": "Two conforming rows, no structure errors, file totals equal the supplied art-507 recompute exactly. FDIC370FILE_CONFORMS_AND_TOTALS_TIE_OUT, auto_pass.",
      "policy_parameters": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0001",
        "file_records": [
          {
            "row_ref": "FR-1",
            "ownership_right_and_capacity": "SGL",
            "deposit_account_count": 3,
            "distinct_account_holder_count": 2,
            "fully_insured_account_count": 1,
            "accounts_with_uninsured_deposits_count": 2,
            "insured_minor_units": 37500000,
            "uninsured_minor_units": 10000000
          },
          {
            "row_ref": "FR-2",
            "ownership_right_and_capacity": "JNT",
            "deposit_account_count": 1,
            "distinct_account_holder_count": 1,
            "fully_insured_account_count": 1,
            "accounts_with_uninsured_deposits_count": 0,
            "insured_minor_units": 9000000,
            "uninsured_minor_units": 0
          }
        ],
        "art507_result": {
          "fully_insured_account_count": 2,
          "accounts_with_uninsured_deposits_count": 2,
          "insured_minor_units": 46500000,
          "uninsured_minor_units": 10000000
        }
      },
      "output_payload": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0001",
        "file_totals": {
          "deposit_account_count": 4,
          "distinct_account_holder_count": 3,
          "fully_insured_account_count": 2,
          "accounts_with_uninsured_deposits_count": 2,
          "insured_minor_units": 46500000,
          "uninsured_minor_units": 10000000
        },
        "file_structure_errors": [],
        "conforming_row_count": 2,
        "supplied_row_count": 2,
        "art507_supplied": true,
        "art507_result": {
          "fully_insured_account_count": 2,
          "accounts_with_uninsured_deposits_count": 2,
          "insured_minor_units": 46500000,
          "uninsured_minor_units": 10000000
        },
        "mismatches": [],
        "totals_mismatch": false,
        "decision": {
          "gate_policy": "auto_pass",
          "execution_state": "ran",
          "reason": null
        },
        "ownership_code_handling": "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
        "small_buyer_caveat": "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
        "rationale": [
          "Part 370 output file validation for institution reference IDI-SYNTH-0001 as of 2026-06-30, over 2 supplied file rows.",
          "Every supplied row conforms to the section 370.10 coverage summary report layout: 2 rows carried every required field and no ownership right and capacity code repeated.",
          "The file's totals tie out exactly against the supplied art-507 recompute across every tied field.",
          "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
          "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
          "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here."
        ],
        "boundary": "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here.",
        "note": "Deterministic 12 CFR part 370 output-file shape validator and totals reconciler. Single-run and stateless: it holds no records, runs on no schedule, and retains nothing. It validates the file's own declared rows against the section 370.10 record layout and ties the file's totals to a supplied art-507 recompute, reporting a shape defect and a totals mismatch as two separate, never-merged findings. It holds no part 330 rule table and is not a filing."
      },
      "compliance_flags": [
        "FDIC370FILE_CONFORMS_AND_TOTALS_TIE_OUT",
        "FDIC370FILE_ALL_ROWS_CONFORM"
      ],
      "golden_hash": "6ce81ee6eac38f86d351bfe5cdb057f72747b6626553bd855fd85e6e92731964"
    },
    {
      "name": "structure-error-missing-field",
      "description": "One row missing insured_minor_units -- excluded from totals, review_required regardless of what the remaining totals would show.",
      "policy_parameters": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0002",
        "file_records": [
          {
            "row_ref": "FR-1",
            "ownership_right_and_capacity": "SGL",
            "deposit_account_count": 3,
            "distinct_account_holder_count": 2,
            "fully_insured_account_count": 1,
            "accounts_with_uninsured_deposits_count": 2,
            "uninsured_minor_units": 10000000
          },
          {
            "row_ref": "FR-2",
            "ownership_right_and_capacity": "JNT",
            "deposit_account_count": 1,
            "distinct_account_holder_count": 1,
            "fully_insured_account_count": 1,
            "accounts_with_uninsured_deposits_count": 0,
            "insured_minor_units": 9000000,
            "uninsured_minor_units": 0
          }
        ],
        "art507_result": {
          "fully_insured_account_count": 1,
          "accounts_with_uninsured_deposits_count": 0,
          "insured_minor_units": 9000000,
          "uninsured_minor_units": 0
        }
      },
      "output_payload": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0002",
        "file_totals": {
          "deposit_account_count": 1,
          "distinct_account_holder_count": 1,
          "fully_insured_account_count": 1,
          "accounts_with_uninsured_deposits_count": 0,
          "insured_minor_units": 9000000,
          "uninsured_minor_units": 0
        },
        "file_structure_errors": [
          {
            "row_ref": "FR-1",
            "ownership_right_and_capacity": "SGL",
            "missing_field": "insured_minor_units",
            "reason": "The row is missing or carries a malformed value for insured_minor_units. Section 370.10's coverage summary report requires this field on every row, and a malformed value is reported rather than coerced or dropped."
          }
        ],
        "conforming_row_count": 1,
        "supplied_row_count": 2,
        "art507_supplied": true,
        "art507_result": {
          "fully_insured_account_count": 1,
          "accounts_with_uninsured_deposits_count": 0,
          "insured_minor_units": 9000000,
          "uninsured_minor_units": 0
        },
        "mismatches": [],
        "totals_mismatch": false,
        "decision": {
          "gate_policy": "review_required",
          "execution_state": "ran",
          "reason": null
        },
        "ownership_code_handling": "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
        "small_buyer_caveat": "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
        "rationale": [
          "Part 370 output file validation for institution reference IDI-SYNTH-0002 as of 2026-06-30, over 2 supplied file rows.",
          "1 row did not conform and is excluded from the file totals, each with the defect named: FR-1 (insured_minor_units).",
          "The file's totals tie out exactly against the supplied art-507 recompute across every tied field.",
          "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
          "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
          "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here."
        ],
        "boundary": "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here.",
        "note": "Deterministic 12 CFR part 370 output-file shape validator and totals reconciler. Single-run and stateless: it holds no records, runs on no schedule, and retains nothing. It validates the file's own declared rows against the section 370.10 record layout and ties the file's totals to a supplied art-507 recompute, reporting a shape defect and a totals mismatch as two separate, never-merged findings. It holds no part 330 rule table and is not a filing."
      },
      "compliance_flags": [
        "FDIC370FILE_STRUCTURE_ERRORS_PRESENT"
      ],
      "golden_hash": "764be8b58f3e0cd762177582c9e1efa86a07a9db5ef911b0eae8f41589cfb3ca"
    },
    {
      "name": "totals-mismatch-escalate",
      "description": "File conforms structurally but its insured total disagrees with the supplied art-507 recompute -- escalate, never silently reconciled.",
      "policy_parameters": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0003",
        "file_records": [
          {
            "row_ref": "FR-1",
            "ownership_right_and_capacity": "SGL",
            "deposit_account_count": 3,
            "distinct_account_holder_count": 2,
            "fully_insured_account_count": 1,
            "accounts_with_uninsured_deposits_count": 2,
            "insured_minor_units": 40000000,
            "uninsured_minor_units": 10000000
          }
        ],
        "art507_result": {
          "fully_insured_account_count": 1,
          "accounts_with_uninsured_deposits_count": 2,
          "insured_minor_units": 37500000,
          "uninsured_minor_units": 10000000
        }
      },
      "output_payload": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0003",
        "file_totals": {
          "deposit_account_count": 3,
          "distinct_account_holder_count": 2,
          "fully_insured_account_count": 1,
          "accounts_with_uninsured_deposits_count": 2,
          "insured_minor_units": 40000000,
          "uninsured_minor_units": 10000000
        },
        "file_structure_errors": [],
        "conforming_row_count": 1,
        "supplied_row_count": 1,
        "art507_supplied": true,
        "art507_result": {
          "fully_insured_account_count": 1,
          "accounts_with_uninsured_deposits_count": 2,
          "insured_minor_units": 37500000,
          "uninsured_minor_units": 10000000
        },
        "mismatches": [
          {
            "field": "insured_minor_units",
            "file_value": 40000000,
            "art507_value": 37500000,
            "reason": "The file's declared total for this field does not equal the tied art-507 recompute."
          }
        ],
        "totals_mismatch": true,
        "decision": {
          "gate_policy": "escalate",
          "execution_state": "ran",
          "reason": null
        },
        "ownership_code_handling": "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
        "small_buyer_caveat": "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
        "rationale": [
          "Part 370 output file validation for institution reference IDI-SYNTH-0003 as of 2026-06-30, over 1 supplied file row.",
          "Every supplied row conforms to the section 370.10 coverage summary report layout: 1 row carried every required field and no ownership right and capacity code repeated.",
          "1 tied field did not reconcile against the supplied art-507 recompute, reported individually rather than netted: insured_minor_units (file 40000000, art-507 37500000).",
          "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
          "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
          "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here."
        ],
        "boundary": "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here.",
        "note": "Deterministic 12 CFR part 370 output-file shape validator and totals reconciler. Single-run and stateless: it holds no records, runs on no schedule, and retains nothing. It validates the file's own declared rows against the section 370.10 record layout and ties the file's totals to a supplied art-507 recompute, reporting a shape defect and a totals mismatch as two separate, never-merged findings. It holds no part 330 rule table and is not a filing."
      },
      "compliance_flags": [
        "FDIC370FILE_TOTALS_MISMATCH",
        "FDIC370FILE_ALL_ROWS_CONFORM"
      ],
      "golden_hash": "834a9813b9f1931b6184ea6d23bd45adc89253341a02fa23ae9126e2c4b2f13b"
    },
    {
      "name": "no-art507-result-did-not-run",
      "description": "No art-507 result supplied at all -- did_not_run, the file totals cannot be reconciled against nothing.",
      "policy_parameters": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0004",
        "file_records": [
          {
            "row_ref": "FR-1",
            "ownership_right_and_capacity": "SGL",
            "deposit_account_count": 3,
            "distinct_account_holder_count": 2,
            "fully_insured_account_count": 1,
            "accounts_with_uninsured_deposits_count": 2,
            "insured_minor_units": 37500000,
            "uninsured_minor_units": 10000000
          }
        ]
      },
      "output_payload": {
        "as_of_date": "2026-06-30",
        "institution_ref": "IDI-SYNTH-0004",
        "file_totals": {
          "deposit_account_count": 3,
          "distinct_account_holder_count": 2,
          "fully_insured_account_count": 1,
          "accounts_with_uninsured_deposits_count": 2,
          "insured_minor_units": 37500000,
          "uninsured_minor_units": 10000000
        },
        "file_structure_errors": [],
        "conforming_row_count": 1,
        "supplied_row_count": 1,
        "art507_supplied": false,
        "art507_result": null,
        "mismatches": [],
        "totals_mismatch": false,
        "decision": {
          "gate_policy": null,
          "execution_state": "did_not_run",
          "reason": "no_art507_result_supplied: the file's totals cannot be reconciled without a tied art-507-determine-deposit-insurance-coverage recompute result."
        },
        "ownership_code_handling": "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
        "small_buyer_caveat": "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
        "rationale": [
          "Part 370 output file validation for institution reference IDI-SYNTH-0004 as of 2026-06-30, over 1 supplied file row.",
          "Every supplied row conforms to the section 370.10 coverage summary report layout: 1 row carried every required field and no ownership right and capacity code repeated.",
          "no_art507_result_supplied: the file's totals cannot be reconciled without a tied art-507-determine-deposit-insurance-coverage recompute result.",
          "Ownership right and capacity codes on each file row are opaque strings, used only to detect a code repeated across rows. Nothing in this computation branches on the text of a code, and no table of part 330 ownership categories or allowance rules is held here.",
          "Small-buyer caveat carried forward from art-507: the population this reconciliation currently covers is zero institutions in the revenue-kanban sense. This validator is specified and shipped anyway because it is cheap and completes art-507 into the certification evidence pack.",
          "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here."
        ],
        "boundary": "This validates the shape of a supplied 12 CFR part 370 output file against the section 370.10 record layout and ties the file's declared totals to a supplied art-507-determine-deposit-insurance-coverage recompute. It is not a filing, it does not produce the section 370.10 submission format, it carries no claim that the FDIC would accept the file, and it offers no deposit insurance advice. Whether coverage is correct for any particular depositor is decided under 12 CFR part 330 by the institution and its counsel, never here.",
        "note": "Deterministic 12 CFR part 370 output-file shape validator and totals reconciler. Single-run and stateless: it holds no records, runs on no schedule, and retains nothing. It validates the file's own declared rows against the section 370.10 record layout and ties the file's totals to a supplied art-507 recompute, reporting a shape defect and a totals mismatch as two separate, never-merged findings. It holds no part 330 rule table and is not a filing."
      },
      "compliance_flags": [
        "FDIC370FILE_NO_ART507_RESULT_SUPPLIED",
        "FDIC370FILE_ALL_ROWS_CONFORM"
      ],
      "golden_hash": "5d500057293e4c7b8e8e657e9951a5ef064450806ae3874736da3e169558ee42"
    }
  ]
}
