Skip to content

scientific(topic): bind reference fit results to the admitted estimator input #665

Open

Description

@seonghobae

Finding

Reviewing #664 exposed a broader owner-level mismatch boundary. fit_reference_topic_model(&ReferenceTopicInput, ...) returns a ReferenceTopicModel that retains numerical fit quantities but no admitted-input identity or document-row binding. Later APIs, including #662 projection and the new #664 FittedDocumentCoordinateSummary::from_fit(input, model), can therefore receive a dimension-compatible ReferenceTopicInput from run A beside a ReferenceTopicModel from run B and silently zip A's document identities with B's document proportions/variances.

This is not Evidence/source provenance (#658). Even before a source snapshot is authenticated, the numerical owner must prove that the model quantities being projected came from the same admitted estimator input whose row coordinates are being attached. It is also distinct from #663 fitted topic-basis identity: topic basis content can be valid while the model is detached from the document/design/transition input that produced it.

Required RED

Use two actual admitted reference inputs A and B with the same dimensions and topic count but materially different document order and/or counts/design/transition state. Fit each through the CPU f64 reference estimator. Prove that every owner API which binds model quantities to input coordinates fails closed for (input A, model B) and (input B, model A) while the matched A/A and B/B pairs remain valid.

At minimum cover the coordinate/uncertainty path used by #662/#664. The eventual binding must also be reusable by release execution so Analysis cannot recreate the check with a detached caller string/digest.

Owner direction

Prefer an owner-issued fitted-result aggregate or nominal binding minted inside topic_measurement at successful fit time. It should carry enough immutable fit-local identity to prove the exact admitted estimator population/order and model belong together without pretending to be Evidence authentication. Do not let callers manufacture the binding from a free snapshot_id, document UUID list, or post-hoc digest.

The binding must cover every fit-relevant coordinate whose substitution can change the estimand/result: admitted document row order, term-count input, event-time/design state, transition structure, and numerical configuration/basis as appropriate. Avoid a digest that omits private fit inputs merely because they are inconvenient to serialize.

Boundary

Until this binding exists, FittedDocumentCoordinateSummary is a numerical convenience over a caller-supplied matched pair, not release authority. Keep #639 Draft and do not project #664 into tepp.trsl_topic_lineage.v2 as authoritative evidence.

Refs #638 #639 #658 #662 #663 #664 ADR 0012.

Activity

  1. seonghobae commented on Sep 22, 2026

    @seonghobae
    ContributorAuthor

    Owner-path follow-through after the #665 aggregate work: ReferenceTopicFit remains the only public nominal binding of admitted input/configuration/model for fit-bound coordinate projection, and #666 now closes the same detached-authority hole for FittedTopicBasisIdentity at source level. #666 lineage: RED 0cee03261b6672bab84cf7cf5014ca308b98aa30 → repair 62d80186c2b5da404171ba64ac504d6a3b95a63d → consumer/hostile-test split 5984ac0959886558ee6b2966cda2d87b3dd664ee → CHANGELOG 40004fe38d39996cc404d3177bce40829498b6b7.

    This does not replace Evidence provenance (#658/#527), and it does not make the unreleased Analysis artifact authoritative. Exact-head hosted checks remain queued, so no GREEN/merge claim is made.

  2. seonghobae commented on Sep 22, 2026

    @seonghobae
    ContributorAuthor

    Follow-up fit-authority repair landed ordinary-forward in #639 as #668. ReferenceTopicFit was correctly nominally binding input/config/model, but the config owner still admitted zero and duplicate seed manifests. Public RED 45640708219048f38179b1c98a9ed9a65dee47f8 → owner repair 4cbf4c5eafb43aa2381c28e0e5085c5380f7d868 now makes ReferenceTopicModelConfig nonzero+unique while preserving seed order; CHANGELOG/current head 93b7b926ca2319529eb6e1a9fa38fa2426f7f319. This strengthens #665 rather than changing its fit/input binding semantics. Keep #665 open until protected inheritance/exact-head gates.

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