| 04:09:22 | narration | text=**SCADA + ExplainedCUSUM**: a bearing temperature sensor will drift past its control limit. CUSUM detects the cumulative shift; the LLM explainer then attaches a likely cause., title=Scenario: SCADA |
| 04:09:22 | narration | text=Phase 1 — **normal**: reading hovers around 70 °C, title=Phase 1 |
| 04:09:22 | sensor | bearing_temp_07 = 69.94 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.93 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.96 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.28 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.95 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.4 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.13 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.89 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.91 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.05 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.09 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.47 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.26 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.04 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.7 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.59 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.1 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.52 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.02 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.96 (good) |
| 04:09:22 | narration | text=Phase 2 — **drift**: viscosity drops in `lubricant_flow_03`, bearing temp rises, title=Phase 2 |
| 04:09:22 | sensor | bearing_temp_07 = 70.21 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 69.67 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.38 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.95 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.35 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.15 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.65 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.85 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 72.31 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.8 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 72.73 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 72.14 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.95 (good) |
| 04:09:22 | spc_alarm | ALARM bearing_temp_07 cusum=12.9 |
| 04:09:22 | audit | event=cusum.alarm, sensor_id=bearing_temp_07, cusum=12.9 |
| 04:09:22 | sensor | bearing_temp_07 = 73.01 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 73.13 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.1 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.27 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 73.76 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.84 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.35 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.97 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 75.13 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 75.55 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.08 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.26 (good) |
| 04:09:22 | spc_alarm | ALARM bearing_temp_07 cusum=62.3 |
| 04:09:22 | audit | event=cusum.alarm, sensor_id=bearing_temp_07, cusum=62.3 |
| 04:09:22 | sensor | bearing_temp_07 = 76.39 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.76 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.94 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.75 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.96 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 77.31 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 77.95 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 77.9 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 79.18 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 78.17 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 78.31 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 79.31 (good) |
| 04:09:22 | spc_alarm | ALARM bearing_temp_07 cusum=148.3 |
| 04:09:22 | audit | event=cusum.alarm, sensor_id=bearing_temp_07, cusum=148.3 |
| 04:09:22 | sensor | bearing_temp_07 = 79.82 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 79.7 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 80.08 (good) |
| 04:09:22 | narration | text=**LLM explainer** triggered — building incident report, title=LLM |
| 04:09:22 | llm_call | kind=incident_explanation, tokens=237, latency_ms=412, model=llama3.2, hypothesis=The cumulative drift began ~12 minutes ago, coinciding with a viscosity drop in lubricant_flow_03. Bearing wear or lubricant degradation is plausible. Recommend checking lubricant pressure and vibration spectrum. |
| 04:09:22 | audit | event=llm.complete, tokens=237, latency_ms=412 |
| 04:09:22 | narration | text=Phase 3 — **recovery** after maintenance action, title=Phase 3 |
| 04:09:22 | sensor | bearing_temp_07 = 78.57 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 77.56 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.63 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.59 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 76.78 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 75.42 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 75.61 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 75.3 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.67 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.69 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.23 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 74.53 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 73.45 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 72.56 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 72.18 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.67 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 71.98 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.97 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.77 (good) |
| 04:09:22 | sensor | bearing_temp_07 = 70.7 (good) |
| 04:09:22 | narration | text=ExplainedCUSUM = **CUSUMChart + LLMExplainer** glued together. Alarms fire on numerical drift; the LLM attaches a natural-language cause., title=Take-away |