Resi cues connection errors are amber (check option amber): 'Poll failed' is not the stream down

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 11:36:07 -04:00
co-authored by Claude Opus 5.5
parent 0da1c20a17
commit 55615dd971
4 changed files with 11 additions and 2 deletions
+2 -1
View File
@@ -2489,7 +2489,8 @@
},
{
"conn": "resi-studio-cues",
"type": "conn"
"type": "conn",
"amber": true
},
{
"name": "CLOUD",
+3 -1
View File
@@ -294,6 +294,8 @@ field("tiles[].checks[].service_only", "bool", False, "Legacy: only during a ser
"are armed all day).", "Keys", advanced=True)
field("tiles[].checks[].debounce_seconds", "int", None, "Wait before this check's fault shows.", "Keys", advanced=True,
lo=0, hi=60)
field("tiles[].checks[].amber", "bool", False, "A Companion connection whose errors show amber, not red (a cloud helper "
"like Resi cues: its trouble is not the stream being down).", "Keys", advanced=True)
field("tiles[].checks[].ignore_warning", "bool", False, "Ignore Companion's yellow warning state.", "Keys")
field("tiles[].checks[].optional", "bool", False, "A HyperDeck that may have no disk (grey, no alarm).", "Keys")
field("tiles[].checks[].disk_service_only", "bool", True, "NO DISK only during a service.", "Keys", advanced=True)
@@ -480,7 +482,7 @@ field("ready.mic_positions", "dict", {}, "Other PCO positions and the mic they n
# fields: the keys that type reads; subs: the sub-check names it returns (fix tables use them);
# identity: what it is about; module: the Companion module its connection is expected to use.
CHECKS = {
"conn": {"fields": ["conn", "service_only", "ignore_warning"], "subs": ["conn"], "identity": ["conn"], "module": None,
"conn": {"fields": ["conn", "service_only", "ignore_warning", "amber"], "subs": ["conn"], "identity": ["conn"], "module": None,
"question": "Is a device answering?", "words": "A Companion connection is good."},
"hyperdeck": {"fields": ["conn", "optional", "disk_service_only", "full_minutes", "low_minutes", "rec_sync", "ip"],
"subs": ["conn", "disk", "rec"], "identity": ["conn"], "module": "bmd-hyperdeck",
+3
View File
@@ -273,6 +273,9 @@ def check_conn(chk, snap, ctx):
c = snap.conns.get(chk["conn"], {})
if chk.get("ignore_warning") and res.level == WARN and c.get("enabled") and c.get("category") == "warning":
res = Result(OK)
if chk.get("amber") and res.level == ERR and c.get("enabled"):
# A cloud helper (Resi cues): its error is not the stream being down (2026-10-25: "Poll failed").
res = Result(WARN, res.msg, service_only=res.service_only)
return [("conn", res)]
+3
View File
@@ -355,6 +355,9 @@ class TestChecks(unittest.TestCase):
tiles, _ = run_steps(sp.Engine(CONFIG), self.snap, self.now, 4)
self.assertEqual(tiles["resi"]["x"], "RESI\nRATE LIMITED")
self.assertNotEqual(level(tiles["resi"]), "err")
self.snap.conns["resi-studio-cues"]["message"] = "Poll failed" # its other error: amber too ("amber" on its check)
tiles, _ = run_steps(sp.Engine(CONFIG), self.snap, self.now, 4)
self.assertNotEqual(level(tiles["resi"]), "err")
def test_resi_audio_silent(self):
"""An input stuck at the meter floor (2026-10-25: the Resi AJA passed no Dante audio and nothing said so):