108 lines
11 KiB
Markdown
108 lines
11 KiB
Markdown
# Промт: бэкенд-сессия «КОНСИСТЕНТНОСТЬ КАК ЗАКОН» — приоритет владельца №1
|
||
|
||
Ты — бэкенд-сессия TextMachine. **Зона записи: `backend/`**. **Сессия НЕ коммитит** — готовое дерево
|
||
передаёшь оркестратору на лендинг. Чужие зоны (`platform/`, `frontend/`, `eval/`, `docs/`) не трогать;
|
||
расхождения — пингом в секцию «Бэкенд» файла `docs/PROGRESS.md`. `.env` не читать.
|
||
|
||
## Карта чтения — ЗАКОН, дальше только по её ссылкам
|
||
|
||
1. `CLAUDE.md` — цели и нормы. Особо: **комментарий не доказывает поведение, источник утверждения о
|
||
смысле — тест** · **тесты и гейты не подгонять под зелень** · **мутация засчитывается по ТЕКСТУ
|
||
сообщения, а не по факту красноты** · **отрицательный замер печатает контрольную величину**.
|
||
2. Строки бэклога **295**, **267**, **318**, **320**, **322** (`docs/PROGRESS.md`, греп `^| N |`) —
|
||
предмет пака целиком.
|
||
3. `docs/architecture/03-implementation-notes.md` — через баннер.
|
||
4. `backend/README.md` — механика движка.
|
||
5. `docs/architecture/12-go-style-notes.md` — норматив стиля, только больные места.
|
||
|
||
## Зачем этот пак
|
||
|
||
Приоритет владельца №1 — **консистентность терминов и голосов на всю книгу**. Сегодня она держится на
|
||
банке, а банк на проводе — закон для всех ролей. Пак закрывает четыре места, где этот закон либо не
|
||
доезжает, либо описан неверно, и одно место, где принятая работа может быть потеряна.
|
||
|
||
⚠ **Ни одна из этих строк не предлагает ослабить закон банка (`D39.104`).** Он ратифицирован, и
|
||
доказательств против него нет ни у одного голоса. Предмет — исполнение и честность описания.
|
||
|
||
## Состав — пять предметов, порядок мой, отступления объявляй
|
||
|
||
### 1. Подать подписанный канон в прогон (половина строки 295) — ПЕРВЫМ
|
||
|
||
Без этого полигон не может мерить приоритет №1 вообще: точность чекера меряется на прогоне, в котором
|
||
подписанный канон участвовал. Это разблокирует чужую зону, поэтому идёт первым.
|
||
|
||
**Приёмка:** прогон, где подписанный канон реально участвовал, предъявлен исполнением; что именно
|
||
поехало на провод — видно из артефакта, а не из отчёта.
|
||
|
||
### 2. Гард перекрытия окон при слиянии (строка 267)
|
||
|
||
Один термин в одном смысле может нести две конкурирующие формы, и обе доезжают на оба провода — дыра в
|
||
проверке схлопывания. Решение владельца 05.09 состоялось; строка несёт разбор.
|
||
|
||
⚠ **Смежное, проверь заодно:** совет оператору «пометь одну строку статусом» (строка **320а**) гвард
|
||
полисемии не исполняет — он статус НЕ СМОТРИТ вовсе. Либо совет приводится к тому, что код делает, либо
|
||
гвард учится смотреть статус. **Выбор объяви и обоснуй**, молча не решай.
|
||
|
||
### 3. Комментарий постчека — привести к поведению (строка 318)
|
||
|
||
Комментарий обещает, что промах ловит и случай «мы вложили неверный dst, и модель его исполнила (страх
|
||
владельца)». Код при найденной форме делает `continue`: **исполненная неверная строка промаха не даёт**.
|
||
⇒ метрика «нет промахов» означает «банк ИСПОЛНЕН», а читается как «исполнен ВЕРНО».
|
||
|
||
⛔ **Заказ здесь узкий: честный комментарий плюс пин.** Детектор правильности ЗНАЧЕНИЯ — не этот пак,
|
||
он живёт строкой **286** и упирается в замер точности, а не в код. Не строй его тут.
|
||
|
||
### 4. Не уничтожать и адресовать принятую редактуру (строка 322, части «а» и «б»)
|
||
|
||
Ре-проход пере-делывает затронутую единицу целиком тем же редакторским промптом; прежний текст остаётся
|
||
в чекпойнтах, **но без адреса** — ни одна строка статуса на него не указывает, экспорт не видит, отката
|
||
нет. И один путь уничтожает его физически: ре-проход флагнулся → `redrive` → сброс сносит чекпойнты
|
||
**флагнутой стадии по всем снапшотам**, прежняя хорошая редактура в их числе.
|
||
|
||
Заказ: **(а)** история финальных хешей при перезаписи финальной строки + ограда, чтобы сброс не удалял
|
||
чекпойнт, на который ссылается история; **(б)** адресация выгрузки «по состоянию на».
|
||
|
||
⭐ **Всё это ВНЕ снапшота и хеша запроса ⇒ перепокупки нет**, ключ манифеста и версия встроенных данных
|
||
не двигаются. Проверь это исполнением, не поверь на слово.
|
||
|
||
### 5. Два ложных комментария — снять (строки 320 и 322)
|
||
|
||
`chunkstatus.go` утверждает, что обычный резюм перезаписывает строку статуса — **не перезаписывает**,
|
||
он выходит раньше; пишет только ре-пин. И оправдание `nil`-переноса в редакторской волне (строка **321**)
|
||
**ложно** — но саму передачу переноса в этом паке НЕ СТРОИТЬ: там сначала замер (см. ниже).
|
||
|
||
## Чего в этом паке НЕТ и почему
|
||
|
||
- **Строка 321 (перенос sticky) — не строить.** Экспозиция замерена (49 строк, 4 из них уже в черновике),
|
||
**а дрейф — нет, инцидентов ноль**. Сначала замер на следующем платном прогоне, потом решение. В этом
|
||
паке — только правка ложного оправдания в комментарии.
|
||
- **Строка 324 (вход рендера)** — не долг, а контракт входа; расцеплена от 321, строить не надо.
|
||
- **Детектор верности значения** — строка 286, упирается в замер.
|
||
- **Перекрой структуры глав (161/283)** — отдельный дизайн-пак с мандатом качества.
|
||
|
||
## Самопроверка — обязательна, и вот чем ЭТОТ пак уязвим
|
||
|
||
Не отчёт «проверено», а **исполнение**. Направление задаю, глубину и веер выбираешь сам:
|
||
|
||
1. **Ты правишь ОПИСАНИЯ поведения.** Соблазн подогнать текст под то, что «должно быть», максимален.
|
||
После каждой правки комментария спроси: **это описание того, что код ДЕЛАЕТ, или того, что я хотел
|
||
бы?** Сегодня проект нашёл пять таких мест за смену, все — прозой.
|
||
2. **Мутации засчитывай по ТЕКСТУ.** Правый вердикт по неправой причине — дыра, а не поимка: сегодня
|
||
мутация покраснила гейт сообщением о рецепте, который делал ровно обратное сказанному.
|
||
3. **Не двигает ли твоя правка деньги.** Для каждой правки скажи прямо: двигает ли она снапшот, хеш
|
||
запроса, ключ манифеста, версию встроенных данных. Если да — это перепокупка, и её надо объявить.
|
||
4. **Числа с деревом и популяцией.** Приводишь счёт — назови коммит и что посчитано.
|
||
5. ⭐ **И отдельный проход, заказанный владельцем: ЛОГИЧЕСКИЕ баги, а не исполнительские.** Пока ты в
|
||
этих файлах — ищи места, где код работает **как написано**, но написанное **не то, что задумывалось**:
|
||
гейт, отвечающий на свой вопрос вместо заказанного; метрика, чьё имя шире её смысла; ветка, которая
|
||
по построению не исполняется. Найденное — **не чинить молча**, а вынести списком в отчёт: это заказ
|
||
владельца, и он идёт в отдельный разбор.
|
||
|
||
## Отчёт
|
||
|
||
Секция «Бэкенд» в `docs/PROGRESS.md` + сообщение оркестратору: что построено · чем предъявлено (команда
|
||
и её вывод) · какие правки двигают деньги · **список логических расхождений «задумано против сделано»** ·
|
||
что осталось открытым · **что ты сам считаешь слабым местом своей работы**.
|
||
|
||
⚠ Числа батареи снимай **после последней правки**, не до. Пере-съём голдена, если понадобится, объявляй
|
||
явно с причиной (`D39.183`).
|