{
  "tool_id": "art-506-classify-t1-posttrade-timing",
  "note": "Vectors computed directly from the shipped kernel. Covers the flagship case where the shorter cycle is what breaks two steps and first_failing_step must be the first in the caller's declared order, a fully on-time chain, a declared at-risk band, breaches that predate the cycle change, a missing baseline cut-off, the finite gate over missing, malformed, non-existent and zero-epoch timestamps, an undeclared time zone offset, and an empty step list. All timings are SYNTHETIC and every cut-off is a caller input: no market or venue cut-off table is shipped.",
  "vectors": [
    {
      "name": "newly-breaching-two-steps-first-failing-in-declared-order",
      "description": "The question the node exists to answer. Allocation and confirmation both clear their T+2 cut-offs and both breach under T+1, so the shorter cycle is what breaks them. Two steps breach, and first_failing_step must be allocation_sent because it is first in the caller's declared chain order, not because it is earliest by clock.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0001",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T15:40:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "steps": [
          {
            "step": "allocation_sent",
            "achieved_at": "2027-10-12T21:15:00Z",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_baseline": "2027-10-13T06:00:00Z"
          },
          {
            "step": "confirmation_affirmation",
            "achieved_at": "2027-10-12T22:40:00Z",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_baseline": "2027-10-13T11:00:00Z"
          },
          {
            "step": "settlement_instruction_release",
            "achieved_at": "2027-10-13T05:30:00Z",
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_baseline": "2027-10-13T18:00:00Z"
          },
          {
            "step": "csd_matching",
            "achieved_at": "2027-10-13T07:00:00Z",
            "cutoff_target": "2027-10-13T14:00:00Z",
            "cutoff_baseline": "2027-10-14T14:00:00Z"
          }
        ]
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0001",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T15:40:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "verdict": "breaches_introduced_by_target_cycle",
        "verdict_reason": "2 step(s) breach under T+1 that met their T+2 cut-off. The first is allocation_sent.",
        "first_failing_step": "allocation_sent",
        "first_newly_breaching_step": "allocation_sent",
        "steps": [
          {
            "step": "trade_execution",
            "synthesised_from": "trade_timestamp and venue_cutoff",
            "achieved_at": "2027-10-12T15:40:00Z",
            "achieved_epoch_seconds": 1823355600,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T16:30:00Z",
            "cutoff_target_epoch_seconds": 1823358600,
            "cutoff_baseline": "2027-10-12T16:30:00Z",
            "cutoff_baseline_epoch_seconds": 1823358600,
            "margin_seconds": 3000,
            "margin_seconds_baseline": 3000,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "allocation_sent",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T21:15:00Z",
            "achieved_epoch_seconds": 1823375700,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_target_epoch_seconds": 1823371200,
            "cutoff_baseline": "2027-10-13T06:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823407200,
            "margin_seconds": -4500,
            "margin_seconds_baseline": 31500,
            "status": "breached",
            "status_baseline": "on_time",
            "breaches_under_target_only": true,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "confirmation_affirmation",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T22:40:00Z",
            "achieved_epoch_seconds": 1823380800,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_target_epoch_seconds": 1823374800,
            "cutoff_baseline": "2027-10-13T11:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823425200,
            "margin_seconds": -6000,
            "margin_seconds_baseline": 44400,
            "status": "breached",
            "status_baseline": "on_time",
            "breaches_under_target_only": true,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "settlement_instruction_release",
            "synthesised_from": null,
            "achieved_at": "2027-10-13T05:30:00Z",
            "achieved_epoch_seconds": 1823405400,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_target_epoch_seconds": 1823407200,
            "cutoff_baseline": "2027-10-13T18:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823450400,
            "margin_seconds": 1800,
            "margin_seconds_baseline": 45000,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "csd_matching",
            "synthesised_from": null,
            "achieved_at": "2027-10-13T07:00:00Z",
            "achieved_epoch_seconds": 1823410800,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-13T14:00:00Z",
            "cutoff_target_epoch_seconds": 1823436000,
            "cutoff_baseline": "2027-10-14T14:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823522400,
            "margin_seconds": 25200,
            "margin_seconds_baseline": 111600,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          }
        ],
        "step_count": 5,
        "breached_count": 2,
        "at_risk_count": 0,
        "on_time_count": 3,
        "undetermined_count": 0,
        "newly_breaching_count": 2,
        "baseline_not_compared_count": 0,
        "rationale": [
          "Step allocation_sent breaches its T+1 cut-off by 4500 second(s) and met its T+2 cut-off with 31500 second(s) to spare. The shorter cycle is what breaks it.",
          "Step confirmation_affirmation breaches its T+1 cut-off by 6000 second(s) and met its T+2 cut-off with 44400 second(s) to spare. The shorter cycle is what breaks it.",
          "No at-risk band was declared, so at_risk_margin_seconds is zero and no step can be classified at risk. A step that clears its cut-off by one second reads as on time. Declare at_risk_margin_seconds to open a band."
        ],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_BREACH_PROJECTED",
        "ESCALATION_RAISED",
        "T1_BREACHES_INTRODUCED_BY_SHORTER_CYCLE",
        "T1_AT_RISK_BAND_UNDECLARED"
      ],
      "golden_hash": "c6c211a9aa3015210512b5b1230ed041882a461e8743765dfb2b6bbb535d85a7"
    },
    {
      "name": "on-time-under-target-cycle",
      "description": "The same chain moved earlier in the day. Every step clears its T+1 cut-off, nothing is at risk and nothing is undetermined, so the run is T1_READY and no escalation is raised.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0002",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T09:05:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "steps": [
          {
            "step": "allocation_sent",
            "achieved_at": "2027-10-12T13:20:00Z",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_baseline": "2027-10-13T06:00:00Z"
          },
          {
            "step": "confirmation_affirmation",
            "achieved_at": "2027-10-12T15:10:00Z",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_baseline": "2027-10-13T11:00:00Z"
          },
          {
            "step": "settlement_instruction_release",
            "achieved_at": "2027-10-12T18:00:00Z",
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_baseline": "2027-10-13T18:00:00Z"
          },
          {
            "step": "csd_matching",
            "achieved_at": "2027-10-13T08:30:00Z",
            "cutoff_target": "2027-10-13T14:00:00Z",
            "cutoff_baseline": "2027-10-14T14:00:00Z"
          }
        ]
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0002",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T09:05:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "verdict": "on_time_under_target_cycle",
        "verdict_reason": "Every step this run could classify clears its T+1 cut-off on the timings supplied.",
        "first_failing_step": null,
        "first_newly_breaching_step": null,
        "steps": [
          {
            "step": "trade_execution",
            "synthesised_from": "trade_timestamp and venue_cutoff",
            "achieved_at": "2027-10-12T09:05:00Z",
            "achieved_epoch_seconds": 1823331900,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T16:30:00Z",
            "cutoff_target_epoch_seconds": 1823358600,
            "cutoff_baseline": "2027-10-12T16:30:00Z",
            "cutoff_baseline_epoch_seconds": 1823358600,
            "margin_seconds": 26700,
            "margin_seconds_baseline": 26700,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "allocation_sent",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T13:20:00Z",
            "achieved_epoch_seconds": 1823347200,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_target_epoch_seconds": 1823371200,
            "cutoff_baseline": "2027-10-13T06:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823407200,
            "margin_seconds": 24000,
            "margin_seconds_baseline": 60000,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "confirmation_affirmation",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T15:10:00Z",
            "achieved_epoch_seconds": 1823353800,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_target_epoch_seconds": 1823374800,
            "cutoff_baseline": "2027-10-13T11:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823425200,
            "margin_seconds": 21000,
            "margin_seconds_baseline": 71400,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "settlement_instruction_release",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T18:00:00Z",
            "achieved_epoch_seconds": 1823364000,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_target_epoch_seconds": 1823407200,
            "cutoff_baseline": "2027-10-13T18:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823450400,
            "margin_seconds": 43200,
            "margin_seconds_baseline": 86400,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "csd_matching",
            "synthesised_from": null,
            "achieved_at": "2027-10-13T08:30:00Z",
            "achieved_epoch_seconds": 1823416200,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-13T14:00:00Z",
            "cutoff_target_epoch_seconds": 1823436000,
            "cutoff_baseline": "2027-10-14T14:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823522400,
            "margin_seconds": 19800,
            "margin_seconds_baseline": 106200,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          }
        ],
        "step_count": 5,
        "breached_count": 0,
        "at_risk_count": 0,
        "on_time_count": 5,
        "undetermined_count": 0,
        "newly_breaching_count": 0,
        "baseline_not_compared_count": 0,
        "rationale": [
          "No at-risk band was declared, so at_risk_margin_seconds is zero and no step can be classified at risk. A step that clears its cut-off by one second reads as on time. Declare at_risk_margin_seconds to open a band."
        ],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_READY",
        "T1_AT_RISK_BAND_UNDECLARED"
      ],
      "golden_hash": "93d64e5846baeb3400e123b4b416a565caf9c03f50139d6179d86add45466595"
    },
    {
      "name": "at-risk-band-declared",
      "description": "The caller declares a 3600 second at-risk band. Two steps clear their T+1 cut-off inside that band, so they classify at_risk rather than on_time and the run raises T1_AT_RISK without any breach. The band is a caller policy input and is echoed with the result.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0003",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 3600,
        "trade_timestamp": "2027-10-12T09:05:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "steps": [
          {
            "step": "allocation_sent",
            "achieved_at": "2027-10-12T19:30:00Z",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_baseline": "2027-10-13T06:00:00Z"
          },
          {
            "step": "confirmation_affirmation",
            "achieved_at": "2027-10-12T20:20:00Z",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_baseline": "2027-10-13T11:00:00Z"
          },
          {
            "step": "settlement_instruction_release",
            "achieved_at": "2027-10-12T22:00:00Z",
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_baseline": "2027-10-13T18:00:00Z"
          }
        ]
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0003",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 3600,
        "trade_timestamp": "2027-10-12T09:05:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "verdict": "at_risk_under_target_cycle",
        "verdict_reason": "No step breaches under T+1, and 2 step(s) clear their cut-off inside the declared at-risk band of 3600 second(s).",
        "first_failing_step": null,
        "first_newly_breaching_step": null,
        "steps": [
          {
            "step": "trade_execution",
            "synthesised_from": "trade_timestamp and venue_cutoff",
            "achieved_at": "2027-10-12T09:05:00Z",
            "achieved_epoch_seconds": 1823331900,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T16:30:00Z",
            "cutoff_target_epoch_seconds": 1823358600,
            "cutoff_baseline": "2027-10-12T16:30:00Z",
            "cutoff_baseline_epoch_seconds": 1823358600,
            "margin_seconds": 26700,
            "margin_seconds_baseline": 26700,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "allocation_sent",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T19:30:00Z",
            "achieved_epoch_seconds": 1823369400,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_target_epoch_seconds": 1823371200,
            "cutoff_baseline": "2027-10-13T06:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823407200,
            "margin_seconds": 1800,
            "margin_seconds_baseline": 37800,
            "status": "at_risk",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "confirmation_affirmation",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T20:20:00Z",
            "achieved_epoch_seconds": 1823372400,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_target_epoch_seconds": 1823374800,
            "cutoff_baseline": "2027-10-13T11:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823425200,
            "margin_seconds": 2400,
            "margin_seconds_baseline": 52800,
            "status": "at_risk",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "settlement_instruction_release",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T22:00:00Z",
            "achieved_epoch_seconds": 1823378400,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_target_epoch_seconds": 1823407200,
            "cutoff_baseline": "2027-10-13T18:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823450400,
            "margin_seconds": 28800,
            "margin_seconds_baseline": 72000,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          }
        ],
        "step_count": 4,
        "breached_count": 0,
        "at_risk_count": 2,
        "on_time_count": 2,
        "undetermined_count": 0,
        "newly_breaching_count": 0,
        "baseline_not_compared_count": 0,
        "rationale": [
          "Step allocation_sent clears its T+1 cut-off by 1800 second(s), inside the declared at-risk band of 3600 second(s).",
          "Step confirmation_affirmation clears its T+1 cut-off by 2400 second(s), inside the declared at-risk band of 3600 second(s)."
        ],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_AT_RISK"
      ],
      "golden_hash": "77c227d8142bb524511642465719e7b128d2c1054de08e34dcb7d6e6575e2b10"
    },
    {
      "name": "breached-under-both-cycles",
      "description": "Allocation misses its cut-off under both cycles, so the breach is real but the shorter cycle is not its cause. newly_breaching_count stays zero, the verdict says so explicitly, and escalation is still raised because a breach is a breach.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0004",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T09:05:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "steps": [
          {
            "step": "allocation_sent",
            "achieved_at": "2027-10-13T09:00:00Z",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_baseline": "2027-10-13T06:00:00Z"
          },
          {
            "step": "confirmation_affirmation",
            "achieved_at": "2027-10-13T10:00:00Z",
            "cutoff_target": "2027-10-13T11:00:00Z",
            "cutoff_baseline": "2027-10-13T11:00:00Z"
          }
        ]
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0004",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T09:05:00Z",
        "venue_cutoff": "2027-10-12T16:30:00Z",
        "verdict": "breached_under_both_cycles",
        "verdict_reason": "1 step(s) breach under T+1, and none of them met their T+2 cut-off either, so on these timings the shorter cycle is not what breaks them. The first failing step is allocation_sent.",
        "first_failing_step": "allocation_sent",
        "first_newly_breaching_step": null,
        "steps": [
          {
            "step": "trade_execution",
            "synthesised_from": "trade_timestamp and venue_cutoff",
            "achieved_at": "2027-10-12T09:05:00Z",
            "achieved_epoch_seconds": 1823331900,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T16:30:00Z",
            "cutoff_target_epoch_seconds": 1823358600,
            "cutoff_baseline": "2027-10-12T16:30:00Z",
            "cutoff_baseline_epoch_seconds": 1823358600,
            "margin_seconds": 26700,
            "margin_seconds_baseline": 26700,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "allocation_sent",
            "synthesised_from": null,
            "achieved_at": "2027-10-13T09:00:00Z",
            "achieved_epoch_seconds": 1823418000,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_target_epoch_seconds": 1823371200,
            "cutoff_baseline": "2027-10-13T06:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823407200,
            "margin_seconds": -46800,
            "margin_seconds_baseline": -10800,
            "status": "breached",
            "status_baseline": "breached",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "confirmation_affirmation",
            "synthesised_from": null,
            "achieved_at": "2027-10-13T10:00:00Z",
            "achieved_epoch_seconds": 1823421600,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-13T11:00:00Z",
            "cutoff_target_epoch_seconds": 1823425200,
            "cutoff_baseline": "2027-10-13T11:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823425200,
            "margin_seconds": 3600,
            "margin_seconds_baseline": 3600,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          }
        ],
        "step_count": 3,
        "breached_count": 1,
        "at_risk_count": 0,
        "on_time_count": 2,
        "undetermined_count": 0,
        "newly_breaching_count": 0,
        "baseline_not_compared_count": 0,
        "rationale": [
          "Step allocation_sent breaches its T+1 cut-off and also missed its T+2 cut-off, so the shorter cycle is not the cause.",
          "No at-risk band was declared, so at_risk_margin_seconds is zero and no step can be classified at risk. A step that clears its cut-off by one second reads as on time. Declare at_risk_margin_seconds to open a band."
        ],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_BREACH_PROJECTED",
        "ESCALATION_RAISED",
        "T1_AT_RISK_BAND_UNDECLARED"
      ],
      "golden_hash": "301a892e7966bdf4fb2297eaae8a5bb50401a2319e8e349328f5404efd73b0aa"
    },
    {
      "name": "baseline-cutoff-absent",
      "description": "A step breaches under T+1 but carries no baseline cut-off, so the run refuses to say whether the breach is new. baseline_not_compared is set on the step, T1_BASELINE_NOT_COMPARED is raised, and the step is deliberately not counted as newly breaching.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0005",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "",
        "venue_cutoff": "",
        "steps": [
          {
            "step": "allocation_sent",
            "achieved_at": "2027-10-12T21:15:00Z",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_baseline": ""
          },
          {
            "step": "confirmation_affirmation",
            "achieved_at": "2027-10-12T20:00:00Z",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_baseline": "2027-10-13T11:00:00Z"
          }
        ]
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0005",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "",
        "venue_cutoff": "",
        "verdict": "breached_baseline_not_comparable",
        "verdict_reason": "1 step(s) breach under T+1. At least one of them carries no usable T+2 cut-off, so this run cannot say whether the shorter cycle is what breaks it. The first failing step is allocation_sent.",
        "first_failing_step": "allocation_sent",
        "first_newly_breaching_step": null,
        "steps": [
          {
            "step": "allocation_sent",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T21:15:00Z",
            "achieved_epoch_seconds": 1823375700,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_target_epoch_seconds": 1823371200,
            "cutoff_baseline": "",
            "cutoff_baseline_epoch_seconds": null,
            "margin_seconds": -4500,
            "margin_seconds_baseline": null,
            "status": "breached",
            "status_baseline": "undetermined",
            "breaches_under_target_only": false,
            "baseline_not_compared": true,
            "undetermined_reason": null
          },
          {
            "step": "confirmation_affirmation",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T20:00:00Z",
            "achieved_epoch_seconds": 1823371200,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_target_epoch_seconds": 1823374800,
            "cutoff_baseline": "2027-10-13T11:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823425200,
            "margin_seconds": 3600,
            "margin_seconds_baseline": 54000,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          }
        ],
        "step_count": 2,
        "breached_count": 1,
        "at_risk_count": 0,
        "on_time_count": 1,
        "undetermined_count": 0,
        "newly_breaching_count": 0,
        "baseline_not_compared_count": 1,
        "rationale": [
          "Step allocation_sent breaches its T+1 cut-off, but no usable T+2 cut-off was supplied, so this run cannot say whether the breach is new.",
          "No at-risk band was declared, so at_risk_margin_seconds is zero and no step can be classified at risk. A step that clears its cut-off by one second reads as on time. Declare at_risk_margin_seconds to open a band.",
          "1 step(s) carry no usable T+2 cut-off, so this run cannot say whether their result is new to T+1."
        ],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_BREACH_PROJECTED",
        "ESCALATION_RAISED",
        "T1_BASELINE_NOT_COMPARED",
        "T1_AT_RISK_BAND_UNDECLARED"
      ],
      "golden_hash": "d849bc7f0aabd7ba92089805ddc193656588d1dc5437edae71463e6263937e26"
    },
    {
      "name": "finite-gate-missing-malformed-nonexistent-and-zero-epoch",
      "description": "The finite gate. A blank timestamp, a free-text timestamp, a calendar date that does not exist and a zero-epoch instant are all supplied together. The first three classify undetermined with a named reason and emit null rather than NaN for every margin; the zero-epoch step is a real instant and is classified normally, so a zero timestamp is never confused with a missing one.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0006",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "",
        "venue_cutoff": "",
        "steps": [
          {
            "step": "allocation_sent",
            "achieved_at": "",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_baseline": "2027-10-13T06:00:00Z"
          },
          {
            "step": "confirmation_affirmation",
            "achieved_at": "shortly after the close",
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_baseline": "2027-10-13T11:00:00Z"
          },
          {
            "step": "settlement_instruction_release",
            "achieved_at": "2027-02-30T10:00:00Z",
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_baseline": "2027-10-13T18:00:00Z"
          },
          {
            "step": "csd_matching",
            "achieved_at": "1970-01-01T00:00:00Z",
            "cutoff_target": "2027-10-13T14:00:00Z",
            "cutoff_baseline": "2027-10-14T14:00:00Z"
          }
        ]
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0006",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "",
        "venue_cutoff": "",
        "verdict": "on_time_with_timings_incomplete",
        "verdict_reason": "Every one of the 1 step(s) this run could classify clears its T+1 cut-off, but 3 step(s) could not be classified at all. This is not a ready result.",
        "first_failing_step": null,
        "first_newly_breaching_step": null,
        "steps": [
          {
            "step": "allocation_sent",
            "synthesised_from": null,
            "achieved_at": "",
            "achieved_epoch_seconds": null,
            "achieved_offset_source": null,
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_target_epoch_seconds": 1823371200,
            "cutoff_baseline": "2027-10-13T06:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823407200,
            "margin_seconds": null,
            "margin_seconds_baseline": null,
            "status": "undetermined",
            "status_baseline": "undetermined",
            "breaches_under_target_only": false,
            "baseline_not_compared": true,
            "undetermined_reason": "No timestamp was supplied for this step."
          },
          {
            "step": "confirmation_affirmation",
            "synthesised_from": null,
            "achieved_at": "shortly after the close",
            "achieved_epoch_seconds": null,
            "achieved_offset_source": null,
            "cutoff_target": "2027-10-12T21:00:00Z",
            "cutoff_target_epoch_seconds": 1823374800,
            "cutoff_baseline": "2027-10-13T11:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823425200,
            "margin_seconds": null,
            "margin_seconds_baseline": null,
            "status": "undetermined",
            "status_baseline": "undetermined",
            "breaches_under_target_only": false,
            "baseline_not_compared": true,
            "undetermined_reason": "The timestamp is not an ISO 8601 value of the form YYYY-MM-DDTHH:MM:SS with an optional Z or +HH:MM offset."
          },
          {
            "step": "settlement_instruction_release",
            "synthesised_from": null,
            "achieved_at": "2027-02-30T10:00:00Z",
            "achieved_epoch_seconds": null,
            "achieved_offset_source": null,
            "cutoff_target": "2027-10-13T06:00:00Z",
            "cutoff_target_epoch_seconds": 1823407200,
            "cutoff_baseline": "2027-10-13T18:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823450400,
            "margin_seconds": null,
            "margin_seconds_baseline": null,
            "status": "undetermined",
            "status_baseline": "undetermined",
            "breaches_under_target_only": false,
            "baseline_not_compared": true,
            "undetermined_reason": "The timestamp names a calendar date that does not exist in that month."
          },
          {
            "step": "csd_matching",
            "synthesised_from": null,
            "achieved_at": "1970-01-01T00:00:00Z",
            "achieved_epoch_seconds": 0,
            "achieved_offset_source": "explicit_utc",
            "cutoff_target": "2027-10-13T14:00:00Z",
            "cutoff_target_epoch_seconds": 1823436000,
            "cutoff_baseline": "2027-10-14T14:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823522400,
            "margin_seconds": 1823436000,
            "margin_seconds_baseline": 1823522400,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          }
        ],
        "step_count": 4,
        "breached_count": 0,
        "at_risk_count": 0,
        "on_time_count": 1,
        "undetermined_count": 3,
        "newly_breaching_count": 0,
        "baseline_not_compared_count": 3,
        "rationale": [
          "Step allocation_sent could not be classified: No timestamp was supplied for this step.",
          "Step confirmation_affirmation could not be classified: The timestamp is not an ISO 8601 value of the form YYYY-MM-DDTHH:MM:SS with an optional Z or +HH:MM offset.",
          "Step settlement_instruction_release could not be classified: The timestamp names a calendar date that does not exist in that month.",
          "3 step(s) could not be classified and are excluded from the on-time count. An unclassified step is not an on-time step.",
          "No at-risk band was declared, so at_risk_margin_seconds is zero and no step can be classified at risk. A step that clears its cut-off by one second reads as on time. Declare at_risk_margin_seconds to open a band.",
          "3 step(s) carry no usable T+2 cut-off, so this run cannot say whether their result is new to T+1."
        ],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_TIMINGS_INCOMPLETE",
        "T1_BASELINE_NOT_COMPARED",
        "T1_AT_RISK_BAND_UNDECLARED"
      ],
      "golden_hash": "fab910e6af64f1a67e3c5316758a10173cefc2b6402f034314656d8bcee5e062"
    },
    {
      "name": "time-zone-offset-undeclared-and-mixed-offsets",
      "description": "Timestamps arrive with explicit offsets, with a Z, and with none at all, and no time_zone_offset_minutes is declared. The bare timestamps are read as UTC, that assumption is named in the rationale and raises T1_TIME_ZONE_OFFSET_UNDECLARED, and the offset source is recorded per timestamp so a reviewer can see which reading was used.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0007",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T15:40:00+02:00",
        "venue_cutoff": "2027-10-12T16:30:00+02:00",
        "steps": [
          {
            "step": "allocation_sent",
            "achieved_at": "2027-10-12T21:15:00",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_baseline": "2027-10-13T06:00:00Z"
          },
          {
            "step": "confirmation_affirmation",
            "achieved_at": "2027-10-12T19:40:00-05:00",
            "cutoff_target": "2027-10-13T02:00:00Z",
            "cutoff_baseline": "2027-10-13T11:00:00Z"
          }
        ]
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0007",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": null,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "2027-10-12T15:40:00+02:00",
        "venue_cutoff": "2027-10-12T16:30:00+02:00",
        "verdict": "breaches_introduced_by_target_cycle",
        "verdict_reason": "1 step(s) breach under T+1 that met their T+2 cut-off. The first is allocation_sent.",
        "first_failing_step": "allocation_sent",
        "first_newly_breaching_step": "allocation_sent",
        "steps": [
          {
            "step": "trade_execution",
            "synthesised_from": "trade_timestamp and venue_cutoff",
            "achieved_at": "2027-10-12T15:40:00+02:00",
            "achieved_epoch_seconds": 1823348400,
            "achieved_offset_source": "explicit_offset",
            "cutoff_target": "2027-10-12T16:30:00+02:00",
            "cutoff_target_epoch_seconds": 1823351400,
            "cutoff_baseline": "2027-10-12T16:30:00+02:00",
            "cutoff_baseline_epoch_seconds": 1823351400,
            "margin_seconds": 3000,
            "margin_seconds_baseline": 3000,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "allocation_sent",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T21:15:00",
            "achieved_epoch_seconds": 1823375700,
            "achieved_offset_source": "no_offset_declared_treated_as_utc",
            "cutoff_target": "2027-10-12T20:00:00Z",
            "cutoff_target_epoch_seconds": 1823371200,
            "cutoff_baseline": "2027-10-13T06:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823407200,
            "margin_seconds": -4500,
            "margin_seconds_baseline": 31500,
            "status": "breached",
            "status_baseline": "on_time",
            "breaches_under_target_only": true,
            "baseline_not_compared": false,
            "undetermined_reason": null
          },
          {
            "step": "confirmation_affirmation",
            "synthesised_from": null,
            "achieved_at": "2027-10-12T19:40:00-05:00",
            "achieved_epoch_seconds": 1823388000,
            "achieved_offset_source": "explicit_offset",
            "cutoff_target": "2027-10-13T02:00:00Z",
            "cutoff_target_epoch_seconds": 1823392800,
            "cutoff_baseline": "2027-10-13T11:00:00Z",
            "cutoff_baseline_epoch_seconds": 1823425200,
            "margin_seconds": 4800,
            "margin_seconds_baseline": 37200,
            "status": "on_time",
            "status_baseline": "on_time",
            "breaches_under_target_only": false,
            "baseline_not_compared": false,
            "undetermined_reason": null
          }
        ],
        "step_count": 3,
        "breached_count": 1,
        "at_risk_count": 0,
        "on_time_count": 2,
        "undetermined_count": 0,
        "newly_breaching_count": 1,
        "baseline_not_compared_count": 0,
        "rationale": [
          "Step allocation_sent breaches its T+1 cut-off by 4500 second(s) and met its T+2 cut-off with 31500 second(s) to spare. The shorter cycle is what breaks it.",
          "No at-risk band was declared, so at_risk_margin_seconds is zero and no step can be classified at risk. A step that clears its cut-off by one second reads as on time. Declare at_risk_margin_seconds to open a band.",
          "At least one timestamp carried no offset of its own and no time_zone_offset_minutes was declared, so it was read as UTC. Declare the offset if the supplied timestamps are local."
        ],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_BREACH_PROJECTED",
        "ESCALATION_RAISED",
        "T1_BREACHES_INTRODUCED_BY_SHORTER_CYCLE",
        "T1_AT_RISK_BAND_UNDECLARED",
        "T1_TIME_ZONE_OFFSET_UNDECLARED"
      ],
      "golden_hash": "377acec86529eec0f42b76c597652463c74ac80ca3197ff8b4d36e4765150977"
    },
    {
      "name": "no-steps-supplied",
      "description": "The empty boundary. With no step supplied there is nothing to classify, so the run states that verdict and names what a step needs rather than returning a vacuous ready result.",
      "policy_parameters": {
        "trade_ref": "TRD-OPAQUE-2027-0008",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "",
        "venue_cutoff": "",
        "steps": []
      },
      "output_payload": {
        "trade_ref": "TRD-OPAQUE-2027-0008",
        "target_cycle": "T+1",
        "baseline_cycle": "T+2",
        "cycle_compared": "T+2 to T+1",
        "time_zone_offset_minutes": 0,
        "at_risk_margin_seconds": 0,
        "trade_timestamp": "",
        "venue_cutoff": "",
        "verdict": "no_steps_supplied",
        "verdict_reason": "No post-trade step was supplied, so there is nothing to classify. Each step needs an achieved timestamp and a cut-off for the target cycle, and a cut-off for the baseline cycle if the run is to say whether a breach is new.",
        "first_failing_step": null,
        "first_newly_breaching_step": null,
        "steps": [],
        "step_count": 0,
        "breached_count": 0,
        "at_risk_count": 0,
        "on_time_count": 0,
        "undetermined_count": 0,
        "newly_breaching_count": 0,
        "baseline_not_compared_count": 0,
        "rationale": [],
        "note": "Deterministic classification of post-trade step timings the caller supplies, comparing each step against a target-cycle cut-off and a baseline-cycle cut-off to identify which steps the shorter cycle is what breaks. Every cut-off is a caller input: no market or venue cut-off table is shipped, because a table of cut-offs is a maintenance duty that would silently go false. No clock is read and nothing is compared against the present moment. This tool observes no venue, no central securities depository and no matching platform, and it is not monitoring. It computes no settlement penalty, which is a separate concern, and it makes no claim about markets outside the cycle change the caller declares. It is not legal, tax or regulatory advice."
      },
      "compliance_flags": [
        "T1_NO_STEPS_SUPPLIED"
      ],
      "golden_hash": "ac3d035328f8fcc2a3dba8e69e40bb616d53fd5ae7f3a654598b9ba00cc435f3"
    }
  ]
}
