You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
validation: bind Rubin factor-score design payload into projection authority #522
Current Draft #506 binds the exact cutoff-admitted complete-data indicator draw matrix through complete_data_draws_sha256, but the Rubin loading estimator also consumes the cutoff-admitted factor_scores vector. EligibleRubinRows::complete_data_draws_sha256() hashes dimensions and draw values only; it does not hash factor_scores.
That leaves a real provenance gap for any future positive projection: with the same snapshot/cutoff, indicator draws, observation/draw counts, indicator kind, and approved class-level pairing, changing the already-mapped factor-score vector can change the OLS loading estimates while preserving the activation receipt's concrete draw digest. source_snapshot_sha256 does not close this by itself because the executor accepts already-mapped factor scores as caller-supplied numeric inputs and does not prove that mapping from source bytes.
Required contract
the executor must bind every cutoff-admitted numeric input that enters psychometric_core::recover_loading_point_estimate_mean / combine_draw_level_ols_loadings, including the factor-score design vector;
a late row excluded by AvailableTime > KnowledgeCutoff must not change that commitment;
a one-bit change in an admitted factor score must change the commitment;
the public activation receipt/runtime decision must not be able to authorize a factor-score-substituted run merely because the indicator draw matrix digest is unchanged;
keep generator-execution attestation separate: content commitment is still not proof that an approved generator or mapping implementation produced the bytes;
production approved pairing remains empty until independent scientific promotion.
Prefer a versioned executor-owned numeric-analysis-payload commitment or an explicit factor-score commitment rather than silently overloading the meaning of a field named complete_data_draws_sha256. The receipt/artifact schemas are still Draft and unreleased, so the eventual v1 can be corrected before protected-main publication.
Evidence
At #506 exact head a40dab07044c6d77ebe3514ee9ef215dc09970d7, EligibleRubinRows contains both factor_scores and indicator_draws, but complete_data_draws_sha256() hashes only the latter. The executor then passes both vectors into the loading point estimate and Rubin combination.
RED→repair lineage is now on Draft #506. RED e9e6a13427eb7f5ea66e8a2e719b8323ec71ae9d proves a one-bit admitted factor_score change must change per-run payload identity even when indicator draws are unchanged. Causal fix 7dc449f0d2ed8d1a070e5d9d9793e954f41660b1 changes the executor-owned commitment to tepp.rubin_loading.analysis_payload.v1\0 and hashes admitted dimensions, factor-score IEEE-754 bits in admitted observation order, then draw bits in draw-major/admitted-observation order. Research contract 82f49c615bb4dc0a88ed9daaed181bca42acd39a, ADR 0034 647f4896b132e8ec715c9778090a7d67ffa9f038, and owned rustdoc 01c647665294d7290a4d4bf2c6862492397d72c5 are currentized.
Keep this issue open: the Draft wire/accessor is still named complete_data_draws_sha256 even though the committed value now covers the full admitted numeric estimator payload. Because the schema is unreleased, that semantic rename should happen before protected-main/release rather than preserving a misleading compatibility alias. Exact-head hosted GREEN and verified inheritance by the surviving Analysis Run vehicle are also still required.
Follow-up: the pre-release semantic rename is now implemented rather than left pending. Artifact/source rename: 9101f6621a9ff26cb9a3ff21a527769040696d8d; public activation receipt/runtime rename: f2596dbaffe0f3ffbae191c36ee7ac9b023b7875; test and authority propagation continues through f83de2b33e21df662708f333a90443671bed1da0; research/ADR are current through exact head f4a7eb5c018530e57a197ab2da56532a73e41456.
The eventual unreleased v1 wire/accessor is now estimator_payload_sha256; there is no compatibility alias for the misleading draw-only branch-local name. Keep #522 open only for exact-head hosted verification and verified inheritance by the surviving Analysis Run vehicle; source/API/doc repair itself is present on #506.
Activity
seonghobae commentedon Sep 14, 2026
RED→repair lineage is now on Draft #506. RED
e9e6a13427eb7f5ea66e8a2e719b8323ec71ae9dproves a one-bit admittedfactor_scorechange must change per-run payload identity even when indicator draws are unchanged. Causal fix7dc449f0d2ed8d1a070e5d9d9793e954f41660b1changes the executor-owned commitment totepp.rubin_loading.analysis_payload.v1\0and hashes admitted dimensions, factor-score IEEE-754 bits in admitted observation order, then draw bits in draw-major/admitted-observation order. Research contract82f49c615bb4dc0a88ed9daaed181bca42acd39a, ADR 0034647f4896b132e8ec715c9778090a7d67ffa9f038, and owned rustdoc01c647665294d7290a4d4bf2c6862492397d72c5are currentized.Keep this issue open: the Draft wire/accessor is still named
complete_data_draws_sha256even though the committed value now covers the full admitted numeric estimator payload. Because the schema is unreleased, that semantic rename should happen before protected-main/release rather than preserving a misleading compatibility alias. Exact-head hosted GREEN and verified inheritance by the surviving Analysis Run vehicle are also still required.seonghobae commentedon Sep 14, 2026
Follow-up: the pre-release semantic rename is now implemented rather than left pending. Artifact/source rename:
9101f6621a9ff26cb9a3ff21a527769040696d8d; public activation receipt/runtime rename:f2596dbaffe0f3ffbae191c36ee7ac9b023b7875; test and authority propagation continues throughf83de2b33e21df662708f333a90443671bed1da0; research/ADR are current through exact headf4a7eb5c018530e57a197ab2da56532a73e41456.The eventual unreleased v1 wire/accessor is now
estimator_payload_sha256; there is no compatibility alias for the misleading draw-only branch-local name. Keep #522 open only for exact-head hosted verification and verified inheritance by the surviving Analysis Run vehicle; source/API/doc repair itself is present on #506.