"Session-invariance" is the property that a substance classifier keeps working when it meets a new recording of data from the same rig on a different day. It is the weakest meaningful claim in interoperability — and it is astonishingly easy to get wrong.
We measured session-invariance on SmellNet (50 substances, 6 MOX sensors, multiple sessions) several ways. The headline table is usually read as contradictory, so this essay walks through what each row means and why they cohere.
| Method | Held-out-session accuracy | Read correctly |
|---|---|---|
| Framework features (145-dim) + RandomForest | 88.5% (t≈60.8, chance 2%) | The physics-derived feature stack is session-invariant |
| Contrastive 1D-CNN (learned, ours) | 81.78% | A learned encoder is good within its training rig |
| Raw voltages + RandomForest | 63.3% | Raw signals carry session-specific junk |
| ScentFormer (Transformer, published) | 53.0% | A generic sequence model underperforms domain features |
| Naive R/R₀ + RandomForest | 37.5% | The cautionary row: naive normalization destroys invariance |
Five numbers, one argument. The framework wins because it was built to be gauge-invariant: it computes ratios, directions, and selectivity fingerprints rather than absolute values. The learned CNN does respectably because it can memorize the training rig's structure — but that is precisely its limitation: a representation learned from raw windows is device-bound; nothing about it transfers to a second unit. The transformer, trained from scratch on the same problem without domain structure, lands near the bottom. And naive R/R₀ — the one "normalization" everyone reaches for first — is catastrophically worse than raw.
Why Naive R/R₀ Is Worse Than Raw
This was the surprising result, and it has a root cause. Naive R/R₀ divides raw resistance by R0 measured at the start of the recording — a baseline that, per the memory audit, still carries ~11% of the previous exposure's deflection and a slow exponential tail (τ 45–60 s). Dividing by a memory-corrupted R0 injects session noise into every normalized feature. The normalization removes the electronics, yes — but it adds back session forgetfulness, and the net effect is negative.
The lesson generalizes beyond this result: normalization is only as good as the baseline it divides by. Session invariance is not "normalize and it works." It is per-session, memory-safe R0 + ratios on top. Compute R0 from ≥300 s of clean air, recompute per session, apply the bi-exponential memory correction — and the naive-37.5% pathology disappears.
What the 88.5% Does and Does Not Claim
- It claims: a rig that computes the framework features can tell substances it was trained on apart, across sessions, at 88.5%. That is real and reproducible.
- It does not claim: anything about novel substances (leave-substance-out R² = −14.62 — no extrapolation), or about a second device (zero-shot cross-device transfer is at ~10–18% vs 25% chance, consistently falsified across every alignment family tried).
So the honest single sentence is: representation invariance is solved; deployment invariance is not, and it is not a free property — it is a calibration contract. This is the position the anomaly-first strategy builds on: ship what is measured-deployable now, and let shared data improve the rest.
The Encoder Question
Why bother with learned encoders at all, if features already win? Two honest answers. First, on a within-device fine-tune of a pre-trained encoder, we measured real session gains on one rig (garlic within-subject accuracy 0.84, 3/3 session pairs above threshold) — but on shorter recordings the same encoder still fails (ginger 0.43), and the 1-anchor cross-substance transfer worked for exactly one (calibration, test) pairing out of five. Second, none of that transfers to new hardware. Encoders are a within-device tool, not an interoperability strategy. Use features for sharing; use encoders for single-device polish.
Sources & Further Reading
interoperability/canonical_experiments/— Experiments 1, 4, 6 (session-invariance, normalization comparison, baseline comparison), 07 cross-device sanity.publishable/SESSION_INVARIANCE_RESULTS.md— the encoder fine-tune + 1-anchor Procrustes numbers.- The what-a-sensor-remembers essay — the memory audit that explains the 37.5% row.
- The interoperability-normalization-theorem essay — the exact math of what R_s/R_0 can and cannot cancel.
