Two-Tier Reproduction
We check reproductions two ways: an exact byte-for-byte match where the computation allows it, and a numerical-tolerance match where it does not.
Why one standard is not enough
Reproducibility sounds binary — either you got the same answer or you didn't — but computation is not that clean. Some outputs are deterministic and should match exactly; others involve floating-point operations whose last digits legitimately differ across hardware and libraries. Holding both to a single standard would either reject honest reproductions or accept sloppy ones. Kronos therefore checks at two tiers.
The two tiers
- Tier 1, byte match: for deterministic artifacts, the reproduced file must be byte-for-byte identical to the deposited reference — verified by checksum.
- Tier 2, tolerance match: for numerical results, the reproduced values must fall within a stated tolerance of the reference, so honest floating-point variation passes while a real discrepancy fails.
How the tier is chosen
The tier is assigned per artifact, not left to the reader's judgment. A configuration file or a fixed table is a Tier 1 artifact; a swept physical quantity is a Tier 2 artifact with an explicit tolerance. Publishing which tier applies to which output removes the ambiguity that lets a marginal reproduction be spun as a success.
Where this runs
The two-tier check is what the verify function performs at the end of a reproduction, and it is the last step in the reproducible pipelines and the cold-reproduction runbook. Together they turn 'we reproduced it' into a statement with a defined, checkable meaning.
An honest reproducibility claim needs an honest definition of a match. Two tiers give us one.