Skip to content

scientific(validation): bind promoted recovery authority to exact evaluated payload identity #633

Description

@seonghobae

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions