diff --git a/tradein-mvp/frontend/src/app/mera-public/_components/v3/CostOfErrorV3.tsx b/tradein-mvp/frontend/src/app/mera-public/_components/v3/CostOfErrorV3.tsx
index c90201f6..1d700573 100644
--- a/tradein-mvp/frontend/src/app/mera-public/_components/v3/CostOfErrorV3.tsx
+++ b/tradein-mvp/frontend/src/app/mera-public/_components/v3/CostOfErrorV3.tsx
@@ -16,6 +16,14 @@
* единицу, которой её не мерили: подпись приведена к измеренному, а источник
* назван прямо в ней, а не только в `note` под плиткой.
*
+ * ЗАГОЛОВОК БЕЗ СРОКА (аудит 30.08). Стояло «против двух месяцев вашей
+ * жизни»: величина вписана в компонент руками, тогда как обе цифры секции
+ * приходят из `/stats` с выборками, а «двух месяцев» нет ни в одном замере.
+ * Подставить измеренную экспозицию вместо неё нельзя — это другая величина:
+ * `median_listing_age_days` считается по объявлениям, которые ЕЩЁ ВИСЯТ
+ * (цензурированная выборка, см. public-api.ts), и сроком продажи не является.
+ * Поэтому срок убран, а не заменён числом.
+ *
* ЧЕГО ЗДЕСЬ БОЛЬШЕ НЕТ. Плитки «×2,4 дольше продаётся квартира с завышенной
* ценой»: замер даёт ×1,04 (79 дней против 76), и это уже с цензурой в пользу
* заявления. Её место заняла доля снижающих цену — измеренная величина про то
@@ -77,7 +85,7 @@ export function CostOfErrorV3({ stats }: { stats: LandingStats }) {
ПОЧЕМУ ЭТО ВАЖНО
- {`${SERVICE_PRICE_RUB} ₽ против двух месяцев вашей жизни`}
+ {`${SERVICE_PRICE_RUB} ₽ против ошибки в цене вашей квартиры`}
diff --git a/tradein-mvp/frontend/src/app/mera-public/_components/v3/HeroV3.tsx b/tradein-mvp/frontend/src/app/mera-public/_components/v3/HeroV3.tsx
index 42435255..670efdc2 100644
--- a/tradein-mvp/frontend/src/app/mera-public/_components/v3/HeroV3.tsx
+++ b/tradein-mvp/frontend/src/app/mera-public/_components/v3/HeroV3.tsx
@@ -28,6 +28,11 @@
* похожие объявления УЖЕ висят (`deals.days_on_market` пуст, сверять прогноз
* срока не с чем). Обещание приведено к этой величине.
*
+ * ПОДЗАГОЛОВОК БЕЗ СРОКА (аудит 30.08). Стояло «не зависли НА ПОЛГОДА» —
+ * длительность, которой нет ни в одном замере; ближайшая измеренная величина
+ * (медианная экспозиция активного объявления) считается по тем, кто ещё
+ * висит, и сроком продажи не является. Срок убран, а не заменён числом.
+ *
* ЧЕГО В ТЕКСТЕ БОЛЬШЕ НЕТ: обещания «каждый такой прогноз мы потом сверяем с
* фактом сделки». Контура сверки прогноза клиента с его сделкой в продукте не
* существует (`trade_in_leads` — 4 строки без полей исхода), и обещать его
@@ -105,7 +110,7 @@ export function HeroV3({ stats }: { stats: LandingStats }) {
Мы называем реальную цену вашей квартиры — чтобы вы не продали её
- дешевле и не зависли на полгода.
+ дешевле рынка и не зависли в продаже.
diff --git a/tradein-mvp/frontend/src/app/mera-public/_components/v3/ObjectionsV3.tsx b/tradein-mvp/frontend/src/app/mera-public/_components/v3/ObjectionsV3.tsx
index e5cc5b1e..b1e9042c 100644
--- a/tradein-mvp/frontend/src/app/mera-public/_components/v3/ObjectionsV3.tsx
+++ b/tradein-mvp/frontend/src/app/mera-public/_components/v3/ObjectionsV3.tsx
@@ -8,9 +8,21 @@
*
* Ответы НЕ из макета (там реквизит рендера): собраны из уже выверенной
* честной копии продукта — content.ts (FAQ), oferta/refund. Вопрос про факт
- * сделки отвечаем тем, что в продукте ЕСТЬ (сделки Росреестра + снятие
- * объявлений с публикации), а не макетной формулировкой про «отметки
- * продавцов», механики которых не существует.
+ * сделки отвечаем тем, что в продукте ЕСТЬ (сделки Росреестра, сверка
+ * прогноза с ценой ДКП), а не макетной формулировкой про «отметки продавцов»,
+ * механики которых не существует.
+ *
+ * СНЯТИЕ ОБЪЯВЛЕНИЙ ОТСЮДА УБРАНО (аудит 30.08). Ответ обещал, что мы
+ * «отслеживаем снятие объявлений с публикации» и считаем по этому расхождение
+ * прогноза с реальностью. Ни одного из двух не происходит: расхождение
+ * считается в `app/tasks/landing_showcase_deals.py` и
+ * `backend/scripts/backtest_estimator.py`, и оба берут ТОЛЬКО цену ДКП;
+ * признака снятия в данных нет вовсе — `listing_source_snapshot.py` не пишет
+ * delisted/relisted намеренно (не выводимы при покрытии обхода 10-35%), на
+ * проде 0 таких строк в `listing_source_events`, а `deals.days_on_market`
+ * заполнена 0 из 108 623. Страница при этом сама себе и противоречила:
+ * `AccuracyV3` двумя блоками выше зовёт ту же величину «медианной экспозицией
+ * АКТИВНОГО объявления» именно потому, что снятие сделкой не является.
*
* ВЕСЬ `FAQ` ИЗ content.ts ИМПОРТИРУЕТСЯ, А НЕ ПЕРЕПИСЫВАЕТСЯ. Так было не
* сразу: при переносе брались только `how-do-you-know` и `why-region`, а
@@ -74,7 +86,8 @@ const ITEMS: readonly Objection[] = [
{
q: "Откуда вы знаете факт сделки?",
a: [
- "К объявлениям мы добавляем зарегистрированные сделки Росреестра и отслеживаем снятие объявлений с публикации. По этим данным считается расхождение прогноза с реальностью — и честно показывается, на скольких объектах построен каждый расчёт.",
+ "Зарегистрированные сделки Росреестра — это цены договоров купли-продажи, а не пожелания продавцов. По ним же мы проверяем себя: прошлые сделки прогоняются через тот же расчёт, и прогноз сравнивается с ценой ДКП — медианное расхождение и число сделок, на которых оно посчитано, стоят в шапке этой страницы.",
+ "Снятие объявления с публикации сделкой не считаем: по нашим данным нельзя отличить продажу от того, что объявление просто убрали или до него не дошёл обход. И в отчёте, и здесь честно показывается, на скольких объектах построен расчёт.",
],
},
{