Scientific/provenance finding
The current #488 scientific-recovery path binds final authority to:
ScientificRecoveryProfileV1::sha256() for the predeclared design/acceptance policy; and
ScientificRecoveryExactHeadReceiptV1::receipt_sha256() for the exact tested source receipt.
It does not retain an identity for the actual grouped truth_replications / recovered_replications payload that passed the numerical gate.
Consequently two different recovery datasets can be evaluated under the same profile and exact-head receipt, both receive ScientificallySupported, and produce the same downstream audit tuple (claim, profile_sha256, exact_head_receipt_sha256). The profile's DGP/seed-manifest/estimand/state-composition digests identify the planned design, not the exact represented recovery outputs supplied to promotion.
That is a reproducibility/evidence-lineage defect. It does not imply the numerical RMSE/MCSE decision is wrong; it means downstream authority cannot prove which represented trajectories/states were actually evaluated.
Required RED
On canonical Draft #488, construct two distinct valid grouped recovery payloads that both satisfy the same profile and exact-head receipt (for example two different exact-recovery datasets with RMSE 0). Require:
- repeated promotion of the same represented payload to retain the same recovery-evidence identity;
- different represented truth/recovery payloads to retain different recovery-evidence identities even when the resulting authority/profile/test-receipt tuple is otherwise identical;
+0.0 and -0.0 not to create distinct recovery-evidence identities when the scientific represented value is zero;
- outer replication order and within-replication coordinate order/length to remain committed because the state-composition contract gives those positions meaning.
The predecessor API cannot satisfy this because ScientificRecoveryPromotionV1 has no recovery-payload identity.
Minimal causal repair
Derive a versioned, domain-separated SHA-256 inside Validation Evidence after input validation and before authority is returned. Bind at minimum:
- schema/version;
- exact recovery-profile SHA-256;
- outer replication count;
- each replication index and inner cardinality;
- canonical represented f64 bits for every truth/recovery coordinate (canonicalize signed zero; non-finite values remain rejected by the numerical boundary).
Retain this recovery_evidence_sha256 in ScientificRecoveryPromotionV1 alongside the profile and exact-head receipt identities.
Do not call this a signature, execution attestation, seed-execution proof, or pre-execution registration proof. This closes payload content identity only. Per-replication seed/execution provenance and signed/verifiable evidence remain subsequent hardening gaps.
Keep open through RED → causal repair → exact-head Rust/coverage/security/CodeQL/proof-budget → qualifying independent review → normal prerequisite/protected-main integration and code-current TRACEABILITY/product-gap authority.
Refs #488 #623 #625 #626 #627 #630 #631 #632.
Scientific/provenance finding
The current #488 scientific-recovery path binds final authority to:
ScientificRecoveryProfileV1::sha256()for the predeclared design/acceptance policy; andScientificRecoveryExactHeadReceiptV1::receipt_sha256()for the exact tested source receipt.It does not retain an identity for the actual grouped
truth_replications/recovered_replicationspayload that passed the numerical gate.Consequently two different recovery datasets can be evaluated under the same profile and exact-head receipt, both receive
ScientificallySupported, and produce the same downstream audit tuple (claim,profile_sha256,exact_head_receipt_sha256). The profile's DGP/seed-manifest/estimand/state-composition digests identify the planned design, not the exact represented recovery outputs supplied to promotion.That is a reproducibility/evidence-lineage defect. It does not imply the numerical RMSE/MCSE decision is wrong; it means downstream authority cannot prove which represented trajectories/states were actually evaluated.
Required RED
On canonical Draft #488, construct two distinct valid grouped recovery payloads that both satisfy the same profile and exact-head receipt (for example two different exact-recovery datasets with RMSE 0). Require:
+0.0and-0.0not to create distinct recovery-evidence identities when the scientific represented value is zero;The predecessor API cannot satisfy this because
ScientificRecoveryPromotionV1has no recovery-payload identity.Minimal causal repair
Derive a versioned, domain-separated SHA-256 inside Validation Evidence after input validation and before authority is returned. Bind at minimum:
Retain this
recovery_evidence_sha256inScientificRecoveryPromotionV1alongside the profile and exact-head receipt identities.Do not call this a signature, execution attestation, seed-execution proof, or pre-execution registration proof. This closes payload content identity only. Per-replication seed/execution provenance and signed/verifiable evidence remain subsequent hardening gaps.
Keep open through RED → causal repair → exact-head Rust/coverage/security/CodeQL/proof-budget → qualifying independent review → normal prerequisite/protected-main integration and code-current TRACEABILITY/product-gap authority.
Refs #488 #623 #625 #626 #627 #630 #631 #632.