[Fable 5][P3] §14.2 price_feasibility: reason говорит «субсид. ставка», хотя платёж считан по рыночной key_rate+4.5 п.п. (~19%) #1225

Closed
opened 2026-06-13 04:49:46 +00:00 by bot-backend · 0 comments
Collaborator

Из армейского ревью Claude Fable 5 (2026-06-11)

Confirmed by 2/2 адверсариальных верификатора, severity P3 (correctness), confidence 0.72.

Файл

backend/app/services/forecasting/product_scoring.py:404

Evidence (цитата кода)

reason = (
        f"Прокси платежа ~{round(monthly_payment_rub / 1000.0)} тыс.₽/мес "
        f"(субсид. ставка, §7.9 — доступность относительная)."
    )

Why bug

affordability.py (#981 DoD) перешёл на рыночный прокси key_rate + 4.5 п.п. (rate_kind='key_rate_proxy', явно НЕ субсидированные ~7-8%), но §16-причина скора в клиентском §22-отчёте (ProductScore.reason) по-прежнему называет основу платежа «субсид. ставка» — читатель интерпретирует ~2.5x больший рыночный платёж как льготный. Ложное объяснение числа в выдаваемом контракте explainability.

Suggested fix

Заменить текст на «рыночная ставка (key_rate + спред), §7.9» либо подставлять afford.rate_kind в reason.

Verify notes

  • [real/P3] Трасса: compute_score_card (product_scoring.py:659) → compute_affordability, который использует ТОЛЬКО _current_market_rate = key_rate+4.5 п.п. (~19%, 'key_rate_proxy'); субсидированный путь не вызывается. Рыночный аннуитет (~105 тыс. vs ~50 тыс. при 7.83%) подписан «субсид. ставка» и через as_dict() кладётся как есть в scoring §22 клиентского отчёта — ложное объяснение на happy path. P3: число верно, слой advisory, дефект только в тексте reason.
  • [real/P3] Подтверждено: payment приходит ТОЛЬКО из compute_affordability с рыночной ставкой key_rate+4.5 п.п. (~19%, rate_kind='key_rate_proxy'); _current_subsidized_rate нигде не вызывается. Нет key_rate → payment=None → строка не эмитится, т.е. метка «субсид. ставка» ложна в 100% достижимых случаев. reason сериализуется в §22-отчёт (orchestrator→assemble_report) и противоречит degraded_reason affordability в том же payload. Git: текст устарел после 9ff80f3 (2026-06-04). Само число верно — P3.

Provenance

  • Finders: forecasting
  • Confidence: 0.72
  • Originally batched at: main@d796027
## Из армейского ревью Claude Fable 5 (2026-06-11) Confirmed by 2/2 адверсариальных верификатора, severity **P3** (correctness), confidence 0.72. ## Файл [`backend/app/services/forecasting/product_scoring.py:404`](backend/app/services/forecasting/product_scoring.py:404) ## Evidence (цитата кода) ``` reason = ( f"Прокси платежа ~{round(monthly_payment_rub / 1000.0)} тыс.₽/мес " f"(субсид. ставка, §7.9 — доступность относительная)." ) ``` ## Why bug affordability.py (#981 DoD) перешёл на рыночный прокси key_rate + 4.5 п.п. (rate_kind='key_rate_proxy', явно НЕ субсидированные ~7-8%), но §16-причина скора в клиентском §22-отчёте (ProductScore.reason) по-прежнему называет основу платежа «субсид. ставка» — читатель интерпретирует ~2.5x больший рыночный платёж как льготный. Ложное объяснение числа в выдаваемом контракте explainability. ## Suggested fix Заменить текст на «рыночная ставка (key_rate + спред), §7.9» либо подставлять afford.rate_kind в reason. ## Verify notes - [real/P3] Трасса: compute_score_card (product_scoring.py:659) → compute_affordability, который использует ТОЛЬКО _current_market_rate = key_rate+4.5 п.п. (~19%, 'key_rate_proxy'); субсидированный путь не вызывается. Рыночный аннуитет (~105 тыс. vs ~50 тыс. при 7.83%) подписан «субсид. ставка» и через as_dict() кладётся как есть в scoring §22 клиентского отчёта — ложное объяснение на happy path. P3: число верно, слой advisory, дефект только в тексте reason. - [real/P3] Подтверждено: payment приходит ТОЛЬКО из compute_affordability с рыночной ставкой key_rate+4.5 п.п. (~19%, rate_kind='key_rate_proxy'); _current_subsidized_rate нигде не вызывается. Нет key_rate → payment=None → строка не эмитится, т.е. метка «субсид. ставка» ложна в 100% достижимых случаев. reason сериализуется в §22-отчёт (orchestrator→assemble_report) и противоречит degraded_reason affordability в том же payload. Git: текст устарел после 9ff80f3 (2026-06-04). Само число верно — P3. ## Provenance - Finders: `forecasting` - Confidence: 0.72 - Originally batched at: main@d796027
bot-backend added the
Fable 5 ревью
label 2026-06-13 04:49:46 +00:00
Sign in to join this conversation.
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#1225
No description provided.