From 8836b379274adbe4d12b4490accb9988273fe5c6 Mon Sep 17 00:00:00 2001 From: seonNoh Date: Thu, 8 Oct 2026 21:27:34 +0900 Subject: [PATCH] fix(harness): do not hold recovery on layer-1 signature alerts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit alerts_ok は第 2 層(signature なし)のアラートだけを見る。第 1 層のシグネチャ アラートはプラットフォームが復旧を担う情報であり、Grafana の解決が 8 分遅れると MTTR に乗ってしまうため除外する。 --- harness/alerts.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/harness/alerts.go b/harness/alerts.go index 7b38111..4fbe117 100644 --- a/harness/alerts.go +++ b/harness/alerts.go @@ -108,7 +108,9 @@ func (r *AlertRouter) handleWebhook(w http.ResponseWriter, req *http.Request) { "startsAt": al.StartsAt, "fingerprint": al.Fingerprint, "layer": al.Labels["layer"], "signature": sig} r.app.store.Event(bg, runID, sid, "alert", "grafana", payload) handled++ - r.setFiring(al.Fingerprint, name, al.Status == "firing") + // layer-1 signature alerts are informational (the platform owns the recovery); they must not hold the judge + // (campaign 3, 2026-10-08: LegacyUnhealthy resolved 8.5 minutes after the container was back, V-K1 MTTR 631 s) + r.setFiring(al.Fingerprint, name, al.Status == "firing" && sig == "") if al.Status != "firing" { r.cancelTimer(al.Fingerprint) continue