feat(analysis): bind independent TDT link-criterion fitting to an analysis-run profile - #423
feat(analysis): bind independent TDT link-criterion fitting to an analysis-run profile#423seonghobae wants to merge 14 commits into
Conversation
…lysis-run profile GAP-004 leftover / ADR 0062. Bind existing fit_lineage_criterion_posteriors to cutoff-safe lineage_criterion_v1. Event-time draws remain producer evidence; date inference from record order is refused.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ADR 0062 is already taken by live TEPP #422 corpus-background refusals.
Resolve the CHANGELOG.md append conflict by keeping both entries. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Restack on protected main (a243f18)Non-force merge of Local evidence on the pushed head (toolchain 1.98.0): 🤖 Generated with Claude Code |
Consolidation status
lineage_criterion_v1is a Draft Analysis Run fold child, not an independent landing authority. Current exact head is2b666d94df1454157700dafe5edf5448de28d9e0on protectedmain@a243f18da4a4ca8a8d068c39922537f1f8ed6ad0.The surviving Analysis Run vehicle is #416 at
03f8de2ed0a0fb842d2022d411814e440df7cfb4. Fresh comparison is diverged with protected main as merge base: this child has 14 unique commits and #416 has 81. Preserve the unique source/tests/ADR/doctoring/traceability delta through an ordinary conflict-resolving non-force fold; do not close this child until successor inheritance is verified.Scientific and temporal boundary
Protected main already owns
analysis_engine::fit_lineage_criterion_posteriors; this PR does not reimplement Jeffreys fitting. It adds the request/receipt/cutoff application boundary needed to expose that fitter aslineage_criterion_v1.The original branch was not actually cutoff-safe. Four review findings were valid: observations lacked availability provenance, equivalent RFC 3339 cutoffs were compared textually, malformed event-time strings reached the fitter, and pair/draw work was unbounded before posterior materialization.
Current repair lineage:
f475a312dde77aa3c316b5249f3eb2b0b036835bproves equivalent RFC 3339 spellings must bind the same cutoff instant and malformed predecessor/successor draw timestamps must fail closed. Repaira33ee6807ab843b11d085a28b365fd08b7948810usesKnowledgeCutoff::instant()and typedEventTimeparsing, and separates terminal provider validation (validated) from the artifact domain claim.8f4523cf33f75c99a7f3d827745f5580d5139b69adds explicit per-pair snapshot/availability provenance, historical replay invariance, cross-snapshot/alignment refusal, and resource-budget contracts. Repaire6de3aad0ded19eeefeb67a7f9dc1795025d3b1bcensors same-snapshot future-unavailable observations before event-time/scientific admission, rejects cross-snapshot rows, bounds raw pair cardinality, and bounds admitted pair × draw materialization.55edf20de86ac42540c294ad333d20d8cc4d045epromotes canonicalcorpus_split::cutoff_eligibleto a runtime dependency.01ce4979e1c19702a188dd96e2f3bb2f81e6f5becloses the remaining pre-fit temporal/resource gap: draw-count budget is rejected before observation scanning; visible draw vectors must match the requested count before timestamp parsing; every predecessor/successor draw pair is typed and must preserve predecessor ≤ successor event-time order, matching the protected-main producer contract; admitted pair × draw budget is enforced incrementally before parsing/fitting.a500e4eb6ccebd212f91c6d6d9edf1f274fa1a2fand doctoring2b666d94df1454157700dafe5edf5448de28d9e0make those exact contracts code-current. ADR 0063 isProposed, notAccepted.from_jsoncap remains an untrusted-input boundary. A maximal-valid escaping test proves canonical output stays below the cap, replacing the formerly unreachable post-validation egress branch rather than manufacturing a coverage fixture.Historical replay invariant: within the raw operational input bound, evidence whose pair-level
AvailableTimeis after the requested cutoff cannot affect scientific admission, event-time validation, artifact counts, or terminal scientific result. Cross-snapshot provenance remains a hard error rather than historical censoring.Event-time draws, evidence availability, and the knowledge cutoff remain distinct clocks. Pair-level availability means the complete pair observation became usable as evidence and must not precede either endpoint's availability; it is not inferred from event-time draws or record order.
Claim boundary
Artifact inference status remains
independent_tdt_criterion_not_date_from_record_order.AnalysisResultSummary.validation_statusis provider-authored status and is exactlyvalidatedon success. Raw posterior values and pair identities remain with the scientific fitter.This slice is not method effects, case deletion, corpus-background refusal, template/copy/style/modality identity, a Bayesian sampler, GPU execution, or topic birth/split/merge.
ADR / docs authority
The branch ADR and doctoring are current to the implementation. Shared
docs/adr/README.md,docs/TRACEABILITY.md, anddocs/product-technical-gap-baseline.mdremain #435 single-writer consolidation surfaces. The shared ADR index must not advertise ADR 0063 as Accepted before protected merge. PR comments/body text do not count as checked-in docs completion.Review and merge gate
All four original inline review findings were answered with exact repair lineage and resolved. Submitted reviews are COMMENTED only; there is no qualifying current-head APPROVE.
Live organization ruleset 18156473 requires one qualifying current-head approval, dismisses stale approvals on push, requires all review threads resolved, and requires central workflows. The former body text claiming two approvals was stale and has been removed. No self-approval or admin bypass is used.
Exact-head workflows for
2b666d94df1454157700dafe5edf5448de28d9e0are freshly admitted: Rust Foundation CI34798603239, Documentation Quality34798603230, Security Scan34798603229, SAST Semgrep34798603174, and CodeQL PR34798603164; at the latest read they are queued/pending. This body therefore does not claim GREEN, 100% coverage, Ready, or merge readiness. Predecessor checks/reviews do not transfer.Verification
cargo fmt --all -- --checkcargo test -p analysis_enginecargo clippy -p analysis_engine --all-targets -- -D warningspython3 scripts/validate_documentation.pyDo not force-push, destructively rebase, self-approve, weaken required checks, suppress scanners, use skip/xfail or coverage-denominator tricks, or close this child before verified successor inheritance.