Skip to content

scientific: bind Rubin activation to concrete draw-payload digest #515

Open

Description

@seonghobae

Scientific finding

Draft #506 now constrains the Rubin activation decision by immutable generator/analysis/evidence authority, source snapshot identity + SHA-256, cutoff, exact validated observation/draw-count points, design envelope, and indicator kind. That closes class-level design generalization, but the positive algorithm still does not bind the activation receipt to the concrete complete-data draw matrix used by the current run.

The private approved-pairing path therefore cannot distinguish two runtime inputs that have the same snapshot, cutoff, observation count, draw count, indicator kind, and approved class-level receipt but different draw values. That violates #505's RED target: an arbitrary caller-constructed matrix must remain distinguishable from the concrete generator output receiving activation authority.

This is not a defect in psychometric_core Rubin arithmetic. Qbar/Ubar/B/T remains reusable numerical truth there. The defect is Validation Evidence / Projection provenance in analysis_engine.

Required repair

Bind RubinProjectionActivationReceiptV1 to the canonical SHA-256 of the exact complete-data draw payload (or an equivalently immutable canonical generated-draw artifact). The activation decision must receive the independently computed runtime draw-payload digest and require exact equality with the receipt before the private approved-pairing path can return Eligible.

Minimum fail-closed behavior:

This digest prevents payload substitution/replay after receipt creation; by itself it is not proof that an arbitrary caller actually executed the approved generator. If the trusted generator boundary cannot issue the receipt or an immutable generated-draw artifact, generator-execution attestation remains a separate follow-on owner gap rather than something to overclaim here.

RED target

Using the private test-only approved pairing, keep snapshot ID/SHA-256, cutoff, 48 observations, 8 draws, ALR indicator, generator/analysis/evidence identities and design envelope identical. Change only the runtime complete-data draw-payload SHA-256. The exact digest must be Eligible; the substituted digest must be Rejected.

Ownership / fold

Repair in Draft #506, keep ADR 0034 Proposed, and preserve this delta through the eventual ordinary non-force fold into #416. Shared TRACEABILITY/ADR index/product-gap/CHANGELOG current-state authority remains #435's single-writer lane. Do not simple-close this issue until the exact-head repair is verified and inherited by the surviving Analysis Run vehicle.

Activity

  1. seonghobae commented on Sep 14, 2026

    @seonghobae
    ContributorAuthor

    Repair is now on Draft #506 exact head 15fdd2c4d8808f29246bc9d0acd074190ce2bb32. RED db8e7b484007be535260a7b16458a8718b0f0eb3 was followed by draw-bound source/public composition ee93a01f4e9718bb6d7e8088288de250718ff0d6 + 5c9e40e638b3c7279261fa7bf047068e41b85775, integration propagation through 07d2cab97e69aa2e2d7f630a1cbaf983b4534ff3, Draft-v1 schema coherence 8e940e574817b35f986f64b41ad393538016f245, and research/ADR updates f2d32a7b37d11215d52d84b2aa48752a279513e6 → 15fdd2c4d8808f29246bc9d0acd074190ce2bb32. Public activation now requires canonical receipt/runtime complete_data_draws_sha256 equality before the private class-level authority decision. This issue stays open: exact-head hosted Rust/docs/security evidence has not yet completed, #416 has not yet inherited the delta, and canonical runtime draw serialization/trusted-generator attestation remains a follow-on owner gap rather than being overclaimed as solved.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions