fix(forecast): §6 honesty layer — pegged deficit, non-residential caveat, segment/pipeline note (#1953) #2096

Merged
bot-backend merged 1 commit from fix/forecast-deficit-honesty-batchB-1953 into main 2026-06-29 11:26:36 +00:00
Collaborator

Контекст

Батч B пересборки report'а (#1953), из live-walkthrough Anton'а по 66:41:0702017:131. Пункт #5: дефицит −1.00 «затоварка» на всех горизонтах/сценариях.

Расследование (прод-данные): −1.0 КОРРЕКТНА — Кировский Комфорт n_available=12156 (дедуплено, verified через market_metrics) ÷ velocity ~100/мес = ~122-155 мес MOI; в текущем рынке (ставка 14.5%) затоварка genuine. НЕ баг, НЕ методологическая ошибка. future_online=0 — by-design #1959 (класс-агностичный pipeline §4.3 вне посегментного баланса). Проблема ЧИСТО презентационная — этот PR её чинит (данные не трогаем).

Изменения (frontend, презентация)

Что
B1 pegged-сигнал deficitPegState (helper, +8 тестов): когда |deficit_index|≥0.99 одного знака на ВСЕХ горизонтах → честная плашка «Сигнал на пределе шкалы: предложение ≫ спроса на всех горизонтах, −1.00 не различает горизонты, оценка грубая» над 6.1/6.2 + маркер «НА ПРЕДЕЛЕ» вместо ложно-точного «−1.00 ×4». Зеркально для +1.0 (острый дефицит)
B2 non-residential caveat product_tz.gate_caveat (раньше не рендерился нигде) поднят в заметную warn-плашку ВВЕРХ §6: «Участок не предназначен под жильё → прогноз справочный»
B3 §4.3↔§6 микрокопия под 6.1: почему future-предложение тут может быть 0 (посегментный баланс ≠ класс-агностичный pipeline §4.3)

Verify

  • type-check / eslint / prettier чисто · vitest 29 passed (incl. 8 новых на pegState)
  • само-ревью pegState-логики (all-saturated-same-sign, иначе дифференциация = не pegged)
  • 🔜 визуальный verify скриншотами на проде после деплоя

Roadmap #1953: A=микрокопия на проде · B=дефицит-честность (этот PR) · C=сети на карте · D=концепция.

## Контекст Батч B пересборки report'а (#1953), из live-walkthrough Anton'а по **66:41:0702017:131**. Пункт #5: дефицит −1.00 «затоварка» на всех горизонтах/сценариях. **Расследование (прод-данные):** −1.0 **КОРРЕКТНА** — Кировский Комфорт `n_available=12156` (дедуплено, verified через market_metrics) ÷ velocity ~100/мес = **~122-155 мес MOI**; в текущем рынке (ставка 14.5%) затоварка genuine. НЕ баг, НЕ методологическая ошибка. `future_online=0` — by-design #1959 (класс-агностичный pipeline §4.3 вне посегментного баланса). Проблема ЧИСТО презентационная — этот PR её чинит (данные не трогаем). ## Изменения (frontend, презентация) | | Что | |---|---| | **B1** pegged-сигнал | `deficitPegState` (helper, +8 тестов): когда `\|deficit_index\|≥0.99` одного знака на ВСЕХ горизонтах → честная плашка «Сигнал на пределе шкалы: предложение ≫ спроса на всех горизонтах, −1.00 не различает горизонты, оценка грубая» над 6.1/6.2 + маркер «НА ПРЕДЕЛЕ» вместо ложно-точного «−1.00 ×4». Зеркально для +1.0 (острый дефицит) | | **B2** non-residential caveat | `product_tz.gate_caveat` (раньше **не рендерился нигде**) поднят в заметную warn-плашку ВВЕРХ §6: «Участок не предназначен под жильё → прогноз справочный» | | **B3** §4.3↔§6 | микрокопия под 6.1: почему future-предложение тут может быть 0 (посегментный баланс ≠ класс-агностичный pipeline §4.3) | ## Verify - ✅ type-check / eslint / prettier чисто · vitest **29 passed** (incl. 8 новых на pegState) - ✅ само-ревью pegState-логики (all-saturated-same-sign, иначе дифференциация = не pegged) - 🔜 визуальный verify скриншотами на проде после деплоя Roadmap #1953: A=микрокопия ✅на проде · **B**=дефицит-честность (этот PR) · C=сети на карте · D=концепция.
bot-backend added 1 commit 2026-06-29 11:23:57 +00:00
fix(forecast): §6 honesty layer — pegged-signal plaque + non-residential caveat + segment/pipeline note (#1953)
All checks were successful
CI / changes (pull_request) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 57s
CI / openapi-codegen-check (pull_request) Successful in 1m51s
8fed54971f
Из live-walkthrough Anton'а (66:41:0702017:131): дефицит −1.00 «затоварка» на всех
горизонтах — данные КОРРЕКТНЫ (Кировский Комфорт: 12156 доступных ÷ ~100/мес = ~155 мес,
genuine затоварка при ставке 14.5%), но презентация ложно-точная/сбивающая.

B1: deficitPegState helper — детект насыщения (|deficit_index|≥0.99 одного знака на
    ВСЕХ горизонтах) → честная плашка «сигнал на пределе шкалы, −1.00 не различает
    горизонты, оценка грубая» над 6.1/6.2 + маркер «НА ПРЕДЕЛЕ» вместо ложно-точного ×4.
B2: поднял product_tz.gate_caveat в заметную плашку ВВЕРХ §6 (раньше не рендерился
    нигде) — «участок не под жильё → прогноз справочный».
B3: микрокопия почему future=0 (посегментный баланс vs класс-агностичный pipeline §4.3).

Edit-only, контракт не менялся. +8 unit-тестов на pegState.
bot-backend merged commit 1337fadb49 into main 2026-06-29 11:26:36 +00:00
bot-backend deleted branch fix/forecast-deficit-honesty-batchB-1953 2026-06-29 11:26:36 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2096
No description provided.