Forge Electrolyser Telemetry Baseline
A compact unsupervised time-series baseline for normalized, synthetic electrolyser and auxiliary telemetry. It detects multivariate deviations while remaining strictly advisory: its output is L0 evidence and is never used as a trip, permissive or controller command.
Signals and features
Eight synthetic channels cover demand, stack load, feed flow, coolant flow, stack temperature, discharge pressure, auxiliary current and valve position. For each 24-second causal window the model computes the latest value, mean, standard deviation, causal slope and last difference for every channel: 40 features in total.
Training uses median/MAD robust scaling, SVD and a PCA reconstruction-residual score. The alert threshold is selected from separate normal calibration runs at the 99.9th percentile, then requires three consecutive exceedances. The JSON artifact is 4,781 bytes and the scoring path is a small matrix projection plus a residual mean.
Leakage controls
- Split by complete simulated run, never by overlapping windows.
- Fit scaling and PCA only on 80 normal training runs.
- Select the threshold only on 40 separate normal calibration runs.
- Evaluate once on 40 normal runs and 20 anomalous runs from disjoint seeds.
- Generate data and artifact deterministically within the recorded numerical environment; two consecutive exports in that environment have identical SHA-256 hashes.
SVD coefficients can differ in their final floating-point bits across NumPy or BLAS builds. The committed JSON and checksum are the release reference. The portable reproduction target is metric and alert parity, not an unqualified cross-platform byte-identical artifact.
Synthetic benchmark
| Metric | Result |
|---|---|
| Event recall | 1.000 |
| Event precision | 1.000 |
| Point precision | 1.000 |
| Point recall | 0.644 |
| False-alert episodes | 0 across 4.0 normal evaluation hours |
| Median detection delay | 60.5 s |
| P95 detection delay | 122.0 s |
Median delay by injected family is 14 s for auxiliary trip, 52 s for cooling degradation, 69 s for sensor drift and 121 s for gradual valve stiction. These figures describe only this deterministic synthetic benchmark; they do not imply real-plant performance.
Reproduce and benchmark
# Standalone Hub model repository:
python train.py
python benchmark.py
# From the full Forge lab source instead:
# python models/train_anomaly_baseline.py
# python models/benchmark_anomaly.py
The benchmark reports CPU, Python version, total windows and measured latency instead of publishing a hardware-free speedup claim.
Limitations
The generator does not represent a specific electrolyser chemistry, OEM, balance-of-plant design, process hazard, sensor failure distribution or site operating envelope. No result should be converted into a production alarm threshold. Validate with time-ordered plant data, track detection delay and false alarms by operating mode, test missing/stale sensors, and retain deterministic/hardware protection for every safety function.