"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.

MethodHeld-out-session accuracyRead correctly
Framework features (145-dim) + RandomForest88.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 + RandomForest63.3%Raw signals carry session-specific junk
ScentFormer (Transformer, published)53.0%A generic sequence model underperforms domain features
Naive R/R₀ + RandomForest37.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.