МЕРА/оценщик: диапазон якоря закреплён тестом на FSD_K, мёртвый гейт gate_thin удалён, недостижимость guardrail под инвариантом (#3590) #3593

Open
bot-backend wants to merge 1 commit from fix/3590-fsd-k-test-dead-branches into main

1 commit

Author SHA1 Message Date
66dfb030e7 МЕРА/оценщик: диапазон якоря закреплён тестом на FSD_K, мёртвый гейт gate_thin удалён (#3590)
Some checks failed
CI Trade-In / changes (pull_request) Successful in 11s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 18s
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
CI Trade-In / frontend-checks (pull_request) Successful in 1m57s
CI Trade-In / backend-tests (pull_request) Failing after 6m18s
FSD_K задаёт видимый клиенту диапазон range_low_rub/range_high_rub, но гейт
регрессии его не видит: FSD_K=1.5 меняла 857 сделок из 1600 при зелёном гейте.
Новый тест подменяет _compute_same_building_anchor якорем с известным fsd и
нулевым спредом комплов и проверяет полуширину 1.65 × fsd на результате
estimate_quality. Ожидание задано литералом, а не импортом FSD_K: импорт
поехал бы вместе с мутацией.

gate_thin («n < 3 И FSD > 0.20») недостижим дважды: якорь возвращается только
при n ≥ SB_MIN_COMPS = 4, а FSD > 0.20 и так даёт confidence="low", то есть
срабатывает gate_low. В ответ API флаг не уходил (только в лог), поэтому ветка
удалена вместе с SB_GATE_MIN_N и SB_GATE_MAX_FSD. Поля Settings остаются в
проверке «не вернулись».

SB_GUARDRAIL_TOL оставлен и помечен как недостижимый по построению: цена якоря
есть взвешенное среднее, медиана или p70 того же пула, так что
est_ppm2 ≥ comp_min.

Тавтологичный test_fix1_thin_n_high_fsd_triggers_gate (min_comps=1 и копия
формулы) заменён тестом инвариантов на шести пулах: n ≥ SB_MIN_COMPS,
FSD > 0.20 ⇒ low, anchor_ppm2 ≥ comp_min_ppm2. Покрытие ветвей uplift, клипа и
FSD > 0.20 проверяется явно.

В комментарии content.ts старое имя estimate_imv_blend_weight → IMV_BLEND_WEIGHT.

Поведение на проде не меняется: гейт регрессии зелёный без перегенерации
baseline.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 18:40:47 +05:00