服務等級目標(SLO)

框架會發出原始訊號(observability 指標、run_history 時長),但沒有把它們轉成 SLO、錯誤 預算或燃燒率警示的運維層。本功能補上:在一段視窗的結果紀錄上計算 SLI、對目標計算錯誤預算,以及 Google SRE workbook 的**多視窗多燃燒率**警示。

紀錄是純資料([{"timestamp": float, "ok": bool}, ...]),因此整體離線且具決定性;時鐘可注入。 純標準函式庫;不匯入 PySide6

無頭 API

from je_auto_control import evaluate_slo, burn_alerts

report = evaluate_slo(records, target=0.99)
# {"sli": 0.995, "good": 995, "total": 1000, "target": 0.99,
#  "budget_total": 10.0, "budget_remaining": 5.0,
#  "budget_remaining_fraction": 0.5, "burn_rate": 0.5}

for alert in burn_alerts(records, target=0.99):
    page_oncall(alert)        # severity、threshold、long/short 燃燒率

evaluate_slo 計算 SLI(good / total)、錯誤預算((1 - target) * total 個事件)與燃燒率 (bad_rate / (1 - target) —— 1.0 代表剛好按進度消耗預算,> 1 代表太快)。burn_rate 是某 視窗的純數字。burn_alerts 評估 default_burn_rules() 的標準 Google SRE 分層 —— 1h(與 5m)達 14.4× 呼叫、6h(與 30m)達 6× 呼叫、3d(與 6h)達 1× 開票 —— 且只有當某層的長視窗與短視窗 **雙雙**超過門檻時才觸發,以取得快速重置與少量誤報。可傳入自訂的 rules``(``BurnRule 清單)。

執行器命令

AC_evaluate_slo 接受 records``(清單或 JSON 字串)、``target 與選用的 window_s,回傳 SLI/預算報告。AC_burn_alerts 回傳 {alerts, firing}。兩者皆以 MCP 工具(ac_evaluate_slo / ac_burn_alerts)以及 Script Builder 中 Report 分類下的命令提供。