
Maintenance technicians start the morning shift with thousands of overnight telemetry windows and one question: what do I look at first? An assistant that names a fault the data cannot support is worse than none. TeleReason runs a fixed night pipeline on one AMD Instinct MI300X: a gate, measured facts, short notes and a morning report. The gate trains XGBoost on grouped folds with a label-shuffle test and a retraining check, and decides per line what may be said: facts only, an abnormal-behaviour score, or a diagnosis. On FactoryWave, fault prediction on new days is no better than chance (AUROC 0.532, interval 0.321–0.712), so that line gets facts only. On AURSAD, normal and faulty runs separate well (AUROC 0.909, interval 0.898–0.920), but the cause is not reliable, so it gets a score and no cause. gpt-oss-120b, served by vLLM on ROCm in the same process, writes two or three sentences per window; code checks every number against the facts and blocks fault names. In the 16 Oct night, run during the event, 7,422 windows took 26.2 minutes and all 7,422 notes passed on the first attempt. In the morning the same model answers live questions through five narrow tools, follows the gate verdict and refuses requests to act on equipment before the model runs. Asked one at a time, an answer finished in about 2 s, and in about 6 s while a night was writing notes (median of 8 questions each). XGBoost was built from source for ROCm, so the gate's 222 trainings also run on the MI300X. On AURSAD, at the report threshold of 0.9, 68.8% of the windows labelled faulty and 3.9% of the normal ones were flagged (lab data, rates within each class, measured in our 11 Oct run before the event). The demo answers from the live model on our MI300X droplet while it is up, and from the recorded night otherwise; the top bar shows which. Data: FactoryBench (dataset card: CC BY 4.0), including AURSAD (CC BY 4.0). Code: MIT.
18 Oct 2026