Skip to content

feat(analysis): execute scientific acceptance on loopback lifecycle - #370

Closed
seonghobae wants to merge 7 commits into
feat/scientific-acceptance-http-lifecycle-gap-003afrom
feat/scientific-acceptance-loopback-engine-gap-003a
Closed

feat(analysis): execute scientific acceptance on loopback lifecycle#370
seonghobae wants to merge 7 commits into
feat/scientific-acceptance-http-lifecycle-gap-003afrom
feat/scientific-acceptance-loopback-engine-gap-003a

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Consolidation decision — closed because its scientific executor depends on retired #356

This PR is not merged. Exact head 3f9e2d8b39d2d92ee5d057a8c568087b36dbb74e explicitly runs #356 submit_validation_run / complete_validation_run and returns tepp.scientific_acceptance.v1; it also carries the same generic SE-gate input whose authority model was rejected when #356 closed.

Preserve its useful execution/lifecycle evidence for the coherent #166 Validation + Analysis Run vehicle, but rebuild the executor around the corrected ownership model:

  • estimator/truth artifacts originate from the owning Rust estimator/recovery path;
  • Validation Evidence computes/report metrics and applicability but does not decide global scientific acceptance;
  • Scientific Claim Promotion is separate, formulation-specific and recovery-contract driven;
  • transport success never implies claim promotion;
  • execute/lifecycle idempotency, consumer isolation, wrong-profile and digest-mismatch tests from this branch must be preserved on the folded exact head.

Do not rebase this exact branch onto a renamed acceptance artifact. Its central execution authority is invalid; branch, tests, reviews and doctoring remain as RED lineage.

GAP-003A first slice for issue #166. submit_validation_run binds
cutoff-eligible evidence, snapshot, knowledge cutoff, CPU f64 model,
seed, backend, and precision to a hash-stable tepp-validation-{32 hex}
receipt that carries no scientific metrics. complete_validation_run
emits tepp.scientific_acceptance.v1 through validation_core (RMSE, bias,
Wilson coverage, temporal-order accuracy, SE-aware gate).

LLM-authored recovery, non-finite inputs, empty or duplicate evidence,
snapshot mismatch, and cutoff-empty corpora fail closed. Not
implemented-main. Postgres persistence remains GAP-003B.

ADR 0026.
Point the GAP-003A Current head SHA column at exact PR #356
f8a4dad. Library-level binding only; not implemented-main.
Refuse completion when recovery vectors belong to a different run,
tenant, seed, or eligible evidence set. Include tenant workspace and
output profile in the canonical digest so a tampered profile cannot
pass. Bound recovery vector length and record a SHA-256 of the stamped
vectors on tepp.scientific_acceptance.v1. Evidence fields stay private
after completion.

This is still the GAP-003A library slice (ADR 0026). It is not
implemented-main and does not persist runs (GAP-003B).
GAP-003A Devin repair on #356. se_gate_k is part of the submitted
scientific binding, not a completion-time choice. Changing k changes
run identity. k must be finite, non-negative, and at most
MAX_SE_GATE_K = 8. RecoveryObservation must match the receipt k;
post-hoc or oversized multipliers fail closed. Receipt fields are
private. Empty and length-mismatched recovery vectors fail at
construction.

Wasserstein and Lazar (2016) refuse post-hoc threshold shopping.
Not implemented-main. Postgres persistence remains GAP-003B.

ADR 0026.
Point the GAP-003A Current head SHA column at exact PR #356
7916603. Pre-registered SE-gate k; not implemented-main.
…back

Merge origin/feat/validation-run-scientific-acceptance (#356) into the
GAP-003A lifecycle POST lineage so analysis_engine can execute on the
loopback path without duplicating the library bind. Keep ADR 0026 with
ADR 0027/0028. Persistence remains GAP-003B.
GAP-003A engine-on-loopback slice for issue #166. POST /v1/analysis-runs
stays a metric-free receipt. POST /v1/analysis-runs/{run_id}/execute on
ScientificAcceptanceLoopbackService runs submit_validation_run and
complete_validation_run, records running then terminal, and GET returns
tepp.scientific_acceptance.v1 without a caller-supplied artifact. The
execute body carries corpus, recovery, seed, and pre-registered SE-gate k
and refuses scientific_acceptance_json plus result-metric keys. Wrong
profile, LLM recovery, unknown run, consumer mismatch, already-terminal
status, and digest mismatch fail closed. tepp_api recognizes /execute and
refuses it so the raw listener cannot pretend to execute. This does not
duplicate the engine library, terminal-result DTO, GET, lifecycle POST,
cancel HTTP, loopback CLI, or collection GET. Persistence remains GAP-003B.
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

This was referenced Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant