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
1# Standalone Hub model repository:
2python train.py
3python benchmark.py
4
5# From the full Forge lab source instead:
6# python models/train_anomaly_baseline.py
7# 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.