From 85ae332a49873c8b3b676b0fd8f783e21d355863 Mon Sep 17 00:00:00 2001 From: Petrus Pennanen Date: Mon, 20 Jul 2026 04:02:44 +0300 Subject: [PATCH] fix(degwatch): ignore placeholder model ids The harness stamps '' as the model on synthetic turns (usage limit notices etc). The watch treated it as a model slip and re-alerted every cooldown for as long as the agent sat at its limit - hours of identical orange alerts in thinkoff-development tonight. A placeholder is not a degradation; skip it. Real slips (haiku fallback etc) still alert as before. Mini watcher already restarted with this patch. Same-shape fix exists as an unpushed branch in the MacBook clone (kimi3's find) - either lands the same change. Co-Authored-By: Claude Fable 5 --- bin/iak-degradation-watch.mjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bin/iak-degradation-watch.mjs b/bin/iak-degradation-watch.mjs index 4f83bd8..e945d12 100644 --- a/bin/iak-degradation-watch.mjs +++ b/bin/iak-degradation-watch.mjs @@ -138,7 +138,11 @@ async function tick(cfg) { } const accepted = agent.accepted_models || []; - if (signals.model && accepted.length) { + // "" is the harness placeholder on synthetic turns (usage-limit + // notices, injected system output) - not a real model slip. Alerting on it + // spammed the room every cooldown while an agent sat at its usage limit + // (petrus, 2026-07-20 00:58: "Claudemm you are spamming!"). + if (signals.model && accepted.length && signals.model !== '') { const ok = accepted.some((prefix) => signals.model.startsWith(prefix)); await checkSignal(cfg, agent, 'model', !ok, `🟠 degradation watch: @${agent.name}'s session has SLIPPED to model "${signals.model}" ` +