{
  "tool_id": "art-520-operator-exit-data-portability",
  "note": "Vectors computed directly from the shipped kernel. Covers a clean EXIT_PORTABLE case, the point of the node (stranded category + EXIT_OPERATOR_CLAIM_UNSUPPORTED together), the UNDECLARED-not-scored-as-failure rule across every tri-state input, the §6.9 second-jurisdiction (FFIEC-shaped) region-portability case with a proprietary format and a single-supplier no-substitute dependency, and malformed/rejected inputs coerced without a crash.",
  "vectors": [
    {
      "name": "portable-clean-jurisdiction-a",
      "description": "DORA-shaped exit assessment: every declared data category has an open-format export, all named components are operator-controlled, an escrow arrangement exists, notice period and transition terms are both declared. EXIT_PORTABLE, no exceptions of substance.",
      "policy_parameters": {
        "as_of": "2026-08-01",
        "contractual_operator": true,
        "data_categories": [
          {
            "category": "transaction_ledger",
            "export_exists": true,
            "format": "csv",
            "format_open": true,
            "export_cadence": "daily",
            "last_successful_export": "2026-07-31"
          },
          {
            "category": "customer_account_master",
            "export_exists": true,
            "format": "json",
            "format_open": true,
            "export_cadence": "weekly",
            "last_successful_export": "2026-07-28"
          }
        ],
        "declared_components": [
          {
            "name": "core_ledger_engine",
            "controlled_by": "operator"
          },
          {
            "name": "reporting_warehouse",
            "controlled_by": "operator"
          }
        ],
        "dependencies": [
          {
            "name": "clearing_network_access",
            "single_supplier": false,
            "substitutable": true
          }
        ],
        "escrow_arrangements": {
          "exists": true,
          "description": "source escrow held by a third-party agent"
        },
        "notice_period_days": 180,
        "transition_assistance_terms": "180 days of vendor-supplied migration support per the exit schedule"
      },
      "output_payload": {
        "as_of": "2026-08-01",
        "contractual_operator": "true",
        "categories": [
          {
            "category": "transaction_ledger",
            "export_exists": "true",
            "format": "csv",
            "format_open": "true",
            "export_cadence": "daily",
            "last_successful_export": "2026-07-31",
            "verdict": "PORTABLE"
          },
          {
            "category": "customer_account_master",
            "export_exists": "true",
            "format": "json",
            "format_open": "true",
            "export_cadence": "weekly",
            "last_successful_export": "2026-07-28",
            "verdict": "PORTABLE"
          }
        ],
        "category_count": 2,
        "stranded_categories": [],
        "stranded_category_count": 0,
        "proprietary_format_categories": [],
        "undeclared_categories": [],
        "portable": true,
        "components": [
          {
            "name": "core_ledger_engine",
            "controlled_by": "operator"
          },
          {
            "name": "reporting_warehouse",
            "controlled_by": "operator"
          }
        ],
        "operator_controlled_count": 2,
        "supplier_controlled_count": 0,
        "undeclared_component_count": 0,
        "declared_component_count": 2,
        "operator_control_ratio_declared": "2/2",
        "operator_claim_unsupported": false,
        "dependencies": [
          {
            "name": "clearing_network_access",
            "single_supplier": "false",
            "substitutable": "true"
          }
        ],
        "single_supplier_no_substitute": [],
        "escrow_exists": "true",
        "escrow_description": "source escrow held by a third-party agent",
        "notice_period_days": 180,
        "notice_period_declared": true,
        "transition_assistance_terms": "180 days of vendor-supplied migration support per the exit schedule",
        "transition_assistance_declared": true,
        "exit_readiness_exceptions": [],
        "rejected_inputs": [],
        "rationale": [
          "2 declared data categories: 0 stranded (no export path), 0 portable in a proprietary format, 0 with export status or format openness undeclared.",
          "No stranded categories declared.",
          "Operator-control ratio as declared: 2/2 of definitively-declared components (0 undeclared).",
          "Escrow arrangement declared.",
          "This evaluates the declared exit posture only. It does not audit a supplier, rate a vendor, or opine on contract enforceability."
        ],
        "note": "Deterministic evaluation of a caller-declared operator-exit and data-portability posture: per-category export/format portability with a stranded-category list, declared operator- vs supplier-control of named components (with an unsupported-operator-claim check), single-supplier dependencies with no declared substitute, escrow declaration, and notice/transition terms. Evaluates declarations only -- never a supplier audit, rating, or enforceability opinion."
      },
      "compliance_flags": [
        "EXIT_PORTABLE"
      ],
      "golden_hash": "136e84dc13bca59b6d4a1d0fb9812d15b2bb976f97fd59783e46b9ef17bea306"
    },
    {
      "name": "stranded-category-and-operator-claim-unsupported",
      "description": "THE POINT OF THE NODE: one category has no export path (stranded), and the caller declares itself the contractual operator while every definitively-declared component is supplier-controlled. EXIT_STRANDED_DATA + EXIT_OPERATOR_CLAIM_UNSUPPORTED fire together.",
      "policy_parameters": {
        "as_of": "2026-08-01",
        "contractual_operator": true,
        "data_categories": [
          {
            "category": "audit_log_archive",
            "export_exists": false
          },
          {
            "category": "transaction_ledger",
            "export_exists": true,
            "format": "csv",
            "format_open": true
          }
        ],
        "declared_components": [
          {
            "name": "core_processing_engine",
            "controlled_by": "supplier"
          },
          {
            "name": "settlement_module",
            "controlled_by": "supplier"
          }
        ],
        "dependencies": [],
        "escrow_arrangements": {
          "exists": false
        },
        "notice_period_days": 30,
        "transition_assistance_terms": null
      },
      "output_payload": {
        "as_of": "2026-08-01",
        "contractual_operator": "true",
        "categories": [
          {
            "category": "audit_log_archive",
            "export_exists": "false",
            "format": null,
            "format_open": "undeclared",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "STRANDED"
          },
          {
            "category": "transaction_ledger",
            "export_exists": "true",
            "format": "csv",
            "format_open": "true",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "PORTABLE"
          }
        ],
        "category_count": 2,
        "stranded_categories": [
          {
            "category": "audit_log_archive",
            "export_exists": "false",
            "format": null,
            "format_open": "undeclared",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "STRANDED"
          }
        ],
        "stranded_category_count": 1,
        "proprietary_format_categories": [],
        "undeclared_categories": [],
        "portable": false,
        "components": [
          {
            "name": "core_processing_engine",
            "controlled_by": "supplier"
          },
          {
            "name": "settlement_module",
            "controlled_by": "supplier"
          }
        ],
        "operator_controlled_count": 0,
        "supplier_controlled_count": 2,
        "undeclared_component_count": 0,
        "declared_component_count": 2,
        "operator_control_ratio_declared": "0/2",
        "operator_claim_unsupported": true,
        "dependencies": [],
        "single_supplier_no_substitute": [],
        "escrow_exists": "false",
        "escrow_description": null,
        "notice_period_days": 30,
        "notice_period_declared": true,
        "transition_assistance_terms": null,
        "transition_assistance_declared": false,
        "exit_readiness_exceptions": [
          {
            "area": "data_category",
            "name": "audit_log_archive",
            "detail": "declared no export path -- stranded"
          },
          {
            "area": "operator_claim",
            "name": "contractual_operator",
            "detail": "declared the contractual operator, but all 2 definitively-declared components are supplier-controlled"
          },
          {
            "area": "escrow",
            "name": "escrow_arrangements",
            "detail": "declared: no escrow arrangement"
          },
          {
            "area": "transition",
            "name": "transition_assistance_terms",
            "detail": "transition-assistance terms not declared"
          }
        ],
        "rejected_inputs": [],
        "rationale": [
          "2 declared data categories: 1 stranded (no export path), 0 portable in a proprietary format, 0 with export status or format openness undeclared.",
          "1 category has no declared export path.",
          "Operator-control ratio as declared: 0/2 of definitively-declared components (0 undeclared).",
          "Contractual-operator claim is UNSUPPORTED by the declared component control -- every definitively-declared component is supplier-controlled.",
          "No escrow arrangement declared.",
          "This evaluates the declared exit posture only. It does not audit a supplier, rate a vendor, or opine on contract enforceability."
        ],
        "note": "Deterministic evaluation of a caller-declared operator-exit and data-portability posture: per-category export/format portability with a stranded-category list, declared operator- vs supplier-control of named components (with an unsupported-operator-claim check), single-supplier dependencies with no declared substitute, escrow declaration, and notice/transition terms. Evaluates declarations only -- never a supplier audit, rating, or enforceability opinion."
      },
      "compliance_flags": [
        "EXIT_STRANDED_DATA",
        "EXIT_NO_ESCROW",
        "EXIT_OPERATOR_CLAIM_UNSUPPORTED"
      ],
      "golden_hash": "c566ef0fa44dacfc5078c296d94a3d0029f431edc356d51df2ad1f693ebacda1"
    },
    {
      "name": "undeclared-not-scored-as-failure",
      "description": "ABSENCE-INSTRUMENT rule: export_exists, format_open, controlled_by, escrow existence and notice period are all left undeclared (keys absent). None of this may be scored as STRANDED, NO_ESCROW, or OPERATOR_CLAIM_UNSUPPORTED -- undeclared is a distinct, non-failing state. Only EXIT_PORTABLE fires (zero stranded categories, since none are explicitly declared unexportable).",
      "policy_parameters": {
        "as_of": "2026-08-01",
        "data_categories": [
          {
            "category": "vendor_correspondence"
          }
        ],
        "declared_components": [
          {
            "name": "unspecified_module"
          }
        ],
        "dependencies": [
          {
            "name": "unspecified_dependency"
          }
        ],
        "escrow_arrangements": {}
      },
      "output_payload": {
        "as_of": "2026-08-01",
        "contractual_operator": "undeclared",
        "categories": [
          {
            "category": "vendor_correspondence",
            "export_exists": "undeclared",
            "format": null,
            "format_open": "undeclared",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "UNDECLARED"
          }
        ],
        "category_count": 1,
        "stranded_categories": [],
        "stranded_category_count": 0,
        "proprietary_format_categories": [],
        "undeclared_categories": [
          {
            "category": "vendor_correspondence",
            "export_exists": "undeclared",
            "format": null,
            "format_open": "undeclared",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "UNDECLARED"
          }
        ],
        "portable": true,
        "components": [
          {
            "name": "unspecified_module",
            "controlled_by": "undeclared"
          }
        ],
        "operator_controlled_count": 0,
        "supplier_controlled_count": 0,
        "undeclared_component_count": 1,
        "declared_component_count": 0,
        "operator_control_ratio_declared": "undeclared",
        "operator_claim_unsupported": false,
        "dependencies": [
          {
            "name": "unspecified_dependency",
            "single_supplier": "undeclared",
            "substitutable": "undeclared"
          }
        ],
        "single_supplier_no_substitute": [],
        "escrow_exists": "undeclared",
        "escrow_description": null,
        "notice_period_days": null,
        "notice_period_declared": false,
        "transition_assistance_terms": null,
        "transition_assistance_declared": false,
        "exit_readiness_exceptions": [
          {
            "area": "data_category",
            "name": "vendor_correspondence",
            "detail": "export existence or format openness not declared"
          },
          {
            "area": "components",
            "name": "declared_components",
            "detail": "1 declared component with control not stated"
          },
          {
            "area": "escrow",
            "name": "escrow_arrangements",
            "detail": "escrow arrangement not declared"
          },
          {
            "area": "transition",
            "name": "notice_period_days",
            "detail": "notice period not declared"
          },
          {
            "area": "transition",
            "name": "transition_assistance_terms",
            "detail": "transition-assistance terms not declared"
          }
        ],
        "rejected_inputs": [],
        "rationale": [
          "1 declared data category: 0 stranded (no export path), 0 portable in a proprietary format, 1 with export status or format openness undeclared.",
          "No stranded categories declared.",
          "Operator-control ratio as declared: undeclared of definitively-declared components (1 undeclared).",
          "Escrow arrangement not declared (undeclared, not scored as a failure).",
          "This evaluates the declared exit posture only. It does not audit a supplier, rate a vendor, or opine on contract enforceability."
        ],
        "note": "Deterministic evaluation of a caller-declared operator-exit and data-portability posture: per-category export/format portability with a stranded-category list, declared operator- vs supplier-control of named components (with an unsupported-operator-claim check), single-supplier dependencies with no declared substitute, escrow declaration, and notice/transition terms. Evaluates declarations only -- never a supplier audit, rating, or enforceability opinion."
      },
      "compliance_flags": [
        "EXIT_PORTABLE"
      ],
      "golden_hash": "a89faddccf65382c58035b3ea548df7c153f41f5f8e6b1fd37529b81df0cea84"
    },
    {
      "name": "ffiec-shaped-second-jurisdiction-region-portability",
      "description": "REGION-PORTABILITY ACCEPTANCE TEST (§6.9): an FFIEC third-party-risk-shaped exit assessment -- structurally different from the DORA-shaped vector A (a proprietary-format category, a single-supplier dependency with no substitute, a shorter notice period) -- expressed with the SAME kernel and no code change, only caller-declared inputs.",
      "policy_parameters": {
        "as_of": "2026-08-01",
        "contractual_operator": false,
        "data_categories": [
          {
            "category": "loan_servicing_records",
            "export_exists": true,
            "format": "proprietary_batch_extract",
            "format_open": false,
            "export_cadence": "monthly",
            "last_successful_export": "2026-06-30"
          },
          {
            "category": "regulatory_reporting_extracts",
            "export_exists": true,
            "format": "xml",
            "format_open": true
          }
        ],
        "declared_components": [
          {
            "name": "core_banking_platform",
            "controlled_by": "supplier"
          },
          {
            "name": "branch_ui_layer",
            "controlled_by": "operator"
          }
        ],
        "dependencies": [
          {
            "name": "proprietary_scoring_engine",
            "single_supplier": true,
            "substitutable": false
          }
        ],
        "escrow_arrangements": {
          "exists": true,
          "description": "code and data escrow per the master services agreement"
        },
        "notice_period_days": 90,
        "transition_assistance_terms": "90-day transition assistance window per the third-party risk addendum"
      },
      "output_payload": {
        "as_of": "2026-08-01",
        "contractual_operator": "false",
        "categories": [
          {
            "category": "loan_servicing_records",
            "export_exists": "true",
            "format": "proprietary_batch_extract",
            "format_open": "false",
            "export_cadence": "monthly",
            "last_successful_export": "2026-06-30",
            "verdict": "PORTABLE_PROPRIETARY_FORMAT"
          },
          {
            "category": "regulatory_reporting_extracts",
            "export_exists": "true",
            "format": "xml",
            "format_open": "true",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "PORTABLE"
          }
        ],
        "category_count": 2,
        "stranded_categories": [],
        "stranded_category_count": 0,
        "proprietary_format_categories": [
          {
            "category": "loan_servicing_records",
            "export_exists": "true",
            "format": "proprietary_batch_extract",
            "format_open": "false",
            "export_cadence": "monthly",
            "last_successful_export": "2026-06-30",
            "verdict": "PORTABLE_PROPRIETARY_FORMAT"
          }
        ],
        "undeclared_categories": [],
        "portable": true,
        "components": [
          {
            "name": "core_banking_platform",
            "controlled_by": "supplier"
          },
          {
            "name": "branch_ui_layer",
            "controlled_by": "operator"
          }
        ],
        "operator_controlled_count": 1,
        "supplier_controlled_count": 1,
        "undeclared_component_count": 0,
        "declared_component_count": 2,
        "operator_control_ratio_declared": "1/2",
        "operator_claim_unsupported": false,
        "dependencies": [
          {
            "name": "proprietary_scoring_engine",
            "single_supplier": "true",
            "substitutable": "false"
          }
        ],
        "single_supplier_no_substitute": [
          {
            "name": "proprietary_scoring_engine",
            "single_supplier": "true",
            "substitutable": "false"
          }
        ],
        "escrow_exists": "true",
        "escrow_description": "code and data escrow per the master services agreement",
        "notice_period_days": 90,
        "notice_period_declared": true,
        "transition_assistance_terms": "90-day transition assistance window per the third-party risk addendum",
        "transition_assistance_declared": true,
        "exit_readiness_exceptions": [
          {
            "area": "data_category",
            "name": "loan_servicing_records",
            "detail": "export exists in a declared proprietary format (proprietary_batch_extract)"
          },
          {
            "area": "dependency",
            "name": "proprietary_scoring_engine",
            "detail": "single-supplier dependency with no declared substitute"
          }
        ],
        "rejected_inputs": [],
        "rationale": [
          "2 declared data categories: 0 stranded (no export path), 1 portable in a proprietary format, 0 with export status or format openness undeclared.",
          "No stranded categories declared.",
          "Operator-control ratio as declared: 1/2 of definitively-declared components (0 undeclared).",
          "1 single-supplier dependency has no declared substitute.",
          "Escrow arrangement declared.",
          "This evaluates the declared exit posture only. It does not audit a supplier, rate a vendor, or opine on contract enforceability."
        ],
        "note": "Deterministic evaluation of a caller-declared operator-exit and data-portability posture: per-category export/format portability with a stranded-category list, declared operator- vs supplier-control of named components (with an unsupported-operator-claim check), single-supplier dependencies with no declared substitute, escrow declaration, and notice/transition terms. Evaluates declarations only -- never a supplier audit, rating, or enforceability opinion."
      },
      "compliance_flags": [
        "EXIT_PORTABLE",
        "EXIT_PROPRIETARY_FORMAT"
      ],
      "golden_hash": "39e87a87c71a770c1a2b74dd543abeecb4a25f9781f8ebcc32e8b14c3dbe39d0"
    },
    {
      "name": "rejected-inputs-and-mixed-flags",
      "description": "Malformed tri-state and numeric inputs are coerced to undeclared/rejected rather than silently dropped or crashing: a string where a boolean was expected, a negative notice period. Population still resolves to a defined verdict; EXIT_INPUTS_REJECTED fires alongside the substantive flags.",
      "policy_parameters": {
        "as_of": "2026-08-01",
        "contractual_operator": "yes",
        "data_categories": [
          {
            "category": "reserve_composition_report",
            "export_exists": true,
            "format": "pdf",
            "format_open": "mostly"
          }
        ],
        "declared_components": [
          {
            "name": "settlement_ledger",
            "controlled_by": "supplier"
          }
        ],
        "dependencies": [
          {
            "name": "sole_fx_provider",
            "single_supplier": true,
            "substitutable": false
          }
        ],
        "escrow_arrangements": {
          "exists": "unclear"
        },
        "notice_period_days": -30,
        "transition_assistance_terms": ""
      },
      "output_payload": {
        "as_of": "2026-08-01",
        "contractual_operator": "undeclared",
        "categories": [
          {
            "category": "reserve_composition_report",
            "export_exists": "true",
            "format": "pdf",
            "format_open": "undeclared",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "PORTABLE_FORMAT_UNDECLARED"
          }
        ],
        "category_count": 1,
        "stranded_categories": [],
        "stranded_category_count": 0,
        "proprietary_format_categories": [],
        "undeclared_categories": [
          {
            "category": "reserve_composition_report",
            "export_exists": "true",
            "format": "pdf",
            "format_open": "undeclared",
            "export_cadence": null,
            "last_successful_export": null,
            "verdict": "PORTABLE_FORMAT_UNDECLARED"
          }
        ],
        "portable": true,
        "components": [
          {
            "name": "settlement_ledger",
            "controlled_by": "supplier"
          }
        ],
        "operator_controlled_count": 0,
        "supplier_controlled_count": 1,
        "undeclared_component_count": 0,
        "declared_component_count": 1,
        "operator_control_ratio_declared": "0/1",
        "operator_claim_unsupported": false,
        "dependencies": [
          {
            "name": "sole_fx_provider",
            "single_supplier": "true",
            "substitutable": "false"
          }
        ],
        "single_supplier_no_substitute": [
          {
            "name": "sole_fx_provider",
            "single_supplier": "true",
            "substitutable": "false"
          }
        ],
        "escrow_exists": "undeclared",
        "escrow_description": null,
        "notice_period_days": null,
        "notice_period_declared": false,
        "transition_assistance_terms": null,
        "transition_assistance_declared": false,
        "exit_readiness_exceptions": [
          {
            "area": "data_category",
            "name": "reserve_composition_report",
            "detail": "export existence or format openness not declared"
          },
          {
            "area": "dependency",
            "name": "sole_fx_provider",
            "detail": "single-supplier dependency with no declared substitute"
          },
          {
            "area": "escrow",
            "name": "escrow_arrangements",
            "detail": "escrow arrangement not declared"
          },
          {
            "area": "transition",
            "name": "notice_period_days",
            "detail": "notice period not declared"
          },
          {
            "area": "transition",
            "name": "transition_assistance_terms",
            "detail": "transition-assistance terms not declared"
          }
        ],
        "rejected_inputs": [
          {
            "where": "contractual_operator",
            "reason": "expected boolean true/false or absent (undeclared)",
            "supplied": "yes"
          },
          {
            "where": "data_categories[0].format_open",
            "reason": "expected boolean true/false or absent (undeclared)",
            "supplied": "mostly"
          },
          {
            "where": "escrow_arrangements.exists",
            "reason": "expected boolean true/false or absent (undeclared)",
            "supplied": "unclear"
          },
          {
            "where": "notice_period_days",
            "reason": "expected a non-negative number",
            "supplied": -30
          }
        ],
        "rationale": [
          "1 declared data category: 0 stranded (no export path), 0 portable in a proprietary format, 1 with export status or format openness undeclared.",
          "No stranded categories declared.",
          "Operator-control ratio as declared: 0/1 of definitively-declared components (0 undeclared).",
          "1 single-supplier dependency has no declared substitute.",
          "Escrow arrangement not declared (undeclared, not scored as a failure).",
          "This evaluates the declared exit posture only. It does not audit a supplier, rate a vendor, or opine on contract enforceability."
        ],
        "note": "Deterministic evaluation of a caller-declared operator-exit and data-portability posture: per-category export/format portability with a stranded-category list, declared operator- vs supplier-control of named components (with an unsupported-operator-claim check), single-supplier dependencies with no declared substitute, escrow declaration, and notice/transition terms. Evaluates declarations only -- never a supplier audit, rating, or enforceability opinion."
      },
      "compliance_flags": [
        "EXIT_PORTABLE",
        "EXIT_INPUTS_REJECTED"
      ],
      "golden_hash": "caa1e33eece3e93522d178cfb3afc4396b3a6bbb083cf892aa314dcf92885bd9"
    }
  ]
}
