TruckVitals, Onset Detection on Haul-Truck Telemetry (Regime First, Then Residual)
Every haul-truck channel moves with payload, grade and speed, so a change detector run on raw telemetry detects the truck going uphill, not a fault. TruckVitals segments the operating regime FIRST, from context channels that are disjoint from the monitored ones, and detects on the within-regime residual, so an alarm means a developing fault. The headline carries no detector in it: on six-operating-condition NASA C-MAPSS subsets the fault signature is 0.16 sigma of the pooled spread and 11.95 sigma of the within-regime spread, a ratio of 90.2, while the single-condition subsets return exactly 1.00 as a negative control nobody designed. It also ships a published NULL (regime conditioning does not improve onset localisation) and a WITHDRAWN claim (no false-alarm reduction is claimed anywhere, because the raw arm wins that metric on the synthetic lane). The headline changed after a review commissioned to refute it broke three of the four original numbers.
Business Context
An unplanned haul-truck failure takes a unit out of the fleet at the worst moment and can turn a component change into a rebuild, so detecting a developing fault earlier is worth real money. The obstacle to actually deploying such a detector is not usually the algorithm, it is trust: a monitoring system that alarms whenever the truck climbs a ramp gets muted within a week, and once muted it protects nothing. Segmenting the operating regime first is what makes an alarm mean something a maintenance planner can act on, and stating the core result as a detector-free effect size is what lets that claim survive a change of threshold, alarm convention or budget. The honesty is part of the value here: a published null on onset localisation and a withdrawn false-alarm claim tell a reader exactly which decisions this method should and should not be used for, which is more useful than a single headline number that quietly depends on how the benchmark was set up.
Strategic Value
TruckVitals is the clearest case in the line of a result that got smaller and more trustworthy on purpose. An earlier version reported 0.96 to 0.05 recovering to 0.98, and 0.69 to 0.06 recovering to 0.88. A review was commissioned specifically to REFUTE it, and across eight attacks (including a shuffled-context placebo) it confirmed the mechanism and broke three of those four numbers. All three causes were real defects and all three flattered the result: the raw arm had been given a third of the residual arm is healthy data, the threshold was chosen on the data it then scored while the code accepted a calibration argument it never read, and the arm carrying the 0.88 had run with n_regimes=1, a global context regression with no segmentation in it at all. The response was to move the headline to a detector-free effect size, recompute it from the eligible arms, quote the WORSE of the two pairs alongside the better, publish the null and withdraw the false-alarm claim entirely. Three engine defects found along the way were fixed and released in the separately published regimecpd package (an ADWIN cut threshold that matched neither the paper nor MOA, a budget-threshold search that could not see qualifying thresholds below a local violation and was costing the multi-condition arms a factor of three to six, and an ineffective degenerate-scale guard). The product declares no package of its own: the engine is regimecpd on PyPI, from its own repository.
The Challenge
Condition monitoring on mobile equipment has a problem that fixed machinery does not. A haul truck changes what it is doing constantly: payload, road grade and speed all move, and every monitored channel moves with them. Run a change detector straight on that telemetry and the largest changes it finds are the truck loading, climbing and tipping, so the alarm fires on normal operation and the genuine fault signature is buried inside a spread that is mostly context. Averaging over the fleet does not rescue it either, because the pooled spread is dominated by the difference between operating conditions rather than by the difference between healthy and failing. The deeper trap is in how such a method gets evaluated: pick the threshold on the data you then score, give the arms unequal healthy data, or quietly run the strong arm with the segmentation disabled, and you can report a large improvement that is an artefact of the harness rather than of the method.
Our Approach
The pipeline is one idea applied strictly: raw telemetry, then REGIME SEGMENTATION, then the within-regime residual, then the change point, then the onset. The regimes are learned from CONTEXT channels (payload, grade, speed) that are disjoint from the monitored ones, and that disjointness is what stops the segmentation from absorbing the very fault it exists to expose. The headline claim is stated with no detector in it at all, as an effect size, so no threshold rule, alarm convention or budget can move it: on six-operating-condition NASA C-MAPSS subsets the fault signature is 0.16 sigma of the pooled spread and 11.95 sigma of the within-regime spread, a ratio of 90.2 on one pair and 62.3 on the second, while the single-operating-condition subsets return exactly 1.00, a negative control nobody designed. Detection at a matched budget is reported separately and honestly: going from one operating condition to six costs 0.93 to 0.17 and 0.73 to 0.24, and regime conditioning recovers to 0.98 and to 0.70, which on the second pair is LEVEL with the single-condition reference rather than above it. Four data lanes each carry only what they can support: NASA C-MAPSS for the controlled one-versus-six operating-condition contrast, SCANIA APS for decision under a published cost matrix (FP 10, FN 500), SCANIA Component X for five-class window prediction over 23,550 real vehicles, and a physically grounded synthetic fleet for onset error against a truth that exists by construction. The lane that does not exist is named: no public, redistributable dataset of continuous haul-truck telemetry with labelled faults was found, which is exactly why the onset measurement lives on the synthetic lane.
Key Performance Indicators
| KPI | Baseline | Result | Impact |
|---|---|---|---|
| A headline with no detector in it | A detection score, which any threshold rule, alarm convention or budget can move | An effect size: on 6-operating-condition C-MAPSS subsets the fault signature is 0.16 sigma of the pooled spread and 11.95 sigma of the within-regime spread (ratio 90.2; 62.3 on the second pair) | The claim survives a change of threshold, convention or budget |
| A negative control nobody designed | No control, so a large ratio could be an artefact of the metric | The single-operating-condition subsets return exactly 1.00, because with one regime the pooled and within-regime spreads are the same quantity | The effect appears only where the mechanism says it should |
| A published null and a withdrawn claim | Report the wins; drop the metrics that did not work | Regime conditioning does NOT improve onset localisation (paired over 5 seeds: -0.08 +/- 0.74 in chance-corrected skill, ahead in 2 of 5), and no false-alarm-reduction claim is made anywhere because the raw arm wins that metric on the synthetic lane | A reader knows which decisions the method should not be used for |
Architecture
truckvitals pipeline
Technology Stack
In action
A short tour of the live app: the real interface, recorded from the deployed site.

Application Screenshots

