Repository navigation
scientific(topic): bind reference fit results to the admitted estimator input #665
Description
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
- Evidence release(provenance): bind topic-lineage input to owner-issued source snapshot evidence #658/feat(evidence): own immutable source snapshot receipts #527 still owns source/vocabulary provenance and availability/cutoff authority.
- release(topic): bind topic-index coordinates to the fitted topic basis #663 owns fitted topic-basis coordinate identity.
- release(uncertainty): bind diagonal-Laplace variance to its fitted ALR location #664 owns fitted ALR location + diagonal variance pairing.
- This issue owns fit-result ↔ admitted-estimator-input integrity inside
topic_measurement.
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.
Activity
docs(topic): mark fit-input binding as unresolved (#665)
docs(changelog): record unresolved fit-input binding (#665)
test(topic): require owner-issued fit/input binding (#665)
feat(topic): own nominal reference fit binding (#665)
feat(topic): export owner-issued reference fit aggregate (#665)
feat(topic): consume owner-issued fit binding for coordinates (#665)
test(topic): use diagnostic unbound coordinate path explicitly (#665)
fix(topic): keep detached coordinate pairing private (#665)
test(topic): use owner-issued fit for public coordinate projection (#665
test(topic): doctor fit-binding contract shape (#665)
docs(changelog): record owner-issued fit binding (#665)
seonghobae commentedon Sep 22, 2026
Owner-path follow-through after the #665 aggregate work:
ReferenceTopicFitremains the only public nominal binding of admitted input/configuration/model for fit-bound coordinate projection, and #666 now closes the same detached-authority hole forFittedTopicBasisIdentityat source level. #666 lineage: RED0cee03261b6672bab84cf7cf5014ca308b98aa30→ repair62d80186c2b5da404171ba64ac504d6a3b95a63d→ consumer/hostile-test split5984ac0959886558ee6b2966cda2d87b3dd664ee→ CHANGELOG40004fe38d39996cc404d3177bce40829498b6b7.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.
seonghobae commentedon Sep 22, 2026
Follow-up fit-authority repair landed ordinary-forward in #639 as #668.
ReferenceTopicFitwas correctly nominally binding input/config/model, but the config owner still admitted zero and duplicate seed manifests. Public RED45640708219048f38179b1c98a9ed9a65dee47f8→ owner repair4cbf4c5eafb43aa2381c28e0e5085c5380f7d868now makesReferenceTopicModelConfignonzero+unique while preserving seed order; CHANGELOG/current head93b7b926ca2319529eb6e1a9fa38fa2426f7f319. This strengthens #665 rather than changing its fit/input binding semantics. Keep #665 open until protected inheritance/exact-head gates.