A reproducible run is a claim about state, not a copied directory
Objective: For “A reproducible run is a claim about state, not a copied directory,” which frozen inputs determine the result, what is the first independently observable claim, and which mutation proves the check is alive?
Reproduction means a declared environment transforms the same frozen logical inputs into equivalent declared outputs while exposing every permitted nondeterministic field. This lesson uses the route “build the smallest observable case.” Begin with a hand-checkable instance before invoking automation: name the state that enters the step, the transformation that is permitted, the observation that must change, and the evidence that would falsify the claim. The unit objective is Establish the operating-system, filesystem, process, and manifest model needed to reproduce a hardware result instead of remembering a GUI session. Every shortcut must therefore be evaluated by whether it preserves reproducibility, diagnosability, and the identity of the design claim.
Treat A reproducible run is a claim about state, not a copied directory as an executable interface with declared inputs, outputs, status, side effects, resource limits, and ownership. Separate control-plane success from design evidence: a process can exit zero while consuming the wrong revision, skipping work, reusing stale output, suppressing a violation, or publishing an incomplete artifact. Copying yesterday’s reports beside today’s netlist can produce a complete-looking release whose evidence refers to two candidates. The learner must identify the first divergence and repair the dependency, not merely rerun until a dashboard becomes green.
Two runs are equivalent only after volatile timestamps, paths, seeds, host names, and ordering are either fixed or normalized by a reviewed rule. This invariant is accepted only for the named candidate and declared environment; any changed input invalidates every dependent result until reconstruction proves otherwise.
Hash source, constraints, configuration, tool identity, and environment before execution. First freeze the candidate and predict the expected observation without reading a generated summary.
Compare semantic netlist structure separately from volatile report metadata. Then execute the smallest transformation, retaining raw standard output, standard error, exit status, generated files, and resource use.
Document and test one normalization rule for the timestamp field. Finally reconcile the observation with the invariant, inject the named failure, and verify that the expected consumer refuses the corrupted or stale state.
Run a tiny synthesis twice; both reports say 42 cells, but output hashes differ because one embeds a timestamp. Before revealing the trace, predict the exact command or state transition, expected exit and artifact status, first checker that should react, and minimum safe recovery.
- Hash source, constraints, configuration, tool identity, and environment before execution.
- Compare semantic netlist structure separately from volatile report metadata.
- Document and test one normalization rule for the timestamp field.
Result: The semantic artifact reproduces only after the allowed timestamp difference is explicit and all other identities match. Accept the result only after a clean second execution reproduces the decisive artifact and a targeted mutation fails at the predicted boundary.