ADR-0005: Bind reproducibility to the full recorded environment

  • Status: Accepted — retrospective baseline.
  • Recorded: 2026-09-29. This is the recording date, not an invented original approval date.
  • Authority and implementation boundaries: see Evidence below and the register conventions.

Context

A seed alone cannot freeze Faker, serialization, dependency versions, locale or algorithm changes.

Decision

Use a local seeded random source. Record effective spec/rules, seed, runtime, package/dependencies, locale, serializer and artifact digests in the generation manifest. Logical replay assumes the same recorded environment; cross-version byte identity is explicitly not promised.

Identifier domains are deterministic synthetic domains, not permanent mappings from source IDs. Exact replay also depends on ordered specifications; changing fields or null masks can affect outcomes.

Alternatives and consequences

Promising cross-version byte identity would require freezing behavior the current contract does not freeze. Recording only the seed hides why outputs differ. Digests establish comparison evidence, not reconstruction of missing inputs.

Evidence

Sources: dependency reproducibility, identifier domains, artifact contract. Executable anchors: identifier tests, dependency compatibility, contract fixtures.

Revisit when

An algorithm or dependency change that affects output needs compatibility evidence and release notes; do not imply prior digests still describe it.