From e0e7510bf319df3031104e916f9dcf386ec35847 Mon Sep 17 00:00:00 2001
From: AddisonTech
Date: Tue, 20 Oct 2026 17:08:43 +0000
Subject: [PATCH 1/5] Pin the triage agent to its 0.3.0 merge commit
The Triage tab fixtures are rebuilt from the simulator with the new agent
by backend/scripts/make_triage_fixtures.py, now in the repository. Apart
from the agent version and run timings they match 1.2.2: the utility
failure first, five consequences collapsed, the same measured dip.
---
backend/requirements.txt | 2 +-
backend/scripts/make_triage_fixtures.py | 53 +
backend/tests/test_triage_api.py | 30 +-
frontend/src/test/triage-outage-utc.json | 3924 +++++++++++-----------
frontend/src/test/triage-outage.json | 3924 +++++++++++-----------
5 files changed, 4005 insertions(+), 3928 deletions(-)
create mode 100644 backend/scripts/make_triage_fixtures.py
diff --git a/backend/requirements.txt b/backend/requirements.txt
index a90ef99..f17b905 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -1,4 +1,4 @@
fastapi==0.111.0
uvicorn[standard]==0.29.0
pydantic==2.14.1
-bms-alarm-triage-agent @ git+https://github.com/AddisonTech/bms-alarm-triage-agent@1c32b20747dd204f96ae25e3006151f8b178bb80
+bms-alarm-triage-agent @ git+https://github.com/AddisonTech/bms-alarm-triage-agent@467681d66a15716376168fb957ee416cb1d2e0d3
diff --git a/backend/scripts/make_triage_fixtures.py b/backend/scripts/make_triage_fixtures.py
new file mode 100644
index 0000000..b0cd09b
--- /dev/null
+++ b/backend/scripts/make_triage_fixtures.py
@@ -0,0 +1,53 @@
+"""Rebuild the Triage tab's test fixtures from the real simulator and the pinned agent.
+
+ cd backend && python scripts/make_triage_fixtures.py
+
+Writes frontend/src/test/triage-outage.json (America/New_York) and
+triage-outage-utc.json: a simulated utility outage on the same fixed clock
+the backend tests use, triaged by the installed agent with the template
+writer. Also writes triage-grading.json, the agent's grading as
+GET /api/triage/grading returns it. Run it after the agent pin changes.
+"""
+import json
+import os
+import sys
+import tempfile
+from pathlib import Path
+
+HERE = Path(__file__).resolve().parent
+BACKEND = HERE.parent
+OUT = BACKEND.parent / "frontend" / "src" / "test"
+
+# The same settings the backend tests run with, set before config.py is imported
+os.environ["DB_PATH"] = os.path.join(tempfile.mkdtemp(prefix="triage-fixtures-"), "fixtures.db")
+os.environ.setdefault("BACKFILL_HOURS", "1")
+os.environ.setdefault("SIM_SEED", "7")
+os.environ.setdefault("SIM_FIRST_EVENT", "100000")
+os.environ["DATA_SOURCE"] = "simulator"
+os.environ.pop("TRIAGE_ANTHROPIC_KEY", None)
+sys.path.insert(0, str(BACKEND))
+sys.path.insert(0, str(BACKEND / "tests"))
+
+import triage # noqa: E402
+from test_triage_export import drive # noqa: E402
+
+
+def write(name: str, data) -> None:
+ path = OUT / name
+ with path.open("w", encoding="utf-8", newline="\n") as handle:
+ json.dump(data, handle, indent=2, ensure_ascii=True)
+ handle.write("\n")
+ print("wrote %s" % path.relative_to(BACKEND.parent))
+
+
+def main() -> int:
+ _collector, now = drive("utility_outage", duration=110)
+ for zone, name in (("America/New_York", "triage-outage.json"), ("UTC", "triage-outage-utc.json")):
+ triage.clear_cache()
+ write(name, triage.run(now, time_zone=zone))
+ write("triage-grading.json", triage.grading())
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/backend/tests/test_triage_api.py b/backend/tests/test_triage_api.py
index 3b5dbc3..a87aeef 100644
--- a/backend/tests/test_triage_api.py
+++ b/backend/tests/test_triage_api.py
@@ -21,7 +21,7 @@ def test_export_returns_the_journal_format(client):
assert res.headers["content-disposition"].startswith('attachment; filename="alarm-journal-')
doc = res.json()
assert doc["format"] == "bms-triage-journal" and doc["version"] == 1
- assert doc["source"] == "power-dashboard 1.2.2"
+ assert doc["source"] == "power-dashboard 1.3.0"
parsed = agent_journal.parse(doc)
assert parsed.points and parsed.series
@@ -126,10 +126,10 @@ def test_the_agent_is_pinned_to_one_release():
assert re.fullmatch(r"v\d+\.\d+\.\d+|[0-9a-f]{40}", ref)
-def test_the_installed_agent_is_0_2():
+def test_the_installed_agent_is_0_3():
import bms_alarm_triage
- assert bms_alarm_triage.__version__ == "0.2.2"
+ assert bms_alarm_triage.__version__ == "0.3.0"
@pytest.mark.parametrize("zone_name", ["America/New_York", "UTC"])
@@ -158,3 +158,27 @@ def test_the_event_and_the_text_use_the_viewers_zone(client, zone_name):
def test_a_bad_zone_is_a_400(client):
assert client.post("/api/triage", json={"time_zone": "Mars/Olympus"}).status_code == 400
assert client.get("/api/triage/event", params={"time_zone": "Mars/Olympus"}).status_code == 400
+
+
+def test_the_grading_comes_from_the_pinned_agent(client):
+ import bms_triage_service
+
+ res = client.get("/api/triage/grading")
+ assert res.status_code == 200
+ body = res.json()
+ entry = bms_triage_service.eval_scorecard()["writers"]["template"]
+ assert body["writer"] == "template"
+ assert body["agent_version"] == bms_triage_service.__version__
+ assert body["date"] == entry["date"]
+ assert [g["name"] for g in body["graders"]] == list(entry["graders"])
+ for grader in body["graders"]:
+ assert grader["rate"] == entry["graders"][grader["name"]]["rate"]
+ assert grader["passed"] == entry["graders"][grader["name"]]["passed"]
+ assert grader["what"]
+ assert body["showcase"].endswith("#evals")
+ assert body["synthetic"] is True
+
+
+def test_grading_without_a_scorecard_is_a_503(client, monkeypatch):
+ monkeypatch.setattr(triage, "_service", lambda: object())
+ assert client.get("/api/triage/grading").status_code == 503
diff --git a/frontend/src/test/triage-outage-utc.json b/frontend/src/test/triage-outage-utc.json
index bb3409d..34bed5c 100644
--- a/frontend/src/test/triage-outage-utc.json
+++ b/frontend/src/test/triage-outage-utc.json
@@ -1,1970 +1,1970 @@
{
- "event": {
- "start": "2026-09-21T14:13:20.000+00:00",
- "end": "2026-09-21T14:23:32.000+00:00",
- "first_alarm": "2026-09-21T14:18:20.000+00:00",
- "last_alarm": "2026-09-21T14:18:32.000+00:00",
- "settled": true
- },
- "zone": {
- "name": "UTC",
- "labels": {
- "+00:00": "UTC"
- }
- },
- "triage": {
- "agent_version": "0.2.2",
- "time_zone": {
- "name": "UTC",
- "label": "UTC"
+ "event": {
+ "start": "2026-09-21T14:13:20.000+00:00",
+ "end": "2026-09-21T14:23:32.000+00:00",
+ "first_alarm": "2026-09-21T14:18:20.000+00:00",
+ "last_alarm": "2026-09-21T14:18:32.000+00:00",
+ "settled": true
},
- "window": {
- "start": "2026-09-21T14:13:19+00:00",
- "end": "2026-09-21T14:23:33+00:00"
+ "zone": {
+ "name": "UTC",
+ "labels": {
+ "+00:00": "UTC"
+ }
},
- "counts": {
- "alarm_events": 12,
- "distinct_conditions": 6,
- "ranked_items": 1,
- "consequences_collapsed": 5,
- "nuisance": 0,
- "unresolved": 0,
- "model_call_failures": 0,
- "journal_entries": 24,
- "alarm_transitions": 12,
- "alarms_annunciated": 6,
- "operator_records": 12,
- "points_in_alarm": 6,
- "trend_samples": 5526,
- "event_ack": 6,
- "event_alarm": 6,
- "event_rtn": 6,
- "event_suppress": 3,
- "event_unsuppress": 3
- },
- "items": [
- {
- "point": "SIM-DC/UTIL-1/FAIL",
- "equipment": "UTIL-1",
- "signal": "utility_failure",
- "label": "utility power failure",
- "domain": "electrical",
- "priority": 2,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:20:12+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 112.0,
- "band": "PROMOTED",
- "rule": "E-P1",
- "rule_name": "CAUSE_CONFIRMED_BY_TREND",
- "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 14:18:20 UTC to 14:20:08 UTC, worst value 1, confirming the utility power failure; it ranks as the cause",
- "preliminary_score": 0.088148,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 67,
- "samples_past_limit": 55,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:20:08+00:00",
- "seconds_past_limit": 108.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:02+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:12+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:22+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:04+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:28+00:00",
- 0.0
- ]
- ],
- "dip": null
+ "triage": {
+ "agent_version": "0.3.0",
+ "time_zone": {
+ "name": "UTC",
+ "label": "UTC"
},
- "rank": 1,
- "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 14:18:20 UTC to 14:20:08 UTC (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
- "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
- "written_by": "template, no model",
- "attempts": 1,
- "consequences": [
- {
- "point": "SIM-DC/UPS-A/ONBATT",
- "equipment": "UPS-A",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/UPS-B/ONBATT",
- "equipment": "UPS-B",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/RUN",
- "equipment": "GEN-1",
- "signal": "generator_start",
- "label": "generator start",
- "domain": "electrical",
- "priority": 4,
- "start": "2026-09-21T14:18:28+00:00",
- "end": "2026-09-21T14:20:44+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 136.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:28 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": -0.086713,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 79,
- "samples_past_limit": 67,
- "first_past_limit": "2026-09-21T14:18:28+00:00",
- "last_past_limit": "2026-09-21T14:20:40+00:00",
- "seconds_past_limit": 132.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/ATS-1/EMERG",
- "equipment": "ATS-1",
- "signal": "ats_transfer",
- "label": "ATS transfer to the emergency source",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:20:42+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 130.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.000752,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 76,
- "samples_past_limit": 64,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:20:38+00:00",
- "seconds_past_limit": 126.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/F_LO",
- "equipment": "GEN-1",
- "signal": "frequency_low",
- "label": "generator frequency dip",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:18:36+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 4.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 14:18:32 UTC (the transfer to the emergency source): worst 58.88 Hz at 14:18:32 UTC, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 14:18:34 UTC, 2 s after the step",
- "preliminary_score": 2.3e-05,
- "evidence": {
- "kind": "low",
- "limit": 59.5,
- "deadband": 0.1,
- "direction": "LOW",
- "units": "Hz",
- "samples": 8,
- "samples_past_limit": 1,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:18:32+00:00",
- "seconds_past_limit": 0.0,
- "worst_value": 58.88,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 40.0
- ],
- [
- "2026-09-21T14:18:40+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:18:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:19:00+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 59.94
- ],
- [
- "2026-09-21T14:19:26+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:19:30+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:19:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:20:02+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:20:16+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:20+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:20:48+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:20:56+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:21:08+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:21:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
+ "window": {
+ "start": "2026-09-21T14:13:19+00:00",
+ "end": "2026-09-21T14:23:33+00:00"
+ },
+ "counts": {
+ "alarm_events": 12,
+ "distinct_conditions": 6,
+ "ranked_items": 1,
+ "consequences_collapsed": 5,
+ "nuisance": 0,
+ "unresolved": 0,
+ "model_call_failures": 0,
+ "journal_entries": 24,
+ "alarm_transitions": 12,
+ "alarms_annunciated": 6,
+ "operator_records": 12,
+ "points_in_alarm": 6,
+ "trend_samples": 5526,
+ "event_ack": 6,
+ "event_alarm": 6,
+ "event_rtn": 6,
+ "event_suppress": 3,
+ "event_unsuppress": 3
+ },
+ "items": [
+ {
+ "point": "SIM-DC/UTIL-1/FAIL",
+ "equipment": "UTIL-1",
+ "signal": "utility_failure",
+ "label": "utility power failure",
+ "domain": "electrical",
+ "priority": 2,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:20:12+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 112.0,
+ "band": "PROMOTED",
+ "rule": "E-P1",
+ "rule_name": "CAUSE_CONFIRMED_BY_TREND",
+ "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 14:18:20 UTC to 14:20:08 UTC, worst value 1, confirming the utility power failure; it ranks as the cause",
+ "preliminary_score": 0.088148,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 67,
+ "samples_past_limit": 55,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:20:08+00:00",
+ "seconds_past_limit": 108.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:02+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:12+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:22+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:04+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:28+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ },
+ "rank": 1,
+ "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 14:18:20 UTC to 14:20:08 UTC (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
+ "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
+ "written_by": "template, no model",
+ "attempts": 1,
+ "consequences": [
+ {
+ "point": "SIM-DC/UPS-A/ONBATT",
+ "equipment": "UPS-A",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/UPS-B/ONBATT",
+ "equipment": "UPS-B",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/RUN",
+ "equipment": "GEN-1",
+ "signal": "generator_start",
+ "label": "generator start",
+ "domain": "electrical",
+ "priority": 4,
+ "start": "2026-09-21T14:18:28+00:00",
+ "end": "2026-09-21T14:20:44+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 136.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:28 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": -0.086713,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 79,
+ "samples_past_limit": 67,
+ "first_past_limit": "2026-09-21T14:18:28+00:00",
+ "last_past_limit": "2026-09-21T14:20:40+00:00",
+ "seconds_past_limit": 132.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/ATS-1/EMERG",
+ "equipment": "ATS-1",
+ "signal": "ats_transfer",
+ "label": "ATS transfer to the emergency source",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:20:42+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 130.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.000752,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 76,
+ "samples_past_limit": 64,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:20:38+00:00",
+ "seconds_past_limit": 126.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/F_LO",
+ "equipment": "GEN-1",
+ "signal": "frequency_low",
+ "label": "generator frequency dip",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:18:36+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 4.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 14:18:32 UTC (the transfer to the emergency source): worst 58.88 Hz at 14:18:32 UTC, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 14:18:34 UTC, 2 s after the step",
+ "preliminary_score": 2.3e-05,
+ "evidence": {
+ "kind": "low",
+ "limit": 59.5,
+ "deadband": 0.1,
+ "direction": "LOW",
+ "units": "Hz",
+ "samples": 8,
+ "samples_past_limit": 1,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:18:32+00:00",
+ "seconds_past_limit": 0.0,
+ "worst_value": 58.88,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 40.0
+ ],
+ [
+ "2026-09-21T14:18:40+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:18:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:19:00+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 59.94
+ ],
+ [
+ "2026-09-21T14:19:26+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:19:30+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:19:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:20:02+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:20:16+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:20+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:20:48+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:20:56+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:21:08+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:21:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": {
+ "measured": true,
+ "reason": null,
+ "basis": "ats_transfer",
+ "step_at": "2026-09-21T14:18:32+00:00",
+ "rated_at": "2026-09-21T14:18:28+00:00",
+ "worst_hz": 58.88,
+ "worst_at": "2026-09-21T14:18:32+00:00",
+ "nominal_hz": 60.0,
+ "below_nominal_hz": 1.12,
+ "tolerance_hz": 0.5,
+ "recovered_at": "2026-09-21T14:18:34+00:00",
+ "recovery_s": 2.0,
+ "window_end": "2026-09-21T14:18:46+00:00"
+ }
+ }
+ }
]
- ],
- "dip": {
- "measured": true,
- "reason": null,
- "basis": "ats_transfer",
- "step_at": "2026-09-21T14:18:32+00:00",
- "rated_at": "2026-09-21T14:18:28+00:00",
- "worst_hz": 58.88,
- "worst_at": "2026-09-21T14:18:32+00:00",
- "nominal_hz": 60.0,
- "below_nominal_hz": 1.12,
- "tolerance_hz": 0.5,
- "recovered_at": "2026-09-21T14:18:34+00:00",
- "recovery_s": 2.0,
- "window_end": "2026-09-21T14:18:46+00:00"
- }
}
- }
- ]
- }
- ],
- "nuisance": [],
- "unresolved": [],
- "elapsed_s": 0.04,
- "writer": {
- "kind": "template",
- "name": "template, no model",
- "model": null
+ ],
+ "nuisance": [],
+ "unresolved": [],
+ "elapsed_s": 0.06,
+ "writer": {
+ "kind": "template",
+ "name": "template, no model",
+ "model": null
+ },
+ "read_only": true
},
- "read_only": true
- },
- "elapsed_ms": 64.0,
- "cached": false
+ "elapsed_ms": 87.6,
+ "cached": false
}
diff --git a/frontend/src/test/triage-outage.json b/frontend/src/test/triage-outage.json
index 2a0dace..9137e94 100644
--- a/frontend/src/test/triage-outage.json
+++ b/frontend/src/test/triage-outage.json
@@ -1,1970 +1,1970 @@
{
- "event": {
- "start": "2026-09-21T14:13:20.000+00:00",
- "end": "2026-09-21T14:23:32.000+00:00",
- "first_alarm": "2026-09-21T14:18:20.000+00:00",
- "last_alarm": "2026-09-21T14:18:32.000+00:00",
- "settled": true
- },
- "zone": {
- "name": "America/New_York",
- "labels": {
- "-04:00": "EDT"
- }
- },
- "triage": {
- "agent_version": "0.2.2",
- "time_zone": {
- "name": "America/New_York",
- "label": "EDT"
+ "event": {
+ "start": "2026-09-21T14:13:20.000+00:00",
+ "end": "2026-09-21T14:23:32.000+00:00",
+ "first_alarm": "2026-09-21T14:18:20.000+00:00",
+ "last_alarm": "2026-09-21T14:18:32.000+00:00",
+ "settled": true
},
- "window": {
- "start": "2026-09-21T14:13:19+00:00",
- "end": "2026-09-21T14:23:33+00:00"
+ "zone": {
+ "name": "America/New_York",
+ "labels": {
+ "-04:00": "EDT"
+ }
},
- "counts": {
- "alarm_events": 12,
- "distinct_conditions": 6,
- "ranked_items": 1,
- "consequences_collapsed": 5,
- "nuisance": 0,
- "unresolved": 0,
- "model_call_failures": 0,
- "journal_entries": 24,
- "alarm_transitions": 12,
- "alarms_annunciated": 6,
- "operator_records": 12,
- "points_in_alarm": 6,
- "trend_samples": 5526,
- "event_ack": 6,
- "event_alarm": 6,
- "event_rtn": 6,
- "event_suppress": 3,
- "event_unsuppress": 3
- },
- "items": [
- {
- "point": "SIM-DC/UTIL-1/FAIL",
- "equipment": "UTIL-1",
- "signal": "utility_failure",
- "label": "utility power failure",
- "domain": "electrical",
- "priority": 2,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:20:12+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 112.0,
- "band": "PROMOTED",
- "rule": "E-P1",
- "rule_name": "CAUSE_CONFIRMED_BY_TREND",
- "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 10:18:20 EDT to 10:20:08 EDT, worst value 1, confirming the utility power failure; it ranks as the cause",
- "preliminary_score": 0.088148,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 67,
- "samples_past_limit": 55,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:20:08+00:00",
- "seconds_past_limit": 108.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:02+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:12+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:22+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:04+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:28+00:00",
- 0.0
- ]
- ],
- "dip": null
+ "triage": {
+ "agent_version": "0.3.0",
+ "time_zone": {
+ "name": "America/New_York",
+ "label": "EDT"
},
- "rank": 1,
- "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 10:18:20 EDT to 10:20:08 EDT (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
- "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
- "written_by": "template, no model",
- "attempts": 1,
- "consequences": [
- {
- "point": "SIM-DC/UPS-A/ONBATT",
- "equipment": "UPS-A",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/UPS-B/ONBATT",
- "equipment": "UPS-B",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/RUN",
- "equipment": "GEN-1",
- "signal": "generator_start",
- "label": "generator start",
- "domain": "electrical",
- "priority": 4,
- "start": "2026-09-21T14:18:28+00:00",
- "end": "2026-09-21T14:20:44+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 136.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:28 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": -0.086713,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 79,
- "samples_past_limit": 67,
- "first_past_limit": "2026-09-21T14:18:28+00:00",
- "last_past_limit": "2026-09-21T14:20:40+00:00",
- "seconds_past_limit": 132.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/ATS-1/EMERG",
- "equipment": "ATS-1",
- "signal": "ats_transfer",
- "label": "ATS transfer to the emergency source",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:20:42+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 130.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.000752,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 76,
- "samples_past_limit": 64,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:20:38+00:00",
- "seconds_past_limit": 126.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/F_LO",
- "equipment": "GEN-1",
- "signal": "frequency_low",
- "label": "generator frequency dip",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:18:36+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 4.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 10:18:32 EDT (the transfer to the emergency source): worst 58.88 Hz at 10:18:32 EDT, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 10:18:34 EDT, 2 s after the step",
- "preliminary_score": 2.3e-05,
- "evidence": {
- "kind": "low",
- "limit": 59.5,
- "deadband": 0.1,
- "direction": "LOW",
- "units": "Hz",
- "samples": 8,
- "samples_past_limit": 1,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:18:32+00:00",
- "seconds_past_limit": 0.0,
- "worst_value": 58.88,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 40.0
- ],
- [
- "2026-09-21T14:18:40+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:18:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:19:00+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 59.94
- ],
- [
- "2026-09-21T14:19:26+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:19:30+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:19:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:20:02+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:20:16+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:20+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:20:48+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:20:56+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:21:08+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:21:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
+ "window": {
+ "start": "2026-09-21T14:13:19+00:00",
+ "end": "2026-09-21T14:23:33+00:00"
+ },
+ "counts": {
+ "alarm_events": 12,
+ "distinct_conditions": 6,
+ "ranked_items": 1,
+ "consequences_collapsed": 5,
+ "nuisance": 0,
+ "unresolved": 0,
+ "model_call_failures": 0,
+ "journal_entries": 24,
+ "alarm_transitions": 12,
+ "alarms_annunciated": 6,
+ "operator_records": 12,
+ "points_in_alarm": 6,
+ "trend_samples": 5526,
+ "event_ack": 6,
+ "event_alarm": 6,
+ "event_rtn": 6,
+ "event_suppress": 3,
+ "event_unsuppress": 3
+ },
+ "items": [
+ {
+ "point": "SIM-DC/UTIL-1/FAIL",
+ "equipment": "UTIL-1",
+ "signal": "utility_failure",
+ "label": "utility power failure",
+ "domain": "electrical",
+ "priority": 2,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:20:12+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 112.0,
+ "band": "PROMOTED",
+ "rule": "E-P1",
+ "rule_name": "CAUSE_CONFIRMED_BY_TREND",
+ "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 10:18:20 EDT to 10:20:08 EDT, worst value 1, confirming the utility power failure; it ranks as the cause",
+ "preliminary_score": 0.088148,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 67,
+ "samples_past_limit": 55,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:20:08+00:00",
+ "seconds_past_limit": 108.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:02+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:12+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:22+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:04+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:28+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ },
+ "rank": 1,
+ "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 10:18:20 EDT to 10:20:08 EDT (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
+ "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
+ "written_by": "template, no model",
+ "attempts": 1,
+ "consequences": [
+ {
+ "point": "SIM-DC/UPS-A/ONBATT",
+ "equipment": "UPS-A",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/UPS-B/ONBATT",
+ "equipment": "UPS-B",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/RUN",
+ "equipment": "GEN-1",
+ "signal": "generator_start",
+ "label": "generator start",
+ "domain": "electrical",
+ "priority": 4,
+ "start": "2026-09-21T14:18:28+00:00",
+ "end": "2026-09-21T14:20:44+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 136.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:28 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": -0.086713,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 79,
+ "samples_past_limit": 67,
+ "first_past_limit": "2026-09-21T14:18:28+00:00",
+ "last_past_limit": "2026-09-21T14:20:40+00:00",
+ "seconds_past_limit": 132.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/ATS-1/EMERG",
+ "equipment": "ATS-1",
+ "signal": "ats_transfer",
+ "label": "ATS transfer to the emergency source",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:20:42+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 130.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.000752,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 76,
+ "samples_past_limit": 64,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:20:38+00:00",
+ "seconds_past_limit": 126.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/F_LO",
+ "equipment": "GEN-1",
+ "signal": "frequency_low",
+ "label": "generator frequency dip",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:18:36+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 4.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 10:18:32 EDT (the transfer to the emergency source): worst 58.88 Hz at 10:18:32 EDT, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 10:18:34 EDT, 2 s after the step",
+ "preliminary_score": 2.3e-05,
+ "evidence": {
+ "kind": "low",
+ "limit": 59.5,
+ "deadband": 0.1,
+ "direction": "LOW",
+ "units": "Hz",
+ "samples": 8,
+ "samples_past_limit": 1,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:18:32+00:00",
+ "seconds_past_limit": 0.0,
+ "worst_value": 58.88,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 40.0
+ ],
+ [
+ "2026-09-21T14:18:40+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:18:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:19:00+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 59.94
+ ],
+ [
+ "2026-09-21T14:19:26+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:19:30+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:19:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:20:02+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:20:16+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:20+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:20:48+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:20:56+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:21:08+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:21:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": {
+ "measured": true,
+ "reason": null,
+ "basis": "ats_transfer",
+ "step_at": "2026-09-21T14:18:32+00:00",
+ "rated_at": "2026-09-21T14:18:28+00:00",
+ "worst_hz": 58.88,
+ "worst_at": "2026-09-21T14:18:32+00:00",
+ "nominal_hz": 60.0,
+ "below_nominal_hz": 1.12,
+ "tolerance_hz": 0.5,
+ "recovered_at": "2026-09-21T14:18:34+00:00",
+ "recovery_s": 2.0,
+ "window_end": "2026-09-21T14:18:46+00:00"
+ }
+ }
+ }
]
- ],
- "dip": {
- "measured": true,
- "reason": null,
- "basis": "ats_transfer",
- "step_at": "2026-09-21T14:18:32+00:00",
- "rated_at": "2026-09-21T14:18:28+00:00",
- "worst_hz": 58.88,
- "worst_at": "2026-09-21T14:18:32+00:00",
- "nominal_hz": 60.0,
- "below_nominal_hz": 1.12,
- "tolerance_hz": 0.5,
- "recovered_at": "2026-09-21T14:18:34+00:00",
- "recovery_s": 2.0,
- "window_end": "2026-09-21T14:18:46+00:00"
- }
}
- }
- ]
- }
- ],
- "nuisance": [],
- "unresolved": [],
- "elapsed_s": 0.046,
- "writer": {
- "kind": "template",
- "name": "template, no model",
- "model": null
+ ],
+ "nuisance": [],
+ "unresolved": [],
+ "elapsed_s": 0.082,
+ "writer": {
+ "kind": "template",
+ "name": "template, no model",
+ "model": null
+ },
+ "read_only": true
},
- "read_only": true
- },
- "elapsed_ms": 64.0,
- "cached": false
+ "elapsed_ms": 126.4,
+ "cached": false
}
From 3c8adce29153f1b9471a811288b622a997131f0b Mon Sep 17 00:00:00 2001
From: AddisonTech
Date: Tue, 20 Oct 2026 17:08:44 +0000
Subject: [PATCH 2/5] Show how the triage agent is graded on the Triage tab
GET /api/triage/grading reads the template writer's eval pass rates from
the pinned agent package, and a small panel on the Triage tab shows them
per grader with a link to the Evals section of the agent's showcase.
---
backend/main.py | 9 +++++
backend/triage.py | 35 ++++++++++++++++-
frontend/src/App.css | 12 ++++++
frontend/src/lib/triage.js | 20 ++++++++++
frontend/src/lib/triage.test.js | 18 ++++++++-
frontend/src/pages/Triage.jsx | 45 +++++++++++++++++++++-
frontend/src/pages/Triage.test.jsx | 33 +++++++++++++++-
frontend/src/services/api.js | 1 +
frontend/src/test/triage-grading.json | 54 +++++++++++++++++++++++++++
9 files changed, 222 insertions(+), 5 deletions(-)
create mode 100644 frontend/src/test/triage-grading.json
diff --git a/backend/main.py b/backend/main.py
index 9e1f57e..55d05d4 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -282,6 +282,15 @@ def triage_event(request: Request, time_zone: Optional[str] = None):
}}
+@app.get("/api/triage/grading")
+def triage_grading():
+ """How the triage agent's writer is graded: its eval pass rates, from the pinned agent."""
+ try:
+ return triage.grading()
+ except triage.AgentUnavailable as exc:
+ raise HTTPException(status_code=503, detail=str(exc))
+
+
class TriageRequest(BaseModel):
start: Optional[str] = None
end: Optional[str] = None
diff --git a/backend/triage.py b/backend/triage.py
index c5b76aa..a30c510 100644
--- a/backend/triage.py
+++ b/backend/triage.py
@@ -4,7 +4,7 @@
list. This module finds the window around the most recent alarm event,
exports the alarm journal and trend history for it (triage_export.py), and
hands that document to the agent, which is installed as a package pinned to
-its 0.2.2 release commit.
+its 0.3.0 release commit.
Light enough for a free hosting tier: the agent is imported on first use
rather than at startup, one run happens at a time, a window that has not
@@ -143,6 +143,39 @@ def run(now: float, start: Optional[float] = None, end: Optional[float] = None,
return value
+GRADED_WRITER = "template"
+
+
+def grading() -> Dict[str, Any]:
+ """How the agent's writer is graded, read from the installed agent.
+
+ The agent ships the latest pass rates of its write-up eval suite in its
+ package. This passes on the template writer's, which is the writer the
+ dashboard runs, with what each grader checks and a link to the agent's
+ showcase page that explains them. Nothing here is computed or stored by
+ the dashboard, so the numbers change only when the pinned agent does.
+ """
+ service = _service()
+ if not hasattr(service, "eval_scorecard"):
+ raise AgentUnavailable("The installed triage agent has no eval scorecard")
+ card = service.eval_scorecard()
+ entry = card["writers"][GRADED_WRITER]
+ return {
+ "agent_version": service.__version__,
+ "writer": GRADED_WRITER,
+ "writer_name": entry["writer_name"],
+ "date": entry["date"],
+ "cases_run": entry["cases_run"],
+ "cases_passed": entry["cases_passed"],
+ "graders": [
+ {"name": name, "what": card["graders"].get(name, ""), **{k: g[k] for k in ("passed", "applicable", "rate")}}
+ for name, g in entry["graders"].items()
+ ],
+ "showcase": card["showcase"],
+ "synthetic": True,
+ }
+
+
def clear_cache():
with _lock:
_cache["key"] = _cache["value"] = None
diff --git a/frontend/src/App.css b/frontend/src/App.css
index dca78dd..411a6d5 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -636,6 +636,17 @@ select:focus, input[type="text"]:focus { border-color: var(--accent); }
.tri-intro { display: flex; flex-direction: column; gap: 10px; max-width: 80ch; color: var(--text-secondary); }
.tri-list { display: flex; flex-direction: column; gap: 14px; }
+
+.tri-grading { padding-block: 12px; }
+.tri-grading-body { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; max-width: 90ch; }
+.tri-grades { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
+.tri-grades li {
+ display: flex; flex-direction: column; gap: 1px; min-width: 0;
+ padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg-elevated);
+}
+.tri-grade-name { font-size: 12px; color: var(--text-secondary); font-weight: 600; }
+.tri-grade-rate { font-size: 18px; font-weight: 650; color: var(--text-primary); }
+.tri-grading-link { display: inline-flex; align-items: center; gap: 4px; color: var(--accent); align-self: flex-start; }
.tri-item {
background: var(--bg-card);
border: 1px solid var(--border);
@@ -750,6 +761,7 @@ select:focus, input[type="text"]:focus { border-color: var(--accent); }
}
@media (max-width: 720px) {
+ .tri-grades { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sidebar { display: none; }
.mobile-only { display: inline-block; }
.topbar { padding: 0 12px; height: 52px; }
diff --git a/frontend/src/lib/triage.js b/frontend/src/lib/triage.js
index d86ff16..30194eb 100644
--- a/frontend/src/lib/triage.js
+++ b/frontend/src/lib/triage.js
@@ -136,3 +136,23 @@ export function chartGeometry(evidence, width, height, pad = { left: 6, right: 6
export function eventFinished(previous, current) {
return !!(previous && !current)
}
+
+// How the agent's writer is graded, from its eval suite (GET /api/triage/grading)
+export const GRADERS = {
+ grounding: 'Grounding',
+ root_cause: 'Root cause',
+ escalation: 'Escalation',
+ uncertainty: 'Uncertainty',
+ next_step: 'Next step',
+ format: 'Format',
+}
+
+export function graderTitle(name) {
+ return GRADERS[name] || capitalize((name || '').replace(/_/g, ' '))
+}
+
+export function passRate(rate) {
+ if (rate == null) return '--'
+ const pct = rate * 100
+ return `${Number.isInteger(pct) ? pct : pct.toFixed(1)}%`
+}
diff --git a/frontend/src/lib/triage.test.js b/frontend/src/lib/triage.test.js
index 50354ea..f9e53de 100644
--- a/frontend/src/lib/triage.test.js
+++ b/frontend/src/lib/triage.test.js
@@ -1,6 +1,7 @@
import { describe, expect, it } from 'vitest'
import {
- chartGeometry, dipText, eventFinished, evidenceText, floodParts, itemWriter, reduction, ruleLabel, seconds, valueText, writerLabel,
+ chartGeometry, dipText, eventFinished, evidenceText, floodParts, graderTitle, itemWriter, passRate, reduction, ruleLabel,
+ seconds, valueText, writerLabel,
} from './triage'
import outage from '../test/triage-outage.json'
import outageUtc from '../test/triage-outage-utc.json'
@@ -95,3 +96,18 @@ describe('frequency dip', () => {
expect(evidenceText(c.evidence, outage.zone)).toBe(dipText(c.evidence.dip, outage.zone))
})
})
+
+describe('grading', () => {
+ it('names each grader in plain words', () => {
+ expect(graderTitle('root_cause')).toBe('Root cause')
+ expect(graderTitle('next_step')).toBe('Next step')
+ expect(graderTitle('something_new')).toBe('Something new')
+ })
+
+ it('writes a pass rate as a percentage', () => {
+ expect(passRate(1)).toBe('100%')
+ expect(passRate(0.9483)).toBe('94.8%')
+ expect(passRate(null)).toBe('--')
+ })
+})
+
diff --git a/frontend/src/pages/Triage.jsx b/frontend/src/pages/Triage.jsx
index 2062b8a..c3d5686 100644
--- a/frontend/src/pages/Triage.jsx
+++ b/frontend/src/pages/Triage.jsx
@@ -1,11 +1,12 @@
import React, { useCallback, useEffect, useRef, useState } from 'react'
import { useLocation, useNavigate } from 'react-router-dom'
-import { ChevronDown, ChevronRight, Download, ListOrdered, Play, RefreshCw, ShieldCheck } from 'lucide-react'
+import { ChevronDown, ChevronRight, Download, ExternalLink, GraduationCap, ListOrdered, Play, RefreshCw, ShieldCheck } from 'lucide-react'
import { api, exportJournalUrl } from '../services/api'
import { PriorityBadge } from '../components/Badges'
import { clockIn, dateTimeIn, viewerZone, zoneLabel } from '../lib/zone'
import {
- capitalize, chartGeometry, evidenceText, floodParts, itemWriter, reduction, ruleLabel, writerLabel,
+ capitalize, chartGeometry, evidenceText, floodParts, graderTitle, itemWriter, passRate, reduction, ruleLabel,
+ writerLabel,
} from '../lib/triage'
const CHART_W = 320
@@ -97,6 +98,42 @@ export function TriageItem({ item, zone }) {
)
}
+// The agent's own eval results for the writer the dashboard runs. Every number
+// comes from the pinned agent package through GET /api/triage/grading.
+export function GradingPanel({ grading, initiallyOpen = false }) {
+ const [open, setOpen] = useState(initiallyOpen)
+ if (!grading) return null
+ return (
+
+
setOpen(o => !o)} aria-expanded={open}>
+ {open ? : }
+ How this agent is graded
+
+ {open && (
+
+
+ The agent's eval suite grades what its {grading.writer} writer puts on each card against a known right
+ answer: {grading.cases_passed} of {grading.cases_run} cases passed every grader in the run of{' '}
+ {grading.date}, agent {grading.agent_version}. The cases are synthetic.
+
+
+ {grading.graders.map(g => (
+
+ {graderTitle(g.name)}
+ {passRate(g.rate)}
+ {g.passed} of {g.applicable}
+
+ ))}
+
+
+ What each grader checks, and the failures it found
+
+
+ )}
+
+ )
+}
+
// The zone the agent wrote its text in, with the labels for its offsets
function zoneOf(data) {
return { name: data.triage.time_zone?.name || data.zone?.name || 'UTC', labels: data.zone?.labels || {} }
@@ -183,6 +220,7 @@ export default function Triage() {
const [data, setData] = useState(null)
const [busy, setBusy] = useState(false)
const [error, setError] = useState(null)
+ const [grading, setGrading] = useState(null)
const autoRan = useRef(false)
const loadEvent = useCallback(() => {
@@ -207,6 +245,7 @@ export default function Triage() {
}, [timeZone])
useEffect(() => { loadEvent() }, [loadEvent])
+ useEffect(() => { api.getTriageGrading().then(setGrading).catch(() => setGrading(null)) }, [])
// Arriving from the "Triage this event" button runs straight away
useEffect(() => {
@@ -271,6 +310,8 @@ export default function Triage() {
)}
+
+
)
}
diff --git a/frontend/src/pages/Triage.test.jsx b/frontend/src/pages/Triage.test.jsx
index 8c34d3b..8da30cd 100644
--- a/frontend/src/pages/Triage.test.jsx
+++ b/frontend/src/pages/Triage.test.jsx
@@ -2,10 +2,11 @@ import React from 'react'
import { renderToStaticMarkup } from 'react-dom/server'
import { MemoryRouter } from 'react-router-dom'
import { describe, expect, it } from 'vitest'
-import Triage, { EvidenceChart, TriageItem, TriageResult, ZoneNote } from './Triage'
+import Triage, { EvidenceChart, GradingPanel, TriageItem, TriageResult, ZoneNote } from './Triage'
import { clockIn, dateTimeIn } from '../lib/zone'
import outage from '../test/triage-outage.json'
import outageUtc from '../test/triage-outage-utc.json'
+import grading from '../test/triage-grading.json'
const render = (el) => renderToStaticMarkup(el)
const text = (html) => html.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ')
@@ -111,3 +112,33 @@ describe('Triage tab times', () => {
expect(ny[2]).toBe(utc[2])
})
})
+
+describe('How this agent is graded', () => {
+ it('is a link that opens a panel', () => {
+ const html = render( )
+ expect(text(html)).toContain('How this agent is graded')
+ expect(html).not.toContain('tri-grades')
+ })
+
+ it('shows the template writer\'s pass rate for every grader, from the agent', () => {
+ const t = text(render( ))
+ expect(grading.graders.length).toBe(6)
+ for (const g of grading.graders) {
+ expect(t).toContain(`${g.passed} of ${g.applicable}`)
+ }
+ expect(t).toContain('Grounding')
+ expect(t).toContain(`agent ${grading.agent_version}`)
+ expect(t).toContain('The cases are synthetic.')
+ })
+
+ it('links to the Evals section of the agent\'s showcase', () => {
+ const html = render( )
+ expect(html).toContain(`href="${grading.showcase}"`)
+ expect(grading.showcase).toMatch(/#evals$/)
+ })
+
+ it('shows nothing without grading data', () => {
+ expect(render( )).toBe('')
+ })
+})
+
diff --git a/frontend/src/services/api.js b/frontend/src/services/api.js
index 0aa140a..f1010cf 100644
--- a/frontend/src/services/api.js
+++ b/frontend/src/services/api.js
@@ -31,6 +31,7 @@ export const api = {
request(`/alarms/${encodeURIComponent(tag)}/shelve`, { method: 'POST', body: { minutes, reason, operator } }),
unshelve: (tag, operator) => request(`/alarms/${encodeURIComponent(tag)}/unshelve`, { method: 'POST', body: { operator } }),
triggerEvent: (name) => request(`/demo/events/${encodeURIComponent(name)}`, { method: 'POST' }),
+ getTriageGrading: () => request('/triage/grading'),
getTriageEvent: (timeZone) => request(`/triage/event?time_zone=${encodeURIComponent(timeZone || 'UTC')}`),
// The first run imports the agent on the server, so allow longer than usual
runTriage: (window) => request('/triage', { method: 'POST', body: window || {}, timeout: 60000 }),
diff --git a/frontend/src/test/triage-grading.json b/frontend/src/test/triage-grading.json
new file mode 100644
index 0000000..20ace8c
--- /dev/null
+++ b/frontend/src/test/triage-grading.json
@@ -0,0 +1,54 @@
+{
+ "agent_version": "0.3.0",
+ "writer": "template",
+ "writer_name": "template, no model",
+ "date": "2026-10-20",
+ "cases_run": 58,
+ "cases_passed": 55,
+ "graders": [
+ {
+ "name": "grounding",
+ "what": "Every point name, number and time on a card has to be in the evidence the writer was given. Anything invented, converted or carried in from elsewhere fails.",
+ "passed": 40,
+ "applicable": 40,
+ "rate": 1.0
+ },
+ {
+ "name": "root_cause",
+ "what": "The write-up names the right cause, says what is wrong with it from the evidence, and never turns a consequence into the cause. With no cause in the evidence, it names none.",
+ "passed": 38,
+ "applicable": 40,
+ "rate": 0.95
+ },
+ {
+ "name": "escalation",
+ "what": "What should escalate gets a card and nothing else does, and no card talks its own escalation down as nuisance or nothing to act on.",
+ "passed": 55,
+ "applicable": 58,
+ "rate": 0.9483
+ },
+ {
+ "name": "uncertainty",
+ "what": "Where evidence is missing or thin the write-up says so: unsupported items stay unresolved, thin cards say what they rest on, and no card guesses a diagnosis, claims certainty, or rules out what it could not check.",
+ "passed": 45,
+ "applicable": 45,
+ "rate": 1.0
+ },
+ {
+ "name": "next_step",
+ "what": "Every card has a next step, it is about that equipment and what the point measures, and it is read only: it observes, and never tells anyone to change, reset, acknowledge or operate anything.",
+ "passed": 40,
+ "applicable": 40,
+ "rate": 1.0
+ },
+ {
+ "name": "format",
+ "what": "Each reply passes the agent's Pydantic schema on the first try, and the reason and the next step are one sentence each, as the prompt asks.",
+ "passed": 40,
+ "applicable": 40,
+ "rate": 1.0
+ }
+ ],
+ "showcase": "https://addisontech.github.io/bms-alarm-triage-agent/#evals",
+ "synthetic": true
+}
From cd120b975e2e1a7247a9ce1636bcf5780c3c1857 Mon Sep 17 00:00:00 2001
From: AddisonTech
Date: Tue, 20 Oct 2026 17:08:44 +0000
Subject: [PATCH 3/5] Release 1.3.0
---
CHANGELOG.md | 33 +++++++++++++++++++++++++++++
README.md | 17 +++++++++++----
backend/config.py | 2 +-
backend/tests/test_api_websocket.py | 2 +-
frontend/package-lock.json | 4 ++--
frontend/package.json | 2 +-
6 files changed, 51 insertions(+), 9 deletions(-)
create mode 100644 CHANGELOG.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..8517756
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,33 @@
+# Changelog
+
+Releases before 1.3.0 are recorded in the git history and their merge
+commits.
+
+## 1.3.0 - 2026-10-20
+
+- **Triage agent 0.3.0.** `backend/requirements.txt` pins the agent to
+ the commit its 0.3.0 release was merged as. 0.3.0 adds an eval suite
+ that grades what the agent's writers put on each card, and ships the
+ latest pass rates in the package.
+- **How this agent is graded.** A small panel at the foot of the Triage
+ tab: the template writer's pass rate on each of the agent's six graders
+ (grounding, root cause, escalation, uncertainty, next step, format),
+ how many of the agent's synthetic cases passed every grader, and a link
+ to the Evals section of the agent's showcase page. Collapsed until
+ opened.
+- **`GET /api/triage/grading`.** Returns those numbers, read from the
+ installed agent with `bms_triage_service.eval_scorecard()`. Nothing is
+ hard-coded in the dashboard; a 503 if the installed agent has no
+ scorecard.
+- **The template's wording is tighter in the agent.** Unexplained
+ electrical alarms now say "no confirmed" cause, as the evidence does,
+ and times past the limit stay in seconds. The live outage card is
+ unchanged: the utility failure first, the other 5 alarms collapsed
+ under it, and the frequency dip measured from the load step (58.88 Hz,
+ 1.12 Hz below 60, back within 0.5 Hz in 2 s).
+- **Fixtures.** The Triage tab's fixtures were rebuilt from the simulator
+ with the new agent by `backend/scripts/make_triage_fixtures.py`, which
+ is now in the repository. Apart from the agent version and run timings
+ they are identical to 1.2.2's.
+
+Verification: backend 85 tests, front end 44 tests, production build.
diff --git a/README.md b/README.md
index cb2f30f..441291f 100644
--- a/README.md
+++ b/README.md
@@ -58,12 +58,13 @@ What else is implemented:
ISA 18.2 alarm handling keeps the list honest, but a utility outage still annunciates six alarms in twelve seconds: utility failure, both UPS systems on battery, the generator running, the transfer switch on the emergency source, and the generator frequency dip when the load lands. Only one of those is the thing that happened.
-The **Triage** tab hands the alarm journal and trend history for the window around the latest event to the [BMS Alarm Triage Agent](https://github.com/AddisonTech/bms-alarm-triage-agent), version 0.2.2, pinned in `backend/requirements.txt` to the commit that release was merged as, and shows what comes back:
+The **Triage** tab hands the alarm journal and trend history for the window around the latest event to the [BMS Alarm Triage Agent](https://github.com/AddisonTech/bms-alarm-triage-agent), version 0.3.0, pinned in `backend/requirements.txt` to the commit that release was merged as, and shows what comes back:
- **Root cause first.** The agent's electrical rule set ranks the cause and folds its consequences under it. A utility failure explains UPS on battery, the generator start, the ATS transfer, and the frequency dip; a voltage sag explains the UPS ride through; a PDU overload explains its own lower stage and the load alarm on the UPS that feeds it; low power factor stands on its own.
- **Trend evidence** for every item, the stretch it spent past its limit, and the rule that ranked it. The generator frequency dip is measured from the load step at the transfer, once the generator is at rated frequency, never across its run up from standstill: worst frequency, how far below 60 Hz, and how long until it was back within 0.5 Hz.
- **A next step**, always a diagnostic one: a verb from a closed list, the item's own equipment as the target, never a control action.
- **Who wrote the text.** A fixed template writes it from each item's own evidence. Claude Haiku writes it only when the server has `TRIAGE_ANTHROPIC_KEY` set, and the same checks apply to every reply either way. The hosted demo has no key, so the demo shows the template.
+- **How the agent is graded.** *How this agent is graded*, at the foot of the Triage tab, opens the template writer's pass rate on each of the agent's six write-up graders (grounding, root cause, escalation, uncertainty, next step, format), with a link to the [Evals section](https://addisontech.github.io/bms-alarm-triage-agent/#evals) of the agent's showcase page that explains them. The numbers come from the pinned agent package (`bms_triage_service.eval_scorecard()`), never from the dashboard, so they change only when the pin does. The agent's eval cases are synthetic.
After a demo event finishes, a *Triage this event* button appears under the top bar. On the simulated utility outage the journal holds 24 entries (6 alarms, 6 returns, and 12 acknowledgements and suppressions) and the agent returns 1 ranked item, the utility failure, with the other 5 alarms under it. A run takes about 65 ms once the agent is loaded; the first one loads it on demand so startup stays fast on the free tier.
@@ -83,6 +84,7 @@ It is read only. The agent gets a copy of the journal and history for the window
| `GET /api/export/journal?minutes=60` | Journal and trend history for the last N minutes (or `start` and `end`, ISO 8601), up to 24 hours |
| `GET /api/triage/event` | The latest alarm event: first and last alarm and its window |
| `POST /api/triage` | Run the agent on the latest event (or a `start` and `end` window) and return the ranked list |
+| `GET /api/triage/grading` | The pinned agent's eval pass rates for the template writer, per grader |
---
@@ -150,7 +152,7 @@ Demo scenarios:
| API and WebSocket | Python 3.13, FastAPI 0.111, Uvicorn |
| Storage | SQLite (WAL mode) |
| Field protocol | Modbus TCP via pymodbus (optional) |
-| Alarm triage | BMS Alarm Triage Agent 0.2.2, pinned to its release commit |
+| Alarm triage | BMS Alarm Triage Agent 0.3.0, pinned to its release commit |
| Front end | React 18, Vite 5, React Router 6 |
| Charts and icons | Recharts (trend pages), inline SVG, Lucide |
| Tests | pytest, FastAPI TestClient, Vitest |
@@ -191,7 +193,13 @@ cd backend && pip install -r requirements-dev.txt && python -m pytest -q
cd frontend && npm test
```
-The backend suite covers the simulator (physical consistency, the outage sequence, every scenario), the alarm state machine (every ISA 18.2 transition, deadband, delays, shelving, suppression, KPIs), the WebSocket feed (snapshot, streaming, ping, live alarm updates after operator actions), the REST API, Modbus decoding, and the triage tie-in (the journal export checked against the agent's own parser, every demo scenario triaged from the real simulator, the event window, scan rate history during events, and the export and triage endpoints). The front end suite covers the feed reducer, URL handling, and the Triage tab (root cause first, consequences collapsed, trend evidence, the writer label).
+The backend suite covers the simulator (physical consistency, the outage sequence, every scenario), the alarm state machine (every ISA 18.2 transition, deadband, delays, shelving, suppression, KPIs), the WebSocket feed (snapshot, streaming, ping, live alarm updates after operator actions), the REST API, Modbus decoding, and the triage tie-in (the journal export checked against the agent's own parser, every demo scenario triaged from the real simulator, the event window, scan rate history during events, the export and triage endpoints, and the grading read from the agent package). The front end suite covers the feed reducer, URL handling, and the Triage tab (root cause first, consequences collapsed, trend evidence, the writer label, the grading panel).
+
+The Triage tab's test fixtures are a simulated outage triaged by the pinned agent. After changing the pin, rebuild them:
+
+```bash
+cd backend && python scripts/make_triage_fixtures.py
+```
---
@@ -251,8 +259,9 @@ backend/
config.py Settings, topology, master alarm database
database.py SQLite history and alarm journal
triage_export.py Alarm journal export in the triage agent's format, event window
- triage.py Runs the triage agent on the latest event
+ triage.py Runs the triage agent on the latest event, and reads its grading
modbus_source.py Modbus TCP polling (optional)
+ scripts/ Rebuilds the Triage tab's test fixtures from the pinned agent
tests/
frontend/
src/services/ WebSocket feed, REST client
diff --git a/backend/config.py b/backend/config.py
index a853b35..eb336b0 100644
--- a/backend/config.py
+++ b/backend/config.py
@@ -6,7 +6,7 @@
import os
-VERSION = "1.2.2"
+VERSION = "1.3.0"
def _env_bool(name: str, default: bool) -> bool:
diff --git a/backend/tests/test_api_websocket.py b/backend/tests/test_api_websocket.py
index d4216ba..ac3f567 100644
--- a/backend/tests/test_api_websocket.py
+++ b/backend/tests/test_api_websocket.py
@@ -26,7 +26,7 @@ def test_health(client):
body = client.get("/api/health").json()
assert body["status"] == "ok"
assert body["data_source"] == "simulator"
- assert body["version"] == "1.2.2"
+ assert body["version"] == "1.3.0"
def test_websocket_sends_snapshot_on_connect(client):
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index f2dc6c7..c2052d0 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "power-dashboard",
- "version": "1.2.2",
+ "version": "1.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "power-dashboard",
- "version": "1.2.2",
+ "version": "1.3.0",
"dependencies": {
"lucide-react": "^0.379.0",
"react": "^18.3.1",
diff --git a/frontend/package.json b/frontend/package.json
index 23de880..86eec76 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "power-dashboard",
"private": true,
- "version": "1.2.2",
+ "version": "1.3.0",
"type": "module",
"scripts": {
"dev": "vite",
From 83cd0aa0ce86faaff6f7b404297905abd5d5857d Mon Sep 17 00:00:00 2001
From: AddisonTech
Date: Tue, 20 Oct 2026 18:05:29 +0000
Subject: [PATCH 4/5] Pin the triage agent to its 0.3.0 merge commit on GitHub
---
CHANGELOG.md | 4 ++--
backend/requirements.txt | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8517756..d3a13b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,8 +6,8 @@ commits.
## 1.3.0 - 2026-10-20
- **Triage agent 0.3.0.** `backend/requirements.txt` pins the agent to
- the commit its 0.3.0 release was merged as. 0.3.0 adds an eval suite
- that grades what the agent's writers put on each card, and ships the
+ the commit its 0.3.0 release was merged as (`cc5f707`). 0.3.0 adds an
+ eval suite that grades what the agent's writers put on each card, and ships the
latest pass rates in the package.
- **How this agent is graded.** A small panel at the foot of the Triage
tab: the template writer's pass rate on each of the agent's six graders
diff --git a/backend/requirements.txt b/backend/requirements.txt
index f17b905..f5a937a 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -1,4 +1,4 @@
fastapi==0.111.0
uvicorn[standard]==0.29.0
pydantic==2.14.1
-bms-alarm-triage-agent @ git+https://github.com/AddisonTech/bms-alarm-triage-agent@467681d66a15716376168fb957ee416cb1d2e0d3
+bms-alarm-triage-agent @ git+https://github.com/AddisonTech/bms-alarm-triage-agent@cc5f707f329a20862dbb19318e6d428c8162bcfd
From 91b15e6b3bc57dd146f55ff5a61726a0557cd1ab Mon Sep 17 00:00:00 2001
From: AddisonTech
Date: Tue, 20 Oct 2026 18:06:05 +0000
Subject: [PATCH 5/5] Write the triage fixtures in their existing one-space
layout
The fixture script indented by two spaces, which rewrote every line of
both outage fixtures. With the original layout their diff from 1.2.2 is
the agent version and the run timings.
---
backend/scripts/make_triage_fixtures.py | 2 +-
frontend/src/test/triage-grading.json | 104 +-
frontend/src/test/triage-outage-utc.json | 3924 +++++++++++-----------
frontend/src/test/triage-outage.json | 3924 +++++++++++-----------
4 files changed, 3977 insertions(+), 3977 deletions(-)
diff --git a/backend/scripts/make_triage_fixtures.py b/backend/scripts/make_triage_fixtures.py
index b0cd09b..58d6742 100644
--- a/backend/scripts/make_triage_fixtures.py
+++ b/backend/scripts/make_triage_fixtures.py
@@ -35,7 +35,7 @@
def write(name: str, data) -> None:
path = OUT / name
with path.open("w", encoding="utf-8", newline="\n") as handle:
- json.dump(data, handle, indent=2, ensure_ascii=True)
+ json.dump(data, handle, indent=1, ensure_ascii=True)
handle.write("\n")
print("wrote %s" % path.relative_to(BACKEND.parent))
diff --git a/frontend/src/test/triage-grading.json b/frontend/src/test/triage-grading.json
index 20ace8c..c2c986d 100644
--- a/frontend/src/test/triage-grading.json
+++ b/frontend/src/test/triage-grading.json
@@ -1,54 +1,54 @@
{
- "agent_version": "0.3.0",
- "writer": "template",
- "writer_name": "template, no model",
- "date": "2026-10-20",
- "cases_run": 58,
- "cases_passed": 55,
- "graders": [
- {
- "name": "grounding",
- "what": "Every point name, number and time on a card has to be in the evidence the writer was given. Anything invented, converted or carried in from elsewhere fails.",
- "passed": 40,
- "applicable": 40,
- "rate": 1.0
- },
- {
- "name": "root_cause",
- "what": "The write-up names the right cause, says what is wrong with it from the evidence, and never turns a consequence into the cause. With no cause in the evidence, it names none.",
- "passed": 38,
- "applicable": 40,
- "rate": 0.95
- },
- {
- "name": "escalation",
- "what": "What should escalate gets a card and nothing else does, and no card talks its own escalation down as nuisance or nothing to act on.",
- "passed": 55,
- "applicable": 58,
- "rate": 0.9483
- },
- {
- "name": "uncertainty",
- "what": "Where evidence is missing or thin the write-up says so: unsupported items stay unresolved, thin cards say what they rest on, and no card guesses a diagnosis, claims certainty, or rules out what it could not check.",
- "passed": 45,
- "applicable": 45,
- "rate": 1.0
- },
- {
- "name": "next_step",
- "what": "Every card has a next step, it is about that equipment and what the point measures, and it is read only: it observes, and never tells anyone to change, reset, acknowledge or operate anything.",
- "passed": 40,
- "applicable": 40,
- "rate": 1.0
- },
- {
- "name": "format",
- "what": "Each reply passes the agent's Pydantic schema on the first try, and the reason and the next step are one sentence each, as the prompt asks.",
- "passed": 40,
- "applicable": 40,
- "rate": 1.0
- }
- ],
- "showcase": "https://addisontech.github.io/bms-alarm-triage-agent/#evals",
- "synthetic": true
+ "agent_version": "0.3.0",
+ "writer": "template",
+ "writer_name": "template, no model",
+ "date": "2026-10-20",
+ "cases_run": 58,
+ "cases_passed": 55,
+ "graders": [
+ {
+ "name": "grounding",
+ "what": "Every point name, number and time on a card has to be in the evidence the writer was given. Anything invented, converted or carried in from elsewhere fails.",
+ "passed": 40,
+ "applicable": 40,
+ "rate": 1.0
+ },
+ {
+ "name": "root_cause",
+ "what": "The write-up names the right cause, says what is wrong with it from the evidence, and never turns a consequence into the cause. With no cause in the evidence, it names none.",
+ "passed": 38,
+ "applicable": 40,
+ "rate": 0.95
+ },
+ {
+ "name": "escalation",
+ "what": "What should escalate gets a card and nothing else does, and no card talks its own escalation down as nuisance or nothing to act on.",
+ "passed": 55,
+ "applicable": 58,
+ "rate": 0.9483
+ },
+ {
+ "name": "uncertainty",
+ "what": "Where evidence is missing or thin the write-up says so: unsupported items stay unresolved, thin cards say what they rest on, and no card guesses a diagnosis, claims certainty, or rules out what it could not check.",
+ "passed": 45,
+ "applicable": 45,
+ "rate": 1.0
+ },
+ {
+ "name": "next_step",
+ "what": "Every card has a next step, it is about that equipment and what the point measures, and it is read only: it observes, and never tells anyone to change, reset, acknowledge or operate anything.",
+ "passed": 40,
+ "applicable": 40,
+ "rate": 1.0
+ },
+ {
+ "name": "format",
+ "what": "Each reply passes the agent's Pydantic schema on the first try, and the reason and the next step are one sentence each, as the prompt asks.",
+ "passed": 40,
+ "applicable": 40,
+ "rate": 1.0
+ }
+ ],
+ "showcase": "https://addisontech.github.io/bms-alarm-triage-agent/#evals",
+ "synthetic": true
}
diff --git a/frontend/src/test/triage-outage-utc.json b/frontend/src/test/triage-outage-utc.json
index 34bed5c..4f3c091 100644
--- a/frontend/src/test/triage-outage-utc.json
+++ b/frontend/src/test/triage-outage-utc.json
@@ -1,1970 +1,1970 @@
{
- "event": {
- "start": "2026-09-21T14:13:20.000+00:00",
- "end": "2026-09-21T14:23:32.000+00:00",
- "first_alarm": "2026-09-21T14:18:20.000+00:00",
- "last_alarm": "2026-09-21T14:18:32.000+00:00",
- "settled": true
+ "event": {
+ "start": "2026-09-21T14:13:20.000+00:00",
+ "end": "2026-09-21T14:23:32.000+00:00",
+ "first_alarm": "2026-09-21T14:18:20.000+00:00",
+ "last_alarm": "2026-09-21T14:18:32.000+00:00",
+ "settled": true
+ },
+ "zone": {
+ "name": "UTC",
+ "labels": {
+ "+00:00": "UTC"
+ }
+ },
+ "triage": {
+ "agent_version": "0.3.0",
+ "time_zone": {
+ "name": "UTC",
+ "label": "UTC"
},
- "zone": {
- "name": "UTC",
- "labels": {
- "+00:00": "UTC"
- }
+ "window": {
+ "start": "2026-09-21T14:13:19+00:00",
+ "end": "2026-09-21T14:23:33+00:00"
},
- "triage": {
- "agent_version": "0.3.0",
- "time_zone": {
- "name": "UTC",
- "label": "UTC"
- },
- "window": {
- "start": "2026-09-21T14:13:19+00:00",
- "end": "2026-09-21T14:23:33+00:00"
- },
- "counts": {
- "alarm_events": 12,
- "distinct_conditions": 6,
- "ranked_items": 1,
- "consequences_collapsed": 5,
- "nuisance": 0,
- "unresolved": 0,
- "model_call_failures": 0,
- "journal_entries": 24,
- "alarm_transitions": 12,
- "alarms_annunciated": 6,
- "operator_records": 12,
- "points_in_alarm": 6,
- "trend_samples": 5526,
- "event_ack": 6,
- "event_alarm": 6,
- "event_rtn": 6,
- "event_suppress": 3,
- "event_unsuppress": 3
+ "counts": {
+ "alarm_events": 12,
+ "distinct_conditions": 6,
+ "ranked_items": 1,
+ "consequences_collapsed": 5,
+ "nuisance": 0,
+ "unresolved": 0,
+ "model_call_failures": 0,
+ "journal_entries": 24,
+ "alarm_transitions": 12,
+ "alarms_annunciated": 6,
+ "operator_records": 12,
+ "points_in_alarm": 6,
+ "trend_samples": 5526,
+ "event_ack": 6,
+ "event_alarm": 6,
+ "event_rtn": 6,
+ "event_suppress": 3,
+ "event_unsuppress": 3
+ },
+ "items": [
+ {
+ "point": "SIM-DC/UTIL-1/FAIL",
+ "equipment": "UTIL-1",
+ "signal": "utility_failure",
+ "label": "utility power failure",
+ "domain": "electrical",
+ "priority": 2,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:20:12+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 112.0,
+ "band": "PROMOTED",
+ "rule": "E-P1",
+ "rule_name": "CAUSE_CONFIRMED_BY_TREND",
+ "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 14:18:20 UTC to 14:20:08 UTC, worst value 1, confirming the utility power failure; it ranks as the cause",
+ "preliminary_score": 0.088148,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 67,
+ "samples_past_limit": 55,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:20:08+00:00",
+ "seconds_past_limit": 108.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:02+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:12+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:22+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:04+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:28+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
},
- "items": [
- {
- "point": "SIM-DC/UTIL-1/FAIL",
- "equipment": "UTIL-1",
- "signal": "utility_failure",
- "label": "utility power failure",
- "domain": "electrical",
- "priority": 2,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:20:12+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 112.0,
- "band": "PROMOTED",
- "rule": "E-P1",
- "rule_name": "CAUSE_CONFIRMED_BY_TREND",
- "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 14:18:20 UTC to 14:20:08 UTC, worst value 1, confirming the utility power failure; it ranks as the cause",
- "preliminary_score": 0.088148,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 67,
- "samples_past_limit": 55,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:20:08+00:00",
- "seconds_past_limit": 108.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:02+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:12+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:22+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:04+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:28+00:00",
- 0.0
- ]
- ],
- "dip": null
- },
- "rank": 1,
- "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 14:18:20 UTC to 14:20:08 UTC (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
- "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
- "written_by": "template, no model",
- "attempts": 1,
- "consequences": [
- {
- "point": "SIM-DC/UPS-A/ONBATT",
- "equipment": "UPS-A",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/UPS-B/ONBATT",
- "equipment": "UPS-B",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/RUN",
- "equipment": "GEN-1",
- "signal": "generator_start",
- "label": "generator start",
- "domain": "electrical",
- "priority": 4,
- "start": "2026-09-21T14:18:28+00:00",
- "end": "2026-09-21T14:20:44+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 136.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:28 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": -0.086713,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 79,
- "samples_past_limit": 67,
- "first_past_limit": "2026-09-21T14:18:28+00:00",
- "last_past_limit": "2026-09-21T14:20:40+00:00",
- "seconds_past_limit": 132.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/ATS-1/EMERG",
- "equipment": "ATS-1",
- "signal": "ats_transfer",
- "label": "ATS transfer to the emergency source",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:20:42+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 130.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.000752,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 76,
- "samples_past_limit": 64,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:20:38+00:00",
- "seconds_past_limit": 126.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/F_LO",
- "equipment": "GEN-1",
- "signal": "frequency_low",
- "label": "generator frequency dip",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:18:36+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 4.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 14:18:32 UTC (the transfer to the emergency source): worst 58.88 Hz at 14:18:32 UTC, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 14:18:34 UTC, 2 s after the step",
- "preliminary_score": 2.3e-05,
- "evidence": {
- "kind": "low",
- "limit": 59.5,
- "deadband": 0.1,
- "direction": "LOW",
- "units": "Hz",
- "samples": 8,
- "samples_past_limit": 1,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:18:32+00:00",
- "seconds_past_limit": 0.0,
- "worst_value": 58.88,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 40.0
- ],
- [
- "2026-09-21T14:18:40+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:18:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:19:00+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 59.94
- ],
- [
- "2026-09-21T14:19:26+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:19:30+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:19:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:20:02+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:20:16+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:20+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:20:48+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:20:56+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:21:08+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:21:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": {
- "measured": true,
- "reason": null,
- "basis": "ats_transfer",
- "step_at": "2026-09-21T14:18:32+00:00",
- "rated_at": "2026-09-21T14:18:28+00:00",
- "worst_hz": 58.88,
- "worst_at": "2026-09-21T14:18:32+00:00",
- "nominal_hz": 60.0,
- "below_nominal_hz": 1.12,
- "tolerance_hz": 0.5,
- "recovered_at": "2026-09-21T14:18:34+00:00",
- "recovery_s": 2.0,
- "window_end": "2026-09-21T14:18:46+00:00"
- }
- }
- }
+ "rank": 1,
+ "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 14:18:20 UTC to 14:20:08 UTC (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
+ "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
+ "written_by": "template, no model",
+ "attempts": 1,
+ "consequences": [
+ {
+ "point": "SIM-DC/UPS-A/ONBATT",
+ "equipment": "UPS-A",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
]
+ ],
+ "dip": null
}
- ],
- "nuisance": [],
- "unresolved": [],
- "elapsed_s": 0.06,
- "writer": {
- "kind": "template",
- "name": "template, no model",
- "model": null
- },
- "read_only": true
+ },
+ {
+ "point": "SIM-DC/UPS-B/ONBATT",
+ "equipment": "UPS-B",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:20 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/RUN",
+ "equipment": "GEN-1",
+ "signal": "generator_start",
+ "label": "generator start",
+ "domain": "electrical",
+ "priority": 4,
+ "start": "2026-09-21T14:18:28+00:00",
+ "end": "2026-09-21T14:20:44+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 136.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:28 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": -0.086713,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 79,
+ "samples_past_limit": 67,
+ "first_past_limit": "2026-09-21T14:18:28+00:00",
+ "last_past_limit": "2026-09-21T14:20:40+00:00",
+ "seconds_past_limit": 132.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/ATS-1/EMERG",
+ "equipment": "ATS-1",
+ "signal": "ats_transfer",
+ "label": "ATS transfer to the emergency source",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:20:42+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 130.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.000752,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 76,
+ "samples_past_limit": 64,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:20:38+00:00",
+ "seconds_past_limit": 126.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/F_LO",
+ "equipment": "GEN-1",
+ "signal": "frequency_low",
+ "label": "generator frequency dip",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:18:36+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 4.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 14:18:32 UTC, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 14:18:32 UTC (the transfer to the emergency source): worst 58.88 Hz at 14:18:32 UTC, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 14:18:34 UTC, 2 s after the step",
+ "preliminary_score": 2.3e-05,
+ "evidence": {
+ "kind": "low",
+ "limit": 59.5,
+ "deadband": 0.1,
+ "direction": "LOW",
+ "units": "Hz",
+ "samples": 8,
+ "samples_past_limit": 1,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:18:32+00:00",
+ "seconds_past_limit": 0.0,
+ "worst_value": 58.88,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 40.0
+ ],
+ [
+ "2026-09-21T14:18:40+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:18:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:19:00+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 59.94
+ ],
+ [
+ "2026-09-21T14:19:26+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:19:30+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:19:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:20:02+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:20:16+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:20+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:20:48+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:20:56+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:21:08+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:21:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": {
+ "measured": true,
+ "reason": null,
+ "basis": "ats_transfer",
+ "step_at": "2026-09-21T14:18:32+00:00",
+ "rated_at": "2026-09-21T14:18:28+00:00",
+ "worst_hz": 58.88,
+ "worst_at": "2026-09-21T14:18:32+00:00",
+ "nominal_hz": 60.0,
+ "below_nominal_hz": 1.12,
+ "tolerance_hz": 0.5,
+ "recovered_at": "2026-09-21T14:18:34+00:00",
+ "recovery_s": 2.0,
+ "window_end": "2026-09-21T14:18:46+00:00"
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "nuisance": [],
+ "unresolved": [],
+ "elapsed_s": 0.054,
+ "writer": {
+ "kind": "template",
+ "name": "template, no model",
+ "model": null
},
- "elapsed_ms": 87.6,
- "cached": false
+ "read_only": true
+ },
+ "elapsed_ms": 82.4,
+ "cached": false
}
diff --git a/frontend/src/test/triage-outage.json b/frontend/src/test/triage-outage.json
index 9137e94..bcbe31c 100644
--- a/frontend/src/test/triage-outage.json
+++ b/frontend/src/test/triage-outage.json
@@ -1,1970 +1,1970 @@
{
- "event": {
- "start": "2026-09-21T14:13:20.000+00:00",
- "end": "2026-09-21T14:23:32.000+00:00",
- "first_alarm": "2026-09-21T14:18:20.000+00:00",
- "last_alarm": "2026-09-21T14:18:32.000+00:00",
- "settled": true
+ "event": {
+ "start": "2026-09-21T14:13:20.000+00:00",
+ "end": "2026-09-21T14:23:32.000+00:00",
+ "first_alarm": "2026-09-21T14:18:20.000+00:00",
+ "last_alarm": "2026-09-21T14:18:32.000+00:00",
+ "settled": true
+ },
+ "zone": {
+ "name": "America/New_York",
+ "labels": {
+ "-04:00": "EDT"
+ }
+ },
+ "triage": {
+ "agent_version": "0.3.0",
+ "time_zone": {
+ "name": "America/New_York",
+ "label": "EDT"
},
- "zone": {
- "name": "America/New_York",
- "labels": {
- "-04:00": "EDT"
- }
+ "window": {
+ "start": "2026-09-21T14:13:19+00:00",
+ "end": "2026-09-21T14:23:33+00:00"
},
- "triage": {
- "agent_version": "0.3.0",
- "time_zone": {
- "name": "America/New_York",
- "label": "EDT"
- },
- "window": {
- "start": "2026-09-21T14:13:19+00:00",
- "end": "2026-09-21T14:23:33+00:00"
- },
- "counts": {
- "alarm_events": 12,
- "distinct_conditions": 6,
- "ranked_items": 1,
- "consequences_collapsed": 5,
- "nuisance": 0,
- "unresolved": 0,
- "model_call_failures": 0,
- "journal_entries": 24,
- "alarm_transitions": 12,
- "alarms_annunciated": 6,
- "operator_records": 12,
- "points_in_alarm": 6,
- "trend_samples": 5526,
- "event_ack": 6,
- "event_alarm": 6,
- "event_rtn": 6,
- "event_suppress": 3,
- "event_unsuppress": 3
+ "counts": {
+ "alarm_events": 12,
+ "distinct_conditions": 6,
+ "ranked_items": 1,
+ "consequences_collapsed": 5,
+ "nuisance": 0,
+ "unresolved": 0,
+ "model_call_failures": 0,
+ "journal_entries": 24,
+ "alarm_transitions": 12,
+ "alarms_annunciated": 6,
+ "operator_records": 12,
+ "points_in_alarm": 6,
+ "trend_samples": 5526,
+ "event_ack": 6,
+ "event_alarm": 6,
+ "event_rtn": 6,
+ "event_suppress": 3,
+ "event_unsuppress": 3
+ },
+ "items": [
+ {
+ "point": "SIM-DC/UTIL-1/FAIL",
+ "equipment": "UTIL-1",
+ "signal": "utility_failure",
+ "label": "utility power failure",
+ "domain": "electrical",
+ "priority": 2,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:20:12+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 112.0,
+ "band": "PROMOTED",
+ "rule": "E-P1",
+ "rule_name": "CAUSE_CONFIRMED_BY_TREND",
+ "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 10:18:20 EDT to 10:20:08 EDT, worst value 1, confirming the utility power failure; it ranks as the cause",
+ "preliminary_score": 0.088148,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 67,
+ "samples_past_limit": 55,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:20:08+00:00",
+ "seconds_past_limit": 108.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:02+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:12+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:22+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:42+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:52+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:04+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:26+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:28+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
},
- "items": [
- {
- "point": "SIM-DC/UTIL-1/FAIL",
- "equipment": "UTIL-1",
- "signal": "utility_failure",
- "label": "utility power failure",
- "domain": "electrical",
- "priority": 2,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:20:12+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 112.0,
- "band": "PROMOTED",
- "rule": "E-P1",
- "rule_name": "CAUSE_CONFIRMED_BY_TREND",
- "finding": "the trend shows it past its limit in 55 of 67 samples around the alarm, 10:18:20 EDT to 10:20:08 EDT, worst value 1, confirming the utility power failure; it ranks as the cause",
- "preliminary_score": 0.088148,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 67,
- "samples_past_limit": 55,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:20:08+00:00",
- "seconds_past_limit": 108.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:02+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:12+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:22+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:42+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:52+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:04+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:26+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:28+00:00",
- 0.0
- ]
- ],
- "dip": null
- },
- "rank": 1,
- "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 10:18:20 EDT to 10:20:08 EDT (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
- "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
- "written_by": "template, no model",
- "attempts": 1,
- "consequences": [
- {
- "point": "SIM-DC/UPS-A/ONBATT",
- "equipment": "UPS-A",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/UPS-B/ONBATT",
- "equipment": "UPS-B",
- "signal": "ups_on_battery",
- "label": "UPS on battery",
- "domain": "electrical",
- "priority": 1,
- "start": "2026-09-21T14:18:20+00:00",
- "end": "2026-09-21T14:18:38+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 18.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.175104,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 20,
- "samples_past_limit": 8,
- "first_past_limit": "2026-09-21T14:18:20+00:00",
- "last_past_limit": "2026-09-21T14:18:34+00:00",
- "seconds_past_limit": 14.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:20+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/RUN",
- "equipment": "GEN-1",
- "signal": "generator_start",
- "label": "generator start",
- "domain": "electrical",
- "priority": 4,
- "start": "2026-09-21T14:18:28+00:00",
- "end": "2026-09-21T14:20:44+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 136.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:28 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": -0.086713,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 79,
- "samples_past_limit": 67,
- "first_past_limit": "2026-09-21T14:18:28+00:00",
- "last_past_limit": "2026-09-21T14:20:40+00:00",
- "seconds_past_limit": 132.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/ATS-1/EMERG",
- "equipment": "ATS-1",
- "signal": "ats_transfer",
- "label": "ATS transfer to the emergency source",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:20:42+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 130.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
- "preliminary_score": 0.000752,
- "evidence": {
- "kind": "discrete",
- "limit": 0.5,
- "deadband": 0.5,
- "direction": "HIGH",
- "units": "",
- "samples": 76,
- "samples_past_limit": 64,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:20:38+00:00",
- "seconds_past_limit": 126.0,
- "worst_value": 1.0,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:32+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:36+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:46+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:18:56+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:48+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:19:58+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:08+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:18+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 1.0
- ],
- [
- "2026-09-21T14:20:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:20:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": null
- }
- },
- {
- "point": "SIM-DC/GEN-1/F_LO",
- "equipment": "GEN-1",
- "signal": "frequency_low",
- "label": "generator frequency dip",
- "domain": "electrical",
- "priority": 3,
- "start": "2026-09-21T14:18:32+00:00",
- "end": "2026-09-21T14:18:36+00:00",
- "events": 2,
- "alarms": 1,
- "returns": 1,
- "seconds_in_alarm": 4.0,
- "band": "EXPLAINED",
- "rule": "E-C1",
- "rule_name": "EXPLAINED_BY_CAUSE",
- "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 10:18:32 EDT (the transfer to the emergency source): worst 58.88 Hz at 10:18:32 EDT, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 10:18:34 EDT, 2 s after the step",
- "preliminary_score": 2.3e-05,
- "evidence": {
- "kind": "low",
- "limit": 59.5,
- "deadband": 0.1,
- "direction": "LOW",
- "units": "Hz",
- "samples": 8,
- "samples_past_limit": 1,
- "first_past_limit": "2026-09-21T14:18:32+00:00",
- "last_past_limit": "2026-09-21T14:18:32+00:00",
- "seconds_past_limit": 0.0,
- "worst_value": 58.88,
- "trend": [
- [
- "2026-09-21T14:13:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:13:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:10+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:14:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:15:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:44+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:16:54+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:04+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:14+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:24+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:34+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:46+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:17:56+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:06+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:16+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:18:26+00:00",
- 40.0
- ],
- [
- "2026-09-21T14:18:40+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:18:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:19:00+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:19:06+00:00",
- 59.94
- ],
- [
- "2026-09-21T14:19:26+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:19:30+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:19:38+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:19:50+00:00",
- 59.99
- ],
- [
- "2026-09-21T14:20:02+00:00",
- 59.97
- ],
- [
- "2026-09-21T14:20:16+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:20+00:00",
- 59.93
- ],
- [
- "2026-09-21T14:20:28+00:00",
- 59.92
- ],
- [
- "2026-09-21T14:20:48+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:20:56+00:00",
- 59.96
- ],
- [
- "2026-09-21T14:21:08+00:00",
- 59.95
- ],
- [
- "2026-09-21T14:21:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:20+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:30+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:40+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:21:50+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:00+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:22+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:32+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:42+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:22:52+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:02+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:12+00:00",
- 0.0
- ],
- [
- "2026-09-21T14:23:22+00:00",
- 0.0
- ]
- ],
- "dip": {
- "measured": true,
- "reason": null,
- "basis": "ats_transfer",
- "step_at": "2026-09-21T14:18:32+00:00",
- "rated_at": "2026-09-21T14:18:28+00:00",
- "worst_hz": 58.88,
- "worst_at": "2026-09-21T14:18:32+00:00",
- "nominal_hz": 60.0,
- "below_nominal_hz": 1.12,
- "tolerance_hz": 0.5,
- "recovered_at": "2026-09-21T14:18:34+00:00",
- "recovery_s": 2.0,
- "window_end": "2026-09-21T14:18:46+00:00"
- }
- }
- }
+ "rank": 1,
+ "reason": "Utility power failure at UTIL-1 is confirmed in the trend from 10:18:20 EDT to 10:20:08 EDT (about 108 seconds), and it accounts for 5 other alarms: UPS on battery at UPS-A, UPS on battery at UPS-B, generator start at GEN-1, ATS transfer to the emergency source at ATS-1, generator frequency dip at GEN-1.",
+ "next_step": "Review UTIL-1: the utility voltage trend from loss to return, confirm the generator carried the load and both UPS batteries recovered their charge, and note the outage times for the utility report.",
+ "written_by": "template, no model",
+ "attempts": 1,
+ "consequences": [
+ {
+ "point": "SIM-DC/UPS-A/ONBATT",
+ "equipment": "UPS-A",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
]
+ ],
+ "dip": null
}
- ],
- "nuisance": [],
- "unresolved": [],
- "elapsed_s": 0.082,
- "writer": {
- "kind": "template",
- "name": "template, no model",
- "model": null
- },
- "read_only": true
+ },
+ {
+ "point": "SIM-DC/UPS-B/ONBATT",
+ "equipment": "UPS-B",
+ "signal": "ups_on_battery",
+ "label": "UPS on battery",
+ "domain": "electrical",
+ "priority": 1,
+ "start": "2026-09-21T14:18:20+00:00",
+ "end": "2026-09-21T14:18:38+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 18.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:20 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.175104,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 20,
+ "samples_past_limit": 8,
+ "first_past_limit": "2026-09-21T14:18:20+00:00",
+ "last_past_limit": "2026-09-21T14:18:34+00:00",
+ "seconds_past_limit": 14.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:20+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/RUN",
+ "equipment": "GEN-1",
+ "signal": "generator_start",
+ "label": "generator start",
+ "domain": "electrical",
+ "priority": 4,
+ "start": "2026-09-21T14:18:28+00:00",
+ "end": "2026-09-21T14:20:44+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 136.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:28 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": -0.086713,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 79,
+ "samples_past_limit": 67,
+ "first_past_limit": "2026-09-21T14:18:28+00:00",
+ "last_past_limit": "2026-09-21T14:20:40+00:00",
+ "seconds_past_limit": 132.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/ATS-1/EMERG",
+ "equipment": "ATS-1",
+ "signal": "ats_transfer",
+ "label": "ATS transfer to the emergency source",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:20:42+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 130.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it",
+ "preliminary_score": 0.000752,
+ "evidence": {
+ "kind": "discrete",
+ "limit": 0.5,
+ "deadband": 0.5,
+ "direction": "HIGH",
+ "units": "",
+ "samples": 76,
+ "samples_past_limit": 64,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:20:38+00:00",
+ "seconds_past_limit": 126.0,
+ "worst_value": 1.0,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:32+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:36+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:46+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:18:56+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:48+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:19:58+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:08+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:18+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 1.0
+ ],
+ [
+ "2026-09-21T14:20:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:20:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": null
+ }
+ },
+ {
+ "point": "SIM-DC/GEN-1/F_LO",
+ "equipment": "GEN-1",
+ "signal": "frequency_low",
+ "label": "generator frequency dip",
+ "domain": "electrical",
+ "priority": 3,
+ "start": "2026-09-21T14:18:32+00:00",
+ "end": "2026-09-21T14:18:36+00:00",
+ "events": 2,
+ "alarms": 1,
+ "returns": 1,
+ "seconds_in_alarm": 4.0,
+ "band": "EXPLAINED",
+ "rule": "E-C1",
+ "rule_name": "EXPLAINED_BY_CAUSE",
+ "finding": "starts at 10:18:32 EDT, inside the UTILITY_FAILURE window on SIM-DC/UTIL-1/FAIL, so it is a consequence of that cause and collapses under it; load step at 10:18:32 EDT (the transfer to the emergency source): worst 58.88 Hz at 10:18:32 EDT, 1.12 Hz below the 60 Hz nominal, back within 0.5 Hz at 10:18:34 EDT, 2 s after the step",
+ "preliminary_score": 2.3e-05,
+ "evidence": {
+ "kind": "low",
+ "limit": 59.5,
+ "deadband": 0.1,
+ "direction": "LOW",
+ "units": "Hz",
+ "samples": 8,
+ "samples_past_limit": 1,
+ "first_past_limit": "2026-09-21T14:18:32+00:00",
+ "last_past_limit": "2026-09-21T14:18:32+00:00",
+ "seconds_past_limit": 0.0,
+ "worst_value": 58.88,
+ "trend": [
+ [
+ "2026-09-21T14:13:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:13:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:10+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:14:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:15:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:44+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:16:54+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:04+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:14+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:24+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:34+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:46+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:17:56+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:06+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:16+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:18:26+00:00",
+ 40.0
+ ],
+ [
+ "2026-09-21T14:18:40+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:18:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:19:00+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:19:06+00:00",
+ 59.94
+ ],
+ [
+ "2026-09-21T14:19:26+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:19:30+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:19:38+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:19:50+00:00",
+ 59.99
+ ],
+ [
+ "2026-09-21T14:20:02+00:00",
+ 59.97
+ ],
+ [
+ "2026-09-21T14:20:16+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:20+00:00",
+ 59.93
+ ],
+ [
+ "2026-09-21T14:20:28+00:00",
+ 59.92
+ ],
+ [
+ "2026-09-21T14:20:48+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:20:56+00:00",
+ 59.96
+ ],
+ [
+ "2026-09-21T14:21:08+00:00",
+ 59.95
+ ],
+ [
+ "2026-09-21T14:21:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:20+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:30+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:40+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:21:50+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:00+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:22+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:32+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:42+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:22:52+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:02+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:12+00:00",
+ 0.0
+ ],
+ [
+ "2026-09-21T14:23:22+00:00",
+ 0.0
+ ]
+ ],
+ "dip": {
+ "measured": true,
+ "reason": null,
+ "basis": "ats_transfer",
+ "step_at": "2026-09-21T14:18:32+00:00",
+ "rated_at": "2026-09-21T14:18:28+00:00",
+ "worst_hz": 58.88,
+ "worst_at": "2026-09-21T14:18:32+00:00",
+ "nominal_hz": 60.0,
+ "below_nominal_hz": 1.12,
+ "tolerance_hz": 0.5,
+ "recovered_at": "2026-09-21T14:18:34+00:00",
+ "recovery_s": 2.0,
+ "window_end": "2026-09-21T14:18:46+00:00"
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "nuisance": [],
+ "unresolved": [],
+ "elapsed_s": 0.053,
+ "writer": {
+ "kind": "template",
+ "name": "template, no model",
+ "model": null
},
- "elapsed_ms": 126.4,
- "cached": false
+ "read_only": true
+ },
+ "elapsed_ms": 87.7,
+ "cached": false
}