Re-point the zone journal anchor onto the re-cut comment that moved again

This commit is contained in:
heaven 2026-09-06 02:10:41 +03:00
parent 98624c7cfd
commit a5ef47cd11

View file

@ -36,9 +36,19 @@
волна по всей книге больше не фанится: `volumeScope.allows` гейтит и draft-волну (`leader`-карта
«flattened for the draft wave», `backend/internal/pipeline/volume.go`). ⇒ **посылка стала истинной, а
формула — нужной:** непочерновленный остаток заказа это реальная работа прогона, и удаление члена
сделало бы знаменатель полосы неверным по-новому. Снята ПРИЧИНА дефекта, носитель оставлен. Полоса
при этом осталась в ГЛАВАХ — канон §Progress говорит «in chapters», перевод её в юниты это отдельная
контрактная семантика, которой в составе минора (строка 279) нет.
сделало бы знаменатель полосы неверным по-новому. Снята ПРИЧИНА дефекта, носитель оставлен.
**ИСПРАВЛЕНО ПЯТЫМ ЗАХОДОМ 06.09, И ЭТО БЫЛА МОЯ ЛОЖЬ О СВОЁМ ЖЕ КОДЕ.** Здесь стояло «полоса при
этом осталась в ГЛАВАХ ⇒ перевод её в юниты это отдельная семантика, которой в составе минора нет».
**Неверно.** `runDone`/`runTotal` (`internal/pgstore/readmodel.go:632,636`) первой же ветвью — `when
r.ordered_units is not null then` — считают полосу в ЮНИТАХ, и это намеренно и пиньнуто
(`runs.TestACharacterOrdersBarIsCountedInWhatItActuallyBought`, страж обратной стороны —
`TestAChapterOrderKeepsTheBarItAlwaysHad`). Абзац остался от редакции ДО того, как юнитовая ветка была
добавлена, и не был пере-читан. **Цена лжи не нулевая:** на этой фразе состав минора был сдан без
третьего случая `Progress`, канон 0.11.0 залендился (`docs/architecture/14-api-contract/openapi.yaml`
§`Progress`, строки 1449, 1479, 1483) со словами «in chapters» / «Chapters of this run's own work», —
и сборка сегодня шлёт по этому полю ЮНИТЫ. Это **ложь на проводе**, заведённая не кодом, а отчётом.
Позиция внесена в состав минора ниже; оркестратору написано отдельно.
### РЕШЕНИЯ, КОТОРЫЕ ПРОМТ ОСТАВИЛ ЗОНЕ, — с доводами
@ -391,8 +401,25 @@ blocked: Blocked | null
клиент обязан деградировать на незнакомом слове, а не отказывать. `covers_none` при `chapters_left: 0`
это ЗАКОНЧЕННАЯ книга, при положительном — счёт, не покрывающий следующую главу.
**`Run`** — `ceiling_chapters``ordered_chapters`; добавлены `delivered_chapters: integer` и
`term_consistency_funded: boolean`.
**`Run`** — `ceiling_chapters``ordered_chapters`; добавлены `delivered_chapters: integer|null` и
`term_consistency_funded: boolean`. ⚠ `null` у первого — не «ноль»: заказ, выраженный ЗНАКАМИ,
останавливается ВНУТРИ главы и не закрывает ни одной. **Залендено оркестратором в 0.11.0, сверено
06.09** (`openapi.yaml:1827-1835`).
**`Progress` — ТРЕТИЙ СЛУЧАЙ, КОТОРОГО В СОСТАВЕ НЕ БЫЛО И В КАНОНЕ 0.11.0 НЕТ. Внесено пятым
заходом 06.09; до него состав нёс мою ложную фразу «полоса осталась в главах».** Канон говорит «in
chapters» в шапке схемы и в обоих счётчиках (`openapi.yaml:1449,1479,1483). Сборка для заказа,
выраженного ЗНАКАМИ, шлёт по `done`/`total` **ЮНИТЫ** (`readmodel.go:632,636`, ветвь
`when r.ordered_units is not null`; пин `runs.TestACharacterOrdersBarIsCountedInWhatItActuallyBought`).
⇒ клиент, читающий канон, нарисует «3 из 10 глав» там, где это 3 из 10 юнитов. Требуется абзац той же
формы, что уже стоит у РЕ-ПРОХОДА («declared shape, not chapters — do not render it as “0 of 1
chapters”»), плюс **имя различителя**: `delivered_chapters: null` ⇒ полоса юнитовая;
`delivered_chapters: 0` при `ordered_chapters: 0`ре-проход; `ordered_chapters > 0` ⇒ главы. Сегодня
этот различитель существует на проводе, но нигде не назван, и клиент обязан его УГАДАТЬ.
⚠ И само слово «юнит» на этой поверхности не определено: наружу оно не выходило никогда, а `source_chars`
меряет тот же заказ ЗНАКАМИ. Либо канон вводит единицу, либо счётчики этого случая переводятся в знаки —
это решение оркестратора, не зоны; зона называет цену обоих: во втором случае двигается `unitDone`/
`unitTotal` и их пины.
**`Book`** — добавлены `character_count_exact: boolean` и `structure: "declared"|"detected"|"none"|null`.
⚠ Семантика `character_count: null` НЕ ТРОНУТА («книга ещё грузится») — форма признака ратифицирована
@ -4203,7 +4230,7 @@ mutation-catch (спутать пары «числитель×база»); ко
**⛔ ПИНГ ОРКЕСТРАТОРА №19 — 23.08, ЗОНЕ ПЛАТФОРМЫ.** ⚠ Его собственная шапка звала находки «тремя», а нумеровала ЧЕТЫРЕ — считать по нумерации. Живых из четырёх ДВЕ: находка 1 ниже дословно, находка 4 — строкой регистра. Две закрыты паком P9 и проверяются грепом, а не памятью: блокер провайдерских ключей (строка **211** единого бэклога) — ключи едут аргументом `--keys-file`, греп `TM_PLATFORM_ENGINE_KEYS_PATH`; дубль движковой конвенции пути (строка **213**) — `runner.projectDB` снесён, путь берётся из `artifacts.bank_export` манифеста. Находка 4 (мёртвое поле `ingest.StatusReport.UnsignedBankTerms`) жива и несёт свой якорь строкой `PD-396` (греп `UnsignedBankTerms` в регистре и в `platform/internal/ingest/resync.go`).
1. **Пере-нарезка книги сносит ВСЕ решения юнитов и пересчитывает прогресс из пустоты.**
`internal/pgstore/readmodel.go:153`=`a re-cut drops the resolutions of the previous cut`
`internal/pgstore/readmodel.go:177`=`a re-cut drops the resolutions of the previous cut`
это не догадка, там собственный комментарий кода. Строку в ваш регистр я не заводил: решать вам,
намеренная это семантика пере-разреза или дефект, и что делать со счётчиками, которые после
этого показывают ноль сделанного на книге, где работа была.