{
  "tool_id": "art-626-deterministic-amortization-schedule",
  "vectors": [
    {
      "name": "unit_period_12mo_12pct",
      "policy_parameters": {
        "principal": 1200,
        "annual_rate": 0.12,
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1200,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 12,
            "payment": 106.6,
            "principal_component": 94.6,
            "closing_balance": 1105.4
          },
          {
            "index": 1,
            "opening_balance": 1105.4,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 11.05,
            "payment": 106.6,
            "principal_component": 95.55,
            "closing_balance": 1009.85
          },
          {
            "index": 2,
            "opening_balance": 1009.85,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 10.1,
            "payment": 106.6,
            "principal_component": 96.5,
            "closing_balance": 913.35
          },
          {
            "index": 3,
            "opening_balance": 913.35,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 9.13,
            "payment": 106.6,
            "principal_component": 97.47,
            "closing_balance": 815.88
          },
          {
            "index": 4,
            "opening_balance": 815.88,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 8.16,
            "payment": 106.6,
            "principal_component": 98.44,
            "closing_balance": 717.44
          },
          {
            "index": 5,
            "opening_balance": 717.44,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 7.17,
            "payment": 106.6,
            "principal_component": 99.43,
            "closing_balance": 618.01
          },
          {
            "index": 6,
            "opening_balance": 618.01,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 6.18,
            "payment": 106.6,
            "principal_component": 100.42,
            "closing_balance": 517.59
          },
          {
            "index": 7,
            "opening_balance": 517.59,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 5.18,
            "payment": 106.6,
            "principal_component": 101.42,
            "closing_balance": 416.17
          },
          {
            "index": 8,
            "opening_balance": 416.17,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 4.16,
            "payment": 106.6,
            "principal_component": 102.44,
            "closing_balance": 313.73
          },
          {
            "index": 9,
            "opening_balance": 313.73,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 3.14,
            "payment": 106.6,
            "principal_component": 103.46,
            "closing_balance": 210.27
          },
          {
            "index": 10,
            "opening_balance": 210.27,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 2.1,
            "payment": 106.6,
            "principal_component": 104.5,
            "closing_balance": 105.77
          },
          {
            "index": 11,
            "opening_balance": 105.77,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 1.06,
            "payment": 106.6,
            "principal_component": 105.77,
            "closing_balance": 0
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": true,
          "amount": 0.23,
          "max_plug": 1,
          "error": false
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 12,
          "segments_used": 1
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only, not a Reg Z APR claim",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [],
      "golden_hash": "ff47527103867628c6a5945e3081f9fb3018ae27c59a2e3786aa1d4eaf314e52"
    },
    {
      "name": "unit_period_solve_rate",
      "policy_parameters": {
        "principal": 1200,
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": true
          }
        ],
        "solve_rate": true
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1200,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 11.97,
            "payment": 106.6,
            "principal_component": 94.63,
            "closing_balance": 1105.37
          },
          {
            "index": 1,
            "opening_balance": 1105.37,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 11.02,
            "payment": 106.6,
            "principal_component": 95.58,
            "closing_balance": 1009.79
          },
          {
            "index": 2,
            "opening_balance": 1009.79,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 10.07,
            "payment": 106.6,
            "principal_component": 96.53,
            "closing_balance": 913.26
          },
          {
            "index": 3,
            "opening_balance": 913.26,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 9.11,
            "payment": 106.6,
            "principal_component": 97.49,
            "closing_balance": 815.77
          },
          {
            "index": 4,
            "opening_balance": 815.77,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 8.14,
            "payment": 106.6,
            "principal_component": 98.46,
            "closing_balance": 717.31
          },
          {
            "index": 5,
            "opening_balance": 717.31,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 7.15,
            "payment": 106.6,
            "principal_component": 99.45,
            "closing_balance": 617.86
          },
          {
            "index": 6,
            "opening_balance": 617.86,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 6.16,
            "payment": 106.6,
            "principal_component": 100.44,
            "closing_balance": 517.42
          },
          {
            "index": 7,
            "opening_balance": 517.42,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 5.16,
            "payment": 106.6,
            "principal_component": 101.44,
            "closing_balance": 415.98
          },
          {
            "index": 8,
            "opening_balance": 415.98,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 4.15,
            "payment": 106.6,
            "principal_component": 102.45,
            "closing_balance": 313.53
          },
          {
            "index": 9,
            "opening_balance": 313.53,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 3.13,
            "payment": 106.6,
            "principal_component": 103.47,
            "closing_balance": 210.06
          },
          {
            "index": 10,
            "opening_balance": 210.06,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 2.09,
            "payment": 106.6,
            "principal_component": 104.51,
            "closing_balance": 105.55
          },
          {
            "index": 11,
            "opening_balance": 105.55,
            "period_fraction": 1,
            "periodic_rate": 0.0099724675,
            "interest": 1.05,
            "payment": 106.6,
            "principal_component": 105.55,
            "closing_balance": 0
          }
        ],
        "rate_solve": {
          "solved": true,
          "periodic_rate": 0.009972467499999998,
          "annual_rate_equivalent": 0.11966960999999998,
          "converged": true,
          "bracketed": true,
          "iterations": 23,
          "error": null
        },
        "final_plug": {
          "applied": false,
          "amount": 0,
          "max_plug": 1,
          "error": false
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 12,
          "segments_used": 1
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only, not a Reg Z APR claim",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [],
      "golden_hash": "083ba630d2e7fa449aa7a4648cf5566d9d2149f5c8f93ed063e455813583bdf9"
    },
    {
      "name": "30_360_us_12mo",
      "policy_parameters": {
        "principal": 1200,
        "annual_rate": 0.12,
        "convention": "30_360_US",
        "periods": [
          {
            "start": "2025-01-01",
            "end": "2025-02-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-02-01",
            "end": "2025-03-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-03-01",
            "end": "2025-04-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-04-01",
            "end": "2025-05-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-05-01",
            "end": "2025-06-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-06-01",
            "end": "2025-07-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-07-01",
            "end": "2025-08-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-08-01",
            "end": "2025-09-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-09-01",
            "end": "2025-10-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-10-01",
            "end": "2025-11-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-11-01",
            "end": "2025-12-01",
            "payment": 106.6,
            "is_termination": false
          },
          {
            "start": "2025-12-01",
            "end": "2026-01-01",
            "payment": 106.6,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "30_360_US",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1200,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 12,
            "payment": 106.6,
            "principal_component": 94.6,
            "closing_balance": 1105.4
          },
          {
            "index": 1,
            "opening_balance": 1105.4,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 11.05,
            "payment": 106.6,
            "principal_component": 95.55,
            "closing_balance": 1009.85
          },
          {
            "index": 2,
            "opening_balance": 1009.85,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 10.1,
            "payment": 106.6,
            "principal_component": 96.5,
            "closing_balance": 913.35
          },
          {
            "index": 3,
            "opening_balance": 913.35,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 9.13,
            "payment": 106.6,
            "principal_component": 97.47,
            "closing_balance": 815.88
          },
          {
            "index": 4,
            "opening_balance": 815.88,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 8.16,
            "payment": 106.6,
            "principal_component": 98.44,
            "closing_balance": 717.44
          },
          {
            "index": 5,
            "opening_balance": 717.44,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 7.17,
            "payment": 106.6,
            "principal_component": 99.43,
            "closing_balance": 618.01
          },
          {
            "index": 6,
            "opening_balance": 618.01,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 6.18,
            "payment": 106.6,
            "principal_component": 100.42,
            "closing_balance": 517.59
          },
          {
            "index": 7,
            "opening_balance": 517.59,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 5.18,
            "payment": 106.6,
            "principal_component": 101.42,
            "closing_balance": 416.17
          },
          {
            "index": 8,
            "opening_balance": 416.17,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 4.16,
            "payment": 106.6,
            "principal_component": 102.44,
            "closing_balance": 313.73
          },
          {
            "index": 9,
            "opening_balance": 313.73,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 3.14,
            "payment": 106.6,
            "principal_component": 103.46,
            "closing_balance": 210.27
          },
          {
            "index": 10,
            "opening_balance": 210.27,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 2.1,
            "payment": 106.6,
            "principal_component": 104.5,
            "closing_balance": 105.77
          },
          {
            "index": 11,
            "opening_balance": 105.77,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.01,
            "interest": 1.06,
            "payment": 106.6,
            "principal_component": 105.77,
            "closing_balance": 0
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": true,
          "amount": 0.23,
          "max_plug": 1,
          "error": false
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 12,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [],
      "golden_hash": "410620ec7daef604e907367ff1991fe73107cb159e661c9dd49a2cc7c736562f"
    },
    {
      "name": "30e_360_jan31_feb29_leap",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "30E_360",
        "periods": [
          {
            "start": "2024-01-31",
            "end": "2024-02-29",
            "payment": 1000,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "30E_360",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 0.0805555556,
            "periodic_rate": 0.0048333333,
            "interest": 4.83,
            "payment": 1000,
            "principal_component": 995.17,
            "closing_balance": 4.83
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 4.83,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "fbc16ac990ea8ed50bd75e157378f5bf0fe7414be42e79dd6dd11243d1d7ef29"
    },
    {
      "name": "30e_360_isda_jan31_feb29_nonterm",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "30E_360_ISDA",
        "periods": [
          {
            "start": "2024-01-31",
            "end": "2024-02-29",
            "payment": 1000,
            "is_termination": false
          }
        ]
      },
      "output_payload": {
        "convention": "30E_360_ISDA",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 0.0833333333,
            "periodic_rate": 0.005,
            "interest": 5,
            "payment": 1000,
            "principal_component": 995,
            "closing_balance": 5
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 5,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "f6cc61183f24fea769b7b7f344d936067b9f23295140e208b1f1f5509dcddf84"
    },
    {
      "name": "30e_360_isda_jan31_feb29_term",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "30E_360_ISDA",
        "periods": [
          {
            "start": "2024-01-31",
            "end": "2024-02-29",
            "payment": 1000,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "30E_360_ISDA",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 0.0805555556,
            "periodic_rate": 0.0048333333,
            "interest": 4.83,
            "payment": 1000,
            "principal_component": 995.17,
            "closing_balance": 4.83
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 4.83,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "89193ea829dd08581e7d4ba7f8f44203bb6b5208d5ac0357489eb65b2c625e05"
    },
    {
      "name": "act_360_jan_2024",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "ACT_360",
        "periods": [
          {
            "start": "2024-01-01",
            "end": "2024-02-01",
            "payment": 1000,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "ACT_360",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 0.0861111111,
            "periodic_rate": 0.0051666667,
            "interest": 5.17,
            "payment": 1000,
            "principal_component": 994.83,
            "closing_balance": 5.17
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 5.17,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "1b33d79c3cb159508ba702788ecae6b6dda999c53f3b752fa86406b5327b8978"
    },
    {
      "name": "act_365f_2023",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "ACT_365F",
        "periods": [
          {
            "start": "2023-01-01",
            "end": "2024-01-01",
            "payment": 1000,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "ACT_365F",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 1,
            "periodic_rate": 0.06,
            "interest": 60,
            "payment": 1000,
            "principal_component": 940,
            "closing_balance": 60
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 60,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "31dc28b2c87c6c2125e7025f32fc6f68ae043c52d9154da7294919f735ad98ef"
    },
    {
      "name": "act_act_isda_leap_span",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "ACT_ACT_ISDA",
        "periods": [
          {
            "start": "2023-07-01",
            "end": "2024-07-01",
            "payment": 1000,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "ACT_ACT_ISDA",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 1.0013773486,
            "periodic_rate": 0.0600826409,
            "interest": 60.08,
            "payment": 1000,
            "principal_component": 939.92,
            "closing_balance": 60.08
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 60.08,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "d8a5402c632316e2015a8d6f6e2e6eb91f923b09713e098f0ca93f30cec7a697"
    },
    {
      "name": "act_act_isda_within_leap",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "ACT_ACT_ISDA",
        "periods": [
          {
            "start": "2024-01-01",
            "end": "2025-01-01",
            "payment": 1000,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "ACT_ACT_ISDA",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 1,
            "periodic_rate": 0.06,
            "interest": 60,
            "payment": 1000,
            "principal_component": 940,
            "closing_balance": 60
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 60,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "2a774707f332f64bacffa7cb3375170d542d46ce02c677a5b68fdf95c435dfb6"
    },
    {
      "name": "30_360_us_endofmonth_coupling",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.06,
        "convention": "30_360_US",
        "periods": [
          {
            "start": "2024-01-31",
            "end": "2024-03-31",
            "payment": 1000,
            "is_termination": true
          }
        ]
      },
      "output_payload": {
        "convention": "30_360_US",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1000,
            "period_fraction": 0.1666666667,
            "periodic_rate": 0.01,
            "interest": 10,
            "payment": 1000,
            "principal_component": 990,
            "closing_balance": 10
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 10,
          "max_plug": 1,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 1
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "d874d2eaf7df4de348fc0873c1ff75879e3205de3032fcd65c0e2e85eaec59b1"
    },
    {
      "name": "unit_period_remeasured",
      "policy_parameters": {
        "principal": 1200,
        "annual_rate": 0.12,
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": true
          }
        ],
        "remeasurement": {
          "at_period_index": 5,
          "annual_rate": 0.1,
          "periods": [
            {
              "unit_fraction": 1,
              "payment": 90,
              "is_termination": false
            },
            {
              "unit_fraction": 1,
              "payment": 90,
              "is_termination": false
            },
            {
              "unit_fraction": 1,
              "payment": 90,
              "is_termination": false
            },
            {
              "unit_fraction": 1,
              "payment": 90,
              "is_termination": false
            },
            {
              "unit_fraction": 1,
              "payment": 90,
              "is_termination": false
            },
            {
              "unit_fraction": 1,
              "payment": 90,
              "is_termination": true
            }
          ]
        }
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1200,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 12,
            "payment": 106.6,
            "principal_component": 94.6,
            "closing_balance": 1105.4
          },
          {
            "index": 1,
            "opening_balance": 1105.4,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 11.05,
            "payment": 106.6,
            "principal_component": 95.55,
            "closing_balance": 1009.85
          },
          {
            "index": 2,
            "opening_balance": 1009.85,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 10.1,
            "payment": 106.6,
            "principal_component": 96.5,
            "closing_balance": 913.35
          },
          {
            "index": 3,
            "opening_balance": 913.35,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 9.13,
            "payment": 106.6,
            "principal_component": 97.47,
            "closing_balance": 815.88
          },
          {
            "index": 4,
            "opening_balance": 815.88,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 8.16,
            "payment": 106.6,
            "principal_component": 98.44,
            "closing_balance": 717.44
          },
          {
            "index": 5,
            "opening_balance": 717.44,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 7.17,
            "payment": 106.6,
            "principal_component": 99.43,
            "closing_balance": 618.01
          },
          {
            "index": 6,
            "opening_balance": 618.01,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 6.18,
            "payment": 106.6,
            "principal_component": 100.42,
            "closing_balance": 517.59
          },
          {
            "index": 7,
            "opening_balance": 517.59,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 5.18,
            "payment": 106.6,
            "principal_component": 101.42,
            "closing_balance": 416.17
          },
          {
            "index": 8,
            "opening_balance": 416.17,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 4.16,
            "payment": 106.6,
            "principal_component": 102.44,
            "closing_balance": 313.73
          },
          {
            "index": 9,
            "opening_balance": 313.73,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 3.14,
            "payment": 106.6,
            "principal_component": 103.46,
            "closing_balance": 210.27
          },
          {
            "index": 10,
            "opening_balance": 210.27,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 2.1,
            "payment": 106.6,
            "principal_component": 104.5,
            "closing_balance": 105.77
          },
          {
            "index": 11,
            "opening_balance": 105.77,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 1.06,
            "payment": 106.6,
            "principal_component": 105.77,
            "closing_balance": 0
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": true,
          "amount": 0.23,
          "max_plug": 1,
          "error": false
        },
        "remeasurement": {
          "opening_balance": 618.01,
          "continuity_invariant": true,
          "new_segment": [
            {
              "index": 0,
              "opening_balance": 618.01,
              "period_fraction": 1,
              "periodic_rate": 0.0083333333,
              "interest": 5.15,
              "payment": 90,
              "principal_component": 84.85,
              "closing_balance": 533.16
            },
            {
              "index": 1,
              "opening_balance": 533.16,
              "period_fraction": 1,
              "periodic_rate": 0.0083333333,
              "interest": 4.44,
              "payment": 90,
              "principal_component": 85.56,
              "closing_balance": 447.6
            },
            {
              "index": 2,
              "opening_balance": 447.6,
              "period_fraction": 1,
              "periodic_rate": 0.0083333333,
              "interest": 3.73,
              "payment": 90,
              "principal_component": 86.27,
              "closing_balance": 361.33
            },
            {
              "index": 3,
              "opening_balance": 361.33,
              "period_fraction": 1,
              "periodic_rate": 0.0083333333,
              "interest": 3.01,
              "payment": 90,
              "principal_component": 86.99,
              "closing_balance": 274.34
            },
            {
              "index": 4,
              "opening_balance": 274.34,
              "period_fraction": 1,
              "periodic_rate": 0.0083333333,
              "interest": 2.29,
              "payment": 90,
              "principal_component": 87.71,
              "closing_balance": 186.63
            },
            {
              "index": 5,
              "opening_balance": 186.63,
              "period_fraction": 1,
              "periodic_rate": 0.0083333333,
              "interest": 1.56,
              "payment": 90,
              "principal_component": 88.44,
              "closing_balance": 98.19
            }
          ],
          "final_plug": {
            "applied": false,
            "amount": 98.19,
            "max_plug": 1,
            "error": true
          }
        },
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 12,
          "segments_used": 2
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only, not a Reg Z APR claim",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "bbb2531ef0ed07b71c9c615dfe7311f8019fd66e339020354793ffeed355f97a"
    },
    {
      "name": "final_plug_within_bound",
      "policy_parameters": {
        "principal": 1200,
        "annual_rate": 0.12,
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": true
          }
        ],
        "max_plug": 1
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1200,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 12,
            "payment": 106.6,
            "principal_component": 94.6,
            "closing_balance": 1105.4
          },
          {
            "index": 1,
            "opening_balance": 1105.4,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 11.05,
            "payment": 106.6,
            "principal_component": 95.55,
            "closing_balance": 1009.85
          },
          {
            "index": 2,
            "opening_balance": 1009.85,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 10.1,
            "payment": 106.6,
            "principal_component": 96.5,
            "closing_balance": 913.35
          },
          {
            "index": 3,
            "opening_balance": 913.35,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 9.13,
            "payment": 106.6,
            "principal_component": 97.47,
            "closing_balance": 815.88
          },
          {
            "index": 4,
            "opening_balance": 815.88,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 8.16,
            "payment": 106.6,
            "principal_component": 98.44,
            "closing_balance": 717.44
          },
          {
            "index": 5,
            "opening_balance": 717.44,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 7.17,
            "payment": 106.6,
            "principal_component": 99.43,
            "closing_balance": 618.01
          },
          {
            "index": 6,
            "opening_balance": 618.01,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 6.18,
            "payment": 106.6,
            "principal_component": 100.42,
            "closing_balance": 517.59
          },
          {
            "index": 7,
            "opening_balance": 517.59,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 5.18,
            "payment": 106.6,
            "principal_component": 101.42,
            "closing_balance": 416.17
          },
          {
            "index": 8,
            "opening_balance": 416.17,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 4.16,
            "payment": 106.6,
            "principal_component": 102.44,
            "closing_balance": 313.73
          },
          {
            "index": 9,
            "opening_balance": 313.73,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 3.14,
            "payment": 106.6,
            "principal_component": 103.46,
            "closing_balance": 210.27
          },
          {
            "index": 10,
            "opening_balance": 210.27,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 2.1,
            "payment": 106.6,
            "principal_component": 104.5,
            "closing_balance": 105.77
          },
          {
            "index": 11,
            "opening_balance": 105.77,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 1.06,
            "payment": 106.6,
            "principal_component": 105.77,
            "closing_balance": 0
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": true,
          "amount": 0.23,
          "max_plug": 1,
          "error": false
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 12,
          "segments_used": 1
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only, not a Reg Z APR claim",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [],
      "golden_hash": "d5e5682a42566cef7c2dc972cdfac0a770e3c776680ab208159c03ce702157c6"
    },
    {
      "name": "final_plug_exceeds_bound",
      "policy_parameters": {
        "principal": 1200,
        "annual_rate": 0.12,
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 106.6,
            "is_termination": true
          }
        ],
        "max_plug": 0.01
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "schedule": [
          {
            "index": 0,
            "opening_balance": 1200,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 12,
            "payment": 106.6,
            "principal_component": 94.6,
            "closing_balance": 1105.4
          },
          {
            "index": 1,
            "opening_balance": 1105.4,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 11.05,
            "payment": 106.6,
            "principal_component": 95.55,
            "closing_balance": 1009.85
          },
          {
            "index": 2,
            "opening_balance": 1009.85,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 10.1,
            "payment": 106.6,
            "principal_component": 96.5,
            "closing_balance": 913.35
          },
          {
            "index": 3,
            "opening_balance": 913.35,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 9.13,
            "payment": 106.6,
            "principal_component": 97.47,
            "closing_balance": 815.88
          },
          {
            "index": 4,
            "opening_balance": 815.88,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 8.16,
            "payment": 106.6,
            "principal_component": 98.44,
            "closing_balance": 717.44
          },
          {
            "index": 5,
            "opening_balance": 717.44,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 7.17,
            "payment": 106.6,
            "principal_component": 99.43,
            "closing_balance": 618.01
          },
          {
            "index": 6,
            "opening_balance": 618.01,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 6.18,
            "payment": 106.6,
            "principal_component": 100.42,
            "closing_balance": 517.59
          },
          {
            "index": 7,
            "opening_balance": 517.59,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 5.18,
            "payment": 106.6,
            "principal_component": 101.42,
            "closing_balance": 416.17
          },
          {
            "index": 8,
            "opening_balance": 416.17,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 4.16,
            "payment": 106.6,
            "principal_component": 102.44,
            "closing_balance": 313.73
          },
          {
            "index": 9,
            "opening_balance": 313.73,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 3.14,
            "payment": 106.6,
            "principal_component": 103.46,
            "closing_balance": 210.27
          },
          {
            "index": 10,
            "opening_balance": 210.27,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 2.1,
            "payment": 106.6,
            "principal_component": 104.5,
            "closing_balance": 105.77
          },
          {
            "index": 11,
            "opening_balance": 105.77,
            "period_fraction": 1,
            "periodic_rate": 0.01,
            "interest": 1.06,
            "payment": 106.6,
            "principal_component": 105.54,
            "closing_balance": 0.23
          }
        ],
        "rate_solve": null,
        "final_plug": {
          "applied": false,
          "amount": 0.23,
          "max_plug": 0.01,
          "error": true
        },
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 12,
          "segments_used": 1
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only, not a Reg Z APR claim",
        "note": "Deterministic amortization schedule via the effective-interest method: period_fraction from a declared day-count convention (UNIT_PERIOD, or one of six ISDA 2006 Definitions Sec 4.16 calendar conventions), periodic_rate derived from annual_rate, interest/principal/closing per period, and a mandatory final-period plug when the schedule amortizes to zero. Remeasurement is schedule SEGMENTATION, never mutation: a new segment always opens at the prior segment's exact closing balance. Bracketed-bisection rate solve is scoped to UNIT_PERIOD only. Demonstrator for the shared _amort.bundle.mjs kernel (ACCT-AMORT-K-1); not itself a wave-specific ASC 842 / ASC 606 / CECL tool."
      },
      "compliance_flags": [
        "FINAL_PLUG_EXCEEDS_BOUND"
      ],
      "golden_hash": "c93ae2f7d52425aef6af75e819e061da8229b63b7e3db31202d1d52ba272e23b"
    },
    {
      "name": "error_unknown_convention",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.05,
        "convention": "FOO",
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 100
          }
        ]
      },
      "output_payload": {
        "convention": "FOO",
        "schedule": null,
        "rate_solve": null,
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 0,
          "segments_used": 0
        },
        "day_count_source": null,
        "note": "convention must be one of the seven closed day-count modes (build spec Sec 1.1)."
      },
      "compliance_flags": [
        "UNKNOWN_CONVENTION"
      ],
      "golden_hash": "fa19175d6bfc5a84026018e13f300edea7a2343bdeae6a04972caffd79ed0ca1"
    },
    {
      "name": "error_no_periods",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.05,
        "convention": "UNIT_PERIOD",
        "periods": []
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "schedule": null,
        "rate_solve": null,
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 0,
          "segments_used": 0
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only",
        "note": "schedule() reported NO_PERIODS."
      },
      "compliance_flags": [
        "NO_PERIODS"
      ],
      "golden_hash": "f43784feb002e33c6af0213d64bbc961f6d88f8c4c95f41a4713a6b28d36f474"
    },
    {
      "name": "error_invalid_unit_fraction_zero",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.05,
        "convention": "UNIT_PERIOD",
        "periods": [
          {
            "unit_fraction": 0,
            "payment": 100
          }
        ]
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "schedule": null,
        "rate_solve": null,
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 0
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only",
        "note": "schedule() reported INVALID_PERIOD_FRACTION."
      },
      "compliance_flags": [
        "INVALID_PERIOD_FRACTION"
      ],
      "golden_hash": "757e4528c1487a12f7d9d86cb21ee35d62cb47a6aeb0d22ca5a131dfbf2b18be"
    },
    {
      "name": "error_invalid_unit_fraction_over_one",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.05,
        "convention": "UNIT_PERIOD",
        "periods": [
          {
            "unit_fraction": 1.0000000001,
            "payment": 100
          }
        ]
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "schedule": null,
        "rate_solve": null,
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 0
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only",
        "note": "schedule() reported INVALID_PERIOD_FRACTION."
      },
      "compliance_flags": [
        "INVALID_PERIOD_FRACTION"
      ],
      "golden_hash": "76f9e0a18cfbfdaee4ee513cb46c74eaa7822ac654ebf94909e4a56766549317"
    },
    {
      "name": "error_max_periods_exceeded",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.05,
        "convention": "UNIT_PERIOD",
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          },
          {
            "unit_fraction": 1,
            "payment": 1
          }
        ]
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "schedule": null,
        "rate_solve": null,
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 601,
          "segments_used": 0
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only",
        "note": "periods.length (601) exceeds MAX_PERIODS (600); no schedule computed."
      },
      "compliance_flags": [
        "MAX_PERIODS_EXCEEDED"
      ],
      "golden_hash": "9a555e0099a1467e1a656497f97143f142931053fe2f7592ceb8262e62d583bd"
    },
    {
      "name": "error_invalid_date",
      "policy_parameters": {
        "principal": 1000,
        "annual_rate": 0.05,
        "convention": "ACT_360",
        "periods": [
          {
            "start": "not-a-date",
            "end": "2024-02-01",
            "payment": 100
          }
        ]
      },
      "output_payload": {
        "convention": "ACT_360",
        "schedule": null,
        "rate_solve": null,
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 0
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "schedule() reported INVALID_DATE."
      },
      "compliance_flags": [
        "INVALID_DATE"
      ],
      "golden_hash": "9ba677ed7d7aafcd42fbfcc2443d12ce94cce6da91b32a996e37bdc0f6370cd5"
    },
    {
      "name": "error_rate_solve_scoped_off",
      "policy_parameters": {
        "principal": 1000,
        "convention": "ACT_360",
        "periods": [
          {
            "start": "2024-01-01",
            "end": "2024-02-01",
            "payment": 100
          }
        ],
        "solve_rate": true
      },
      "output_payload": {
        "convention": "ACT_360",
        "schedule": null,
        "rate_solve": {
          "solved": false,
          "periodic_rate": null,
          "annual_rate_equivalent": null,
          "converged": false,
          "bracketed": false,
          "iterations": 0,
          "error": "RATE_SOLVE_SCOPED_TO_UNIT_PERIOD"
        },
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 1,
          "segments_used": 0
        },
        "day_count_source": "ISDA 2006 Definitions Section 4.16",
        "note": "No usable annual_rate: either annual_rate was not supplied, or solve_rate was requested but did not bracket/converge."
      },
      "compliance_flags": [
        "RATE_SOLVE_SCOPED_TO_UNIT_PERIOD"
      ],
      "golden_hash": "528ab25d61e01dc241e10c90b0bd06883a234165b390c2e1b8b66a6c3705d4c9"
    },
    {
      "name": "error_rate_not_bracketed",
      "policy_parameters": {
        "principal": 1000,
        "convention": "UNIT_PERIOD",
        "periods_per_year": 12,
        "periods": [
          {
            "unit_fraction": 1,
            "payment": 10,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 10,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 10,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 10,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 10,
            "is_termination": false
          },
          {
            "unit_fraction": 1,
            "payment": 10,
            "is_termination": true
          }
        ],
        "solve_rate": true
      },
      "output_payload": {
        "convention": "UNIT_PERIOD",
        "schedule": null,
        "rate_solve": {
          "solved": false,
          "periodic_rate": null,
          "annual_rate_equivalent": null,
          "converged": false,
          "bracketed": false,
          "iterations": 0,
          "error": "RATE_NOT_BRACKETED"
        },
        "final_plug": null,
        "remeasurement": null,
        "rounding_steps": [
          {
            "step": "period_fraction (day-count fraction, or declared UNIT_PERIOD fraction)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "periodic_rate = annual_rate * period_fraction (calendar) or (annual_rate/periods_per_year) * period_fraction (UNIT_PERIOD)",
            "mode": "half_up",
            "precision": 10,
            "oracle": "declared — clause silent"
          },
          {
            "step": "interest = opening_balance * periodic_rate",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "principal_component = payment - interest",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "closing_balance = opening_balance - principal_component",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          },
          {
            "step": "final-period plug: residual closing_balance absorbed into the last principal_component so the schedule amortizes to exactly zero",
            "mode": "half_up",
            "precision": 2,
            "oracle": "declared — clause silent"
          }
        ],
        "bounds": {
          "max_periods": 600,
          "max_segments": 8,
          "periods_used": 6,
          "segments_used": 0
        },
        "day_count_source": "12 CFR 1026 Appendix J (b)(6) — declared unit-period stub fraction, precedent only",
        "note": "No usable annual_rate: either annual_rate was not supplied, or solve_rate was requested but did not bracket/converge."
      },
      "compliance_flags": [
        "RATE_NOT_BRACKETED"
      ],
      "golden_hash": "6f6c73ba7865725d766cc891e0cad5434cb45ac67c6818ec1220b2787f59baaf"
    }
  ]
}
