diff --git a/docs/BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md b/docs/BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md index 55639739..07b0a128 100644 --- a/docs/BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md +++ b/docs/BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md @@ -15,7 +15,12 @@ | промахов перечислено поимённо в `postcheck_detail` | **18** | | ⛔ счётчик `n_postcheck_miss` | **0** ⚠ **при знаменателе 2** — подписанных термов в прогоне ровно два (`方源`, `古月山寨`), и обе их формы отгружены | -Восемнадцать расхождений **найдены и записаны в деталь поимённо**; счётчик, который называется «промахи», +⛔ **ИСПР. 11.09 — ЧИСЛО 18 БОЛЬШЕ НЕ ДЕЙСТВИТЕЛЬНО, настоящих СЕМЬ.** Замер той же сессии: из восемнадцати +**одиннадцать ложные** — банковская форма доехала до читателя в том же юните СКЛОНЁННОЙ, а `SameStem` её не +признал (стеммер снимает ровно одно окончание; носитель — строка бэклога **419**). Ниже читай «18» как +«18 записей пост-проверки, из которых 7 настоящих». + +Восемнадцать записей **найдены и записаны в деталь поимённо**; счётчик, который называется «промахи», говорит **ноль**, потому что промахом считается только ПОДПИСАННЫЙ термин (`internal/membank/mempostcheck.go`, греп `Confirmed`), а все восемнадцать — `ambiguous`. ⚠ **Это ЗАМЫСЕЛ, а не баг:** комментарий там же прямо говорит, что считать `ambiguous` промахом значило бы инвертировать контракт. ⛔ И ноль без знаменателя @@ -57,7 +62,7 @@ 1. `CLAUDE.md` — цели владельца и гардрейлы. 2. `docs/architecture/18-bank-ontology.md` — РАТИФИЦИРОВАНА, обязательное пре-чтение перед всем, что трогает банк. -3. Строки бэклога **406** · **407** · **417** · **418** (`docs/BACKLOG.md`, греп `^| N |`) — предмет; и +3. Строки бэклога **406** · **407** · **417** · **419** (`docs/BACKLOG.md`, греп `^| N |`) — предмет; и **408** только в части, названной §4.5. 4. `docs/research/34-memory-bank-quality-audit.md` — **через ревю-шапку** (статус: ФАКТУРА; из 15 находок верификация отвергла 14, почти все за ЗАВЫШЕННЫЙ ВЕС; синтез написан после неё). @@ -154,14 +159,19 @@ **пример выше на данных прогона A НЕ ВОСПРОИЗВОДИТСЯ — демонстрировать придётся на синтетической фикстуре, и это законно.** Знай до того, как потратишь час на поиск носителя. -### 4.4 ТРЕТЬЕ ОПРЕДЕЛЕНИЕ `spread` ЗАВОДИТЬ НЕЛЬЗЯ — **делай РОВНО так** +### 4.4 ⛔ ПУНКТ ОТОЗВАН 11.09 — РАСХОЖДЕНИЯ, РАДИ КОТОРОГО ОН ПИСАЛСЯ, НЕ СУЩЕСТВУЕТ -Два уже расходятся (ряд **418**): на 69 термах прогона счётчик `spread` равен длине списка форм у 68, и один -терм даёт 4 при трёх формах; плюс `other proposals` карты подписи даёт 2 там, где `drafts:` даёт 3. **Твой -счёт обязан идти тем же `foldVariants`, что и существующий**, и иметь пин равенства на данных прогона A. -⚠ **Пин вешай на ЗАМОРОЖЕННЫЙ артефакт** (`~/tm-coldrun-a/evidence/bankstop-paid/`): в живой карте подписи -ряда `古月山寨` уже НЕТ — он подписан и вышел из карты предложений. -Иначе пак добавит третье число к двум расходящимся. +Пункт требовал не заводить «третьего определения `spread`», потому что «два уже расходятся». **Расхождения +нет — это была моя ошибка чтения**, и поймала её ты же. Движок печатает ДВЕ РАЗНЫЕ величины В ОДНОЙ СТРОКЕ: +`spread=%d conventions=%d` (`backend/internal/pipeline/mining.go:542`), где `Spread()` считает Σ сырых форм, а +`Conventions() = len(Variants)` — свёрнутые классы; комментарий у определения +(`backend/internal/terminology/terminology.go:684-685`) говорит это прямым текстом. На 69 термах прогона +противоречий **ноль**: 60×(1,1) · 6×(2,2) · 2×(3,3) · 1×(4,3). Ряд 418 удалён, разбор — эррата в шапке +журнала решений. + +**Что остаётся в силе и почему:** твой счёт всё равно идёт тем же `foldVariants`, что и существующий, и пин +равенства ты вешаешь — но не «чтобы не завести третье число», а **чтобы объяснение держалось прибором, а не +текстом**. Пин — на ЗАМОРОЖЕННЫЙ артефакт (`~/tm-coldrun-a/evidence/bankstop-paid/`). ### 4.5 ЛИНТ СИДА — **только Go-половина; данные НЕ трогать**