Deterministic Analysis Pipelines
Given the same inputs, a pipeline must produce the same outputs every time; nondeterminism hides bugs and defeats reproducibility.
Same in, same out
A deterministic pipeline returns identical outputs from identical inputs, run after run, machine after machine. Nondeterminism -- unseeded randomness, order-dependent parallel sums, uncontrolled timestamps -- means a result cannot be reproduced exactly, which means it cannot be fully checked. We design pipelines to be deterministic and treat any drift as a defect.
Common sources of nondeterminism
- Random number generators without fixed seeds.
- Floating-point summation order changing under parallelism.
- Hash or dictionary ordering leaking into results.
- Wall-clock time or filesystem order used as an input.
- Library versions changing underfoot.
Making runs bit-for-bit where it matters
For headline results we pursue bit-for-bit reproducibility: fixed seeds, controlled reduction order, and pinned libraries. Where a method is inherently stochastic, we fix the seed and report the sampling uncertainty as part of the result, so even the randomness is reproducible and quantified.
Determinism is what lets a regression test mean something. If a pipeline can return a different Q_sci on two runs of the same case, no test can guard the number and no reviewer can confirm it. Determinism first, then everything else in the standards stack can rest on it. A deterministic pipeline is therefore not a convenience but a foundation: only once identical inputs reliably give identical outputs can a test guard a number, a reviewer confirm it, or an outside reader reproduce it. Where the physics is genuinely stochastic, we fix the seed and quote the sampling spread, so even the randomness is recorded and repeatable rather than a source of unexplained drift.