{
  "tool_id": "art-451-model-outcome-analysis",
  "note": "golden_hash filled by golden-parity.test.mjs --update; output_payload filled by fill-fixture-payloads.mjs. Vector 1: 4-period backtest with one breaching period, overall pass. Vector 2: 3-period backtest with majority breach -> fail status. Vector 3: no observations -- finite gate.",
  "vectors": [
    {
      "name": "mostly_within_tolerance",
      "description": "4 periods, default 10% error tolerance, default 20% max breach rate. One period (Q2) breaches at 15% error; breach_rate_pct=25 exceeds 20 -> fail. Included to exercise both breach and non-breach periods in one vector.",
      "policy_parameters": {
        "observations": [
          {
            "period_label": "Q1",
            "predicted": 1000,
            "actual": 1020
          },
          {
            "period_label": "Q2",
            "predicted": 1000,
            "actual": 1150
          },
          {
            "period_label": "Q3",
            "predicted": 1000,
            "actual": 980
          },
          {
            "period_label": "Q4",
            "predicted": 1000,
            "actual": 1050
          }
        ],
        "error_threshold_pct": 10,
        "max_breach_rate_pct": 20
      },
      "output_payload": {
        "error_threshold_pct": 10,
        "max_breach_rate_pct": 20,
        "periods": [
          {
            "period_label": "Q1",
            "predicted": 1000,
            "actual": 1020,
            "error": 20,
            "abs_pct_error": 2,
            "breach": false
          },
          {
            "period_label": "Q2",
            "predicted": 1000,
            "actual": 1150,
            "error": 150,
            "abs_pct_error": 15,
            "breach": true
          },
          {
            "period_label": "Q3",
            "predicted": 1000,
            "actual": 980,
            "error": -20,
            "abs_pct_error": 2,
            "breach": false
          },
          {
            "period_label": "Q4",
            "predicted": 1000,
            "actual": 1050,
            "error": 50,
            "abs_pct_error": 5,
            "breach": false
          }
        ],
        "total_periods": 4,
        "breach_periods": [
          {
            "period_label": "Q2",
            "abs_pct_error": 15
          }
        ],
        "mean_absolute_percent_error": 6,
        "max_absolute_percent_error": 15,
        "breach_rate_pct": 25,
        "worst_period": "Q2",
        "outcome_status": "fail"
      },
      "golden_hash": "9619946e4f416053618bda70c80d7c4195009cdb59e35d671be679b972cbad11"
    },
    {
      "name": "majority_breach_fail",
      "description": "3 periods, tight 5% tolerance and 20% max breach rate. Two of three periods breach (66.67% breach rate) -> fail.",
      "policy_parameters": {
        "observations": [
          {
            "period_label": "Jan",
            "predicted": 500,
            "actual": 540
          },
          {
            "period_label": "Feb",
            "predicted": 500,
            "actual": 560
          },
          {
            "period_label": "Mar",
            "predicted": 500,
            "actual": 505
          }
        ],
        "error_threshold_pct": 5,
        "max_breach_rate_pct": 20
      },
      "output_payload": {
        "error_threshold_pct": 5,
        "max_breach_rate_pct": 20,
        "periods": [
          {
            "period_label": "Jan",
            "predicted": 500,
            "actual": 540,
            "error": 40,
            "abs_pct_error": 8,
            "breach": true
          },
          {
            "period_label": "Feb",
            "predicted": 500,
            "actual": 560,
            "error": 60,
            "abs_pct_error": 12,
            "breach": true
          },
          {
            "period_label": "Mar",
            "predicted": 500,
            "actual": 505,
            "error": 5,
            "abs_pct_error": 1,
            "breach": false
          }
        ],
        "total_periods": 3,
        "breach_periods": [
          {
            "period_label": "Jan",
            "abs_pct_error": 8
          },
          {
            "period_label": "Feb",
            "abs_pct_error": 12
          }
        ],
        "mean_absolute_percent_error": 7,
        "max_absolute_percent_error": 12,
        "breach_rate_pct": 66.67,
        "worst_period": "Feb",
        "outcome_status": "fail"
      },
      "golden_hash": "3953117ea2bae85e63c30917bcabb194b3a2487c1fde15dcc6e337e8a63844ed"
    },
    {
      "name": "empty_observations_edge",
      "description": "No observations declared -- all metrics resolve to 0/empty/null, outcome_status 'not_performed', never NaN.",
      "policy_parameters": {
        "observations": []
      },
      "output_payload": {
        "error_threshold_pct": 10,
        "max_breach_rate_pct": 20,
        "periods": [],
        "total_periods": 0,
        "breach_periods": [],
        "mean_absolute_percent_error": 0,
        "max_absolute_percent_error": 0,
        "breach_rate_pct": 0,
        "worst_period": null,
        "outcome_status": "not_performed"
      },
      "golden_hash": "4fd423b2cf6f03a4bdc2be5788e10172988f42e19457180149e5e3fffd1a4461"
    }
  ]
}
