feat(tradein/backtest): hermetic estimator regression gate — frozen fixture + baseline (#1966 PR 3/3) #1997

Merged
lekss361 merged 3 commits from feat/1966-backtest-fixture-gate into main 2026-06-27 12:55:36 +00:00

3 commits

Author SHA1 Message Date
f7d0bbd30e feat(tradein/backtest): frozen fixture + baseline + hermetic CI regression gate (#1966 PR 3/3)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
Commits the gzipped 277-deal prod fixture (frozen _price_from_inputs inputs),
the frozen backtest_baseline.json (overall MAPE 18.63% / bias -1.2%; per-segment
бизнес -21.5% / элит -38.6% — the systemic expensive-segment underestimation,
now measured), and a hermetic pytest gate that replays the fixture through the
full pricing spine (ZERO DB) and asserts metrics == baseline within float tolerance.

Relative regression gate, not an absolute SLA (live coverage ~55% is data-blocked
per #1966). To change estimator behaviour: regenerate the baseline
(--from-fixture --update-baseline, no DB) and justify the per-segment deltas in the PR.
The fixture (gzipped prod inputs) re-extracts rarely; the per-change artifact is the
3 KB baseline. Large-file hook excludes the fixture (re-extracted only on ground-truth refresh).

Refs #1966
2026-06-27 15:49:58 +03:00
1648da01c3 fix(tradein/backtest): order-based callable replay (platform-robust) + gzip fixture loading (#1966 PR 3/3) 2026-06-27 15:39:34 +03:00
5a73bbeb8e feat(tradein/backtest): --dump-fixture + hermetic replay_fixture + prod-parity (anchor gate, drop MIN_CANDIDATES skip) (#1966 PR 3/3) 2026-06-27 15:17:44 +03:00