{
  "objective": "Real-time spectral governance under disturbance while preserving operational boundaries",
  "acceptanceGates": {
    "recoveryStepsMax": 31,
    "recoveryMsMax": 620,
    "minimumObligationFloor": 0.85,
    "maxVoltageDeviationPu": 0.108,
    "edgeTrackingErrorPctMax": 1.15,
    "collapseEvents": 0
  },
  "kpis": [
    {
      "id": "kpi-recovery",
      "name": "Recovery duration",
      "unit": "steps/ms",
      "method": "first stable re-entry into governed envelope for 5 consecutive steps"
    },
    {
      "id": "kpi-min-obligation",
      "name": "Minimum Obligation",
      "unit": "ratio",
      "method": "minimum O observed from disturbance onset through recovery complete"
    },
    {
      "id": "kpi-max-voltage-dev",
      "name": "Maximum voltage deviation",
      "unit": "pu",
      "method": "max absolute voltage deviation from nominal envelope"
    },
    {
      "id": "kpi-margin-trend",
      "name": "Stability margin trend",
      "unit": "trend",
      "method": "damped memory of spectral deviation versus target regime"
    },
    {
      "id": "kpi-baseline-delta",
      "name": "Baseline comparison",
      "unit": "%",
      "method": "paired scenario replay with fixed random seed and identical disturbance timing"
    }
  ]
}
