Close the last canon anchors: three tokens and three moved onto the lines their prose names

This commit is contained in:
heaven 2026-09-16 22:02:07 +03:00
parent 3036f8c176
commit 9d636bb11d

View file

@ -357,7 +357,7 @@ drop юнит несёт причину ПЕРВОГО выпавшего чле
### 2.9. Подпись — набор решений — ✓ выведено
Конвейер заменяет банк целиком (`store/migrate.go:169-170`), поэтому `PATCH /term/{id}` молча не
Конвейер заменяет банк целиком (`store/migrate.go:169-170`=`aggregation/classification live in the pipeline`), поэтому `PATCH /term/{id}` молча не
работает. Механика дословно: «for EACH term either promote it into the mined-delta file OR decline it
in the mined-rejects file, then resume» (`backend/internal/pipeline/mining.go:58`=`func (r *Runner) runBankMiningStop` — ⚠ испр. 16.09: было :81,243; ⚠ фраза «the stop clears once
every proposed term is promoted or rejected» ОПРОКИНУТА D39.144 — движок авто-продолжает с
@ -1087,7 +1087,7 @@ $1.6, спишем по факту», и закрытие после прого
| `DELETE /books/{id}`, `GET /runs/{id}` | колонки есть | НЕ ПОСТРОЕНО (заведено 0.3.0) — роутер монтирует **19 операций из 21** ⚠ (испр. 05.09: `PATCH /books/{id}` СМОНТИРОВАН платформенным паком `7e2226a`, акт D39.201; счёт 18→19) (испр. 05.09: дверь выдачи построена `adf5e53`, прежнее «15 из 20» протухло) | ⚠ носитель «вход P7» ИЗРАСХОДОВАН (пак P7 принят D39.153); живой носитель — `platform/BACKLOG.md` П-17 и очередь CURRENT-STATE |
| `GET /books/{id}/chapters`, `/units` | материализация манифеста | **ПОСТРОЕНО P7**`httpapi/reading.go`, материализатор `internal/readmodel` | закрыто D39.153 |
| `GET /books/{id}/notes` | `unit_done` несёт флаг и причину (`runevents.go:126-135`), платформа хранит (`sink.go:227-233`), колонка `notes.reason` заведена под это | канал ЕСТЬ; не хватает карты «причина → код → фраза» (приложение А) и проекции | приложение А + ⚠ носитель «вход P7» ИЗРАСХОДОВАН (D39.153) |
| `GET /books/{id}/bank` | движок пишет сайдкар всего банка (`pipeline/bankexport.go:16-33,72`, D39.122) | ⚠ пере-снято 0.5.0: проекция платформы ПОСТРОЕНА (P7 — маршрут в `contractSurface`, `wireBankPage` в `httpapi/reading.go`, `SaveBank` в `pgstore`); форма синхронна канону с лендингом P9: счётчики `pending_decisions`/`complete` сняты с проекции (`PD-399`) | закрыто D39.162 |
| `GET /books/{id}/bank` | движок пишет сайдкар всего банка (`pipeline/bankexport.go:16-33,72`=`the bank lives in the engine`, D39.122) | ⚠ пере-снято 0.5.0: проекция платформы ПОСТРОЕНА (P7 — маршрут в `contractSurface`, `wireBankPage` в `httpapi/reading.go`, `SaveBank` в `pgstore`); форма синхронна канону с лендингом P9: счётчики `pending_decisions`/`complete` сняты с проекции (`PD-399`) | закрыто D39.162 |
| ~~`POST /bank/decisions`~~ | стоп-механика майнера | ⚠ **НЕ «не построено», а ОТМЕНЕНО**: было построено P7 и СНЯТО 22.08 вместе с пер-термной моделью подписи (D39.144, слово владельца). **0.5.0 снёс и канон-половину — `PD-370` закрыт этим минором**; преемник — строка `POST …/bank/corrections` ниже | отменено D39.144; снесено 0.5.0 |
| `POST /books/{bookId}/bank/corrections` | `tmctl bank-apply` — движковая половина ПОСТРОЕНА (D39.158, лендинг `d1eb8a9`) | **ПОСТРОЕНО пакетом P9**: перевод словаря (`platform/internal/ingest/bankdecisions.go`), спавн глагола (`runner/bankapply.go`), раскладка отказов и пер-книжная сериализация (`runs/bank.go`), дверь синхронная. Флаг `bank_corrections_enabled` следует включённости прогонов (`cmd/tmplatformd/runner.go:195`) — дверь спавнит тот же глагол | закрыто D39.162 |
| `GET /books/{id}/events` (SSE) | эмиттер шва построен (D39.131) | **ПОСТРОЕНО P7**`httpapi/stream.go`, поток регистрируется ВНЕ слоя сжатия (сжатие буферизует поток — единственное, что канон запрещает этому маршруту) | закрыто D39.153 |
@ -1335,7 +1335,7 @@ focus»), то есть цена платится на горячем пути
код платформы: настройка живёт в артефакте деплоя, и вернуться она может без единой правки Go.
2. **Предложенная форма неверна по СМЫСЛУ, даже если бы случай был.** «Лечится покупкой / не
лечится» — булево, а суточный потолок это ОКНО: он снимается сам в полночь UTC
(`store/ledger.go:60-72`, `todayUTC()`). Клиент, прочитавший «не лечится», спрячет кнопку
(`backend/internal/store/ledger.go:60-72`=`ReserveDeniedBook`, `todayUTC()`). Клиент, прочитавший «не лечится», спрячет кнопку
навсегда там, где честный ответ — «не сейчас». Булево, у которого один из двух исходов врёт,
хуже, чем отсутствие поля.
3. **Второе значение enum — та же проблема плюс своя:** оно называет настройку чужого файла на
@ -1361,8 +1361,8 @@ focus»), то есть цена платится на горячем пути
### G. Draft-only конвейер (PD-202) — ОТВЕЧАЮ: ДА, начерновленная глава «сделана»; правлю канон
Проверено чтением обеих зон, и цена выше заявленной. У движка деплой без второго прохода — не
экзотика: разбиение выводится из РОЛЕЙ стадий (`pipeline/waverun.go:43-53`), конфиг требует лишь
«хотя бы одна стадия» (`config/pipeline.go:841`), ветка живая и покрыта тестом
экзотика: разбиение выводится из РОЛЕЙ стадий (`pipeline/waverun.go:43-53`=`non-translator (editor/other) stage`), конфиг требует лишь
«хотя бы одна стадия» (`backend/internal/config/pipeline.go:926`=`at least one stage is required` — ⚠ испр. 16.09: было :841), ветка живая и покрыта тестом
(`contractblockers_test.go:115-136`); в репозитории такого конфига пока нет, но выбирает его
оператор, и платформа шаблон не читает. У платформы `units_done` — жёстко второй проход
(`pgstore/sink.go:252-263`, `readmodel.go:200-208`).
@ -1390,7 +1390,7 @@ focus»), то есть цена платится на горячем пути
### H. Снятие замечания (PD-298) — СВЕРЕНО С ДВИЖКОМ ПЕРВЫМ, как просила зона; механизма НЕ строим
Порядок соблюдён: сначала чтение движка. Результат — **переход достижим у драйвера и НЕ достижим на
проводе**. `flagged` вычисляется на каждой эмиссии, а не хранится (`pipeline/events.go:351,377-379`,
проводе**. `flagged` вычисляется на каждой эмиссии, а не хранится (`backend/internal/pipeline/events.go:382`=`func (e *emitter) unitResolved` — ⚠ испр. 16.09: было :351,377-379,
`waverun.go:139-140,205-206`), и `redrive`/`--resnapshot`/правка исходника пере-атакуют юнит, так
что второе разрешение законно может выйти `flagged=false`. Но эмиссия идёт через
announce-once-леджер: ключ `unit:<book>:<wave>:<chapter>:<unit>` не несёт ни снапшота, ни прогона