Finding
#728/#731 now persist immutable fingerprints for the simulation scenario and exact indexed replication outcomes, but CoverageCalibrationEvidenceRecord still binds the prospective validation criterion only by the string validation_design_id.
CoverageCalibrationDesign::tepp_nominal_95_v1() owns materially scientific constants — attempted DGP count, nominal coverage, practical lower/upper coverage bounds, and maximum Monte Carlo standard error. Those constants are not serialized into the evidence record and have no immutable digest. If the implementation drifted while retaining tepp.coverage.nominal95.v1, an eventual acceptance record could carry the same design identity while being assessed under a different criterion. Persisting source_head shows which code ran, but does not make the criterion self-describing or independently comparable across artifacts without recovering source.
This is the validation-side analogue of #728's simulation-scenario drift problem.
Required RED / repair
- add a validation-owned deterministic SHA-256 fingerprint for
CoverageCalibrationDesign;
- domain-separate the digest and bind the design identity, attempted DGP count, nominal coverage, practical lower/upper bounds, and maximum Monte Carlo standard error using explicit canonical lengths/counts and exact IEEE-754 binary64 bits;
- expose a pinned v1 contract so changing any criterion field without issuing a new design version changes the fingerprint;
- persist the fingerprint beside
validation_design_id in CoverageCalibrationEvidenceRecord and deterministic JSON;
- bump the evidence wire schema because the persisted contract gains a new provenance field;
- do not duplicate coverage assessment arithmetic or move simulation ownership into
validation_core.
Boundary
This is persisted provenance for the prospective criterion. It does not execute the 10,000-DGP study, choose an acceptable numerical-failure rate, promote a claim, or create a release. source_head, simulation scenario fingerprint, indexed outcome ledger/digest, and validation-design fingerprint remain distinct evidence dimensions.
Refs #639 #680 #725 #728 #729 #730 #731.
Finding
#728/#731 now persist immutable fingerprints for the simulation scenario and exact indexed replication outcomes, but
CoverageCalibrationEvidenceRecordstill binds the prospective validation criterion only by the stringvalidation_design_id.CoverageCalibrationDesign::tepp_nominal_95_v1()owns materially scientific constants — attempted DGP count, nominal coverage, practical lower/upper coverage bounds, and maximum Monte Carlo standard error. Those constants are not serialized into the evidence record and have no immutable digest. If the implementation drifted while retainingtepp.coverage.nominal95.v1, an eventual acceptance record could carry the same design identity while being assessed under a different criterion. Persistingsource_headshows which code ran, but does not make the criterion self-describing or independently comparable across artifacts without recovering source.This is the validation-side analogue of #728's simulation-scenario drift problem.
Required RED / repair
CoverageCalibrationDesign;validation_design_idinCoverageCalibrationEvidenceRecordand deterministic JSON;validation_core.Boundary
This is persisted provenance for the prospective criterion. It does not execute the 10,000-DGP study, choose an acceptable numerical-failure rate, promote a claim, or create a release.
source_head, simulation scenario fingerprint, indexed outcome ledger/digest, and validation-design fingerprint remain distinct evidence dimensions.Refs #639 #680 #725 #728 #729 #730 #731.