{
  "tool_id": "art-358-simulate-output-floor",
  "note": "golden_hash filled by golden-parity.test.mjs --update. Synthetic worked examples (hand-verified arithmetic) -- the phase-in schedule (years, floor percentages) is a licensed jurisdiction rule-text value supplied as an input, never vendored. Vector 1: floor never binds across the schedule. Vector 2: floor becomes binding partway through the schedule. Vector 3: no schedule supplied (finite/edge gate).",
  "vectors": [
    {
      "name": "floor_never_binds",
      "description": "internal_model_rwa 800000 stays above floor_pct*standardized_rwa (1000000) at every step of a 50%->72.5% schedule (max floor_rwa 725000 < 800000) -- floor never binds, zero incremental RWA at every year.",
      "policy_parameters": {
        "internal_model_rwa": 800000,
        "standardized_rwa": 1000000,
        "phase_in_schedule": [
          {
            "year": 2025,
            "floor_pct": 0.5
          },
          {
            "year": 2026,
            "floor_pct": 0.55
          },
          {
            "year": 2027,
            "floor_pct": 0.6
          },
          {
            "year": 2028,
            "floor_pct": 0.65
          },
          {
            "year": 2029,
            "floor_pct": 0.7
          },
          {
            "year": 2030,
            "floor_pct": 0.725
          }
        ],
        "rule_status": "proposed"
      },
      "output_payload": {
        "capital_impact_path": [
          {
            "year": 2025,
            "floor_pct": 0.5,
            "floor_rwa": 500000,
            "applied_rwa": 800000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2026,
            "floor_pct": 0.55,
            "floor_rwa": 550000,
            "applied_rwa": 800000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2027,
            "floor_pct": 0.6,
            "floor_rwa": 600000,
            "applied_rwa": 800000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2028,
            "floor_pct": 0.65,
            "floor_rwa": 650000,
            "applied_rwa": 800000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2029,
            "floor_pct": 0.7,
            "floor_rwa": 700000,
            "applied_rwa": 800000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2030,
            "floor_pct": 0.725,
            "floor_rwa": 725000,
            "applied_rwa": 800000,
            "binding": false,
            "incremental_rwa": 0
          }
        ],
        "binding_floor_year": null,
        "floor_ever_binds": false,
        "max_incremental_rwa": 0,
        "internal_model_rwa": 800000,
        "standardized_rwa": 1000000,
        "rule_status": "proposed",
        "regulatory_basis": "Basel III finalization output floor (BCBS d424 / 2026 US reproposal): applied RWA = max(internal-model RWA, floor% x standardized RWA).",
        "note": "Phase-in schedule (years and floor percentages) is supplied by the caller from their own jurisdiction’s finalized or proposed rule text -- this kernel applies the published floor mechanic and never vendors or hardcodes a phase-in table."
      },
      "compliance_flags": [],
      "golden_hash": "ce5322c8a1b0d331adfe797f00426ed4fc94f2c873571d7435dedca698990bb3"
    },
    {
      "name": "floor_binds_partway",
      "description": "internal_model_rwa 640000 vs the same schedule/standardized_rwa 1000000: floor_rwa passes internal RWA at 2028 (650000) and stays binding through 2030 (725000), giving a binding_floor_year of 2028 and a max incremental RWA of 85000 at 2030.",
      "policy_parameters": {
        "internal_model_rwa": 640000,
        "standardized_rwa": 1000000,
        "phase_in_schedule": [
          {
            "year": 2025,
            "floor_pct": 0.5
          },
          {
            "year": 2026,
            "floor_pct": 0.55
          },
          {
            "year": 2027,
            "floor_pct": 0.6
          },
          {
            "year": 2028,
            "floor_pct": 0.65
          },
          {
            "year": 2029,
            "floor_pct": 0.7
          },
          {
            "year": 2030,
            "floor_pct": 0.725
          }
        ],
        "rule_status": "proposed"
      },
      "output_payload": {
        "capital_impact_path": [
          {
            "year": 2025,
            "floor_pct": 0.5,
            "floor_rwa": 500000,
            "applied_rwa": 640000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2026,
            "floor_pct": 0.55,
            "floor_rwa": 550000,
            "applied_rwa": 640000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2027,
            "floor_pct": 0.6,
            "floor_rwa": 600000,
            "applied_rwa": 640000,
            "binding": false,
            "incremental_rwa": 0
          },
          {
            "year": 2028,
            "floor_pct": 0.65,
            "floor_rwa": 650000,
            "applied_rwa": 650000,
            "binding": true,
            "incremental_rwa": 10000
          },
          {
            "year": 2029,
            "floor_pct": 0.7,
            "floor_rwa": 700000,
            "applied_rwa": 700000,
            "binding": true,
            "incremental_rwa": 60000
          },
          {
            "year": 2030,
            "floor_pct": 0.725,
            "floor_rwa": 725000,
            "applied_rwa": 725000,
            "binding": true,
            "incremental_rwa": 85000
          }
        ],
        "binding_floor_year": 2028,
        "floor_ever_binds": true,
        "max_incremental_rwa": 85000,
        "internal_model_rwa": 640000,
        "standardized_rwa": 1000000,
        "rule_status": "proposed",
        "regulatory_basis": "Basel III finalization output floor (BCBS d424 / 2026 US reproposal): applied RWA = max(internal-model RWA, floor% x standardized RWA).",
        "note": "Phase-in schedule (years and floor percentages) is supplied by the caller from their own jurisdiction’s finalized or proposed rule text -- this kernel applies the published floor mechanic and never vendors or hardcodes a phase-in table."
      },
      "compliance_flags": [],
      "golden_hash": "6fdea1a146da1cd6f95ce852ecceff55da487fbc1e9d7293a9ef7aeea66061ef"
    },
    {
      "name": "no_schedule_supplied_edge",
      "description": "No phase_in_schedule supplied -- finite gate must return an empty capital_impact_path, null binding_floor_year, and flag OUTPUTFLOOR_NO_SCHEDULE_SUPPLIED instead of throwing or fabricating a schedule.",
      "policy_parameters": {
        "internal_model_rwa": 500000,
        "standardized_rwa": 900000,
        "phase_in_schedule": [],
        "rule_status": "proposed"
      },
      "output_payload": {
        "capital_impact_path": [],
        "binding_floor_year": null,
        "floor_ever_binds": false,
        "max_incremental_rwa": 0,
        "internal_model_rwa": 500000,
        "standardized_rwa": 900000,
        "rule_status": "proposed",
        "regulatory_basis": "Basel III finalization output floor (BCBS d424 / 2026 US reproposal): applied RWA = max(internal-model RWA, floor% x standardized RWA).",
        "note": "Phase-in schedule (years and floor percentages) is supplied by the caller from their own jurisdiction’s finalized or proposed rule text -- this kernel applies the published floor mechanic and never vendors or hardcodes a phase-in table."
      },
      "compliance_flags": [
        "OUTPUTFLOOR_NO_SCHEDULE_SUPPLIED"
      ],
      "golden_hash": "1150c052e7a4e26f6be31e737c0f7cf15113e8557db5bd0bed0cab6bb92d6fb0"
    }
  ]
}
