{
  "tool_id": "art-483-emir-break-ageing",
  "note": "Vector 1 exercises persisting (carried recurrence/age from a prior sealed break), newly_opened, newly_closed, and an escalation-clock breach in one pass. Vector 2 is the empty-input finite case (no current, no prior). golden_hash empty until first `node golden-parity.test.mjs --update`.",
  "vectors": [
    {
      "name": "mixed-persisting-opened-closed-breached",
      "policy_parameters": {
        "current_break_set": [
          {
            "break_key": "UTI0002::notional_amount",
            "uti": "UTI0002",
            "field_name": "notional_amount"
          },
          {
            "break_key": "UTI0005::price",
            "uti": "UTI0005",
            "field_name": "price"
          }
        ],
        "prior_sealed_break_set": [
          {
            "break_key": "UTI0002::notional_amount",
            "uti": "UTI0002",
            "field_name": "notional_amount",
            "first_seen_at": "2026-07-10T00:00:00.000Z",
            "recurrence_count": 3
          },
          {
            "break_key": "UTI0009::maturity_date",
            "uti": "UTI0009",
            "field_name": "maturity_date",
            "first_seen_at": "2026-07-20T00:00:00.000Z",
            "recurrence_count": 1
          }
        ],
        "policy": {
          "evaluated_at": "2026-07-27T00:00:00.000Z",
          "ageing_limits": [
            {
              "bucket_name": "0-5d",
              "min_days": 0,
              "max_days": 5
            },
            {
              "bucket_name": "6-10d",
              "min_days": 6,
              "max_days": 10
            },
            {
              "bucket_name": "11-20d",
              "min_days": 11,
              "max_days": 20
            },
            {
              "bucket_name": "21d-plus",
              "min_days": 21,
              "max_days": 999999
            }
          ],
          "escalation_days": 10
        }
      },
      "output_payload": {
        "evaluated_at": "2026-07-27T00:00:00.000Z",
        "total_current": 2,
        "newly_opened_count": 1,
        "persisting_count": 1,
        "newly_closed_count": 1,
        "escalation_breached_count": 1,
        "breaks": [
          {
            "break_key": "UTI0002::notional_amount",
            "uti": "UTI0002",
            "field_name": "notional_amount",
            "status": "persisting",
            "first_seen_at": "2026-07-10T00:00:00.000Z",
            "age_days": 17,
            "ageing_bucket": "11-20d",
            "recurrence_count": 4,
            "escalation_clock": {
              "deadline_iso": "2026-07-20T00:00:00.000Z",
              "escalation_status": "breached"
            }
          },
          {
            "break_key": "UTI0005::price",
            "uti": "UTI0005",
            "field_name": "price",
            "status": "newly_opened",
            "first_seen_at": "2026-07-27T00:00:00.000Z",
            "age_days": 0,
            "ageing_bucket": "0-5d",
            "recurrence_count": 1,
            "escalation_clock": {
              "deadline_iso": "2026-08-06T00:00:00.000Z",
              "escalation_status": "on_track"
            }
          }
        ],
        "newly_closed": [
          {
            "break_key": "UTI0009::maturity_date",
            "uti": "UTI0009",
            "field_name": "maturity_date",
            "first_seen_at": "2026-07-20T00:00:00.000Z"
          }
        ],
        "note": "Deterministic ageing of a current EMIR reconciliation break set diffed against a prior sealed break set by stable break_key. Ageing buckets and the escalation clock are policy-supplied per cycle, reusing the art-428-cyber-incident-clock deadline-vs-evaluated_at pattern (first_seen_at + policy limit vs evaluated_at)."
      },
      "golden_hash": "512e5d70e89b103a44577cb808e12ff16ea01fb8fc4c4389fd29360a697f2d54"
    },
    {
      "name": "empty-input-finite",
      "policy_parameters": {
        "current_break_set": [],
        "prior_sealed_break_set": [],
        "policy": {
          "evaluated_at": "2026-07-27T00:00:00.000Z",
          "ageing_limits": [],
          "escalation_days": 10
        }
      },
      "output_payload": {
        "evaluated_at": "2026-07-27T00:00:00.000Z",
        "total_current": 0,
        "newly_opened_count": 0,
        "persisting_count": 0,
        "newly_closed_count": 0,
        "escalation_breached_count": 0,
        "breaks": [],
        "newly_closed": [],
        "note": "Deterministic ageing of a current EMIR reconciliation break set diffed against a prior sealed break set by stable break_key. Ageing buckets and the escalation clock are policy-supplied per cycle, reusing the art-428-cyber-incident-clock deadline-vs-evaluated_at pattern (first_seen_at + policy limit vs evaluated_at)."
      },
      "golden_hash": "34b6e65b2afcdbfe4e08568be062b2f4317d11b1ef5ee3609c5b11a785967f29"
    }
  ]
}
