# Журнал проскочивших дефектов Сюда попадает дефект, который **прошёл ревью и всплыл позже**. Записывается сразу, а не ретроспективно: со временем теряется не сам факт, а причина непоймания — единственное, ради чего журнал существует. Реализованные задачи, находки ревью и решения сюда не пишутся: у них есть коммит, спека и беклог. Здесь только промахи конвейера. Форма записи: ``` ## 2026-08-01 — <краткое последствие> - **Где:** internal/store/bucket.go:120 - **Симптом:** <как обнаружилось, кем и когда> - **Почему не поймали:** <какой проход обязан был найти и что ему помешало> - **Что меняем:** <правило прохода, шаг гейта, конвенция — либо «ничего, цена поимки выше цены дефекта»> ``` Последний пункт важнее остальных. Вывод «ничего не меняем» — законный исход: не всякий дефект стоит того, чтобы усложнять ради него ревью каждой задачи. --- ## 2026-08-01 — свёртка не воспроизводилась при пересборке журнала - **Где:** `internal/store/delivery.go`, `LastDerivedLayer` - **Симптом:** прогон живого архива (99 доставок) вторым проходом дал 1742 объекта вместо 1737, а координат сна 182 вместо 174. Нашёл тест сходимости на шаге apply — не ревью. - **Причина:** доставка без плотных метрик наследует слой автоматизации. Запрос брал последний выведенный слой **вообще**, а не последний до этой доставки, поэтому при пересборке доставка наследовала слой «из будущего». Свёртка переставала быть функцией от префикса журнала. - **Почему не поймали:** формулировка «наследует последний надёжно выведенный слой той же автоматизации» звучит однозначно и в спеке, и в дизайне — пропущенное слово «предшествующей» не выглядит пропуском. Проходы `specs` и `architecture` сверяли код со спекой и понятиями, а инвариант «`import + replay` даёт то же состояние» ни один из них не проверял на конкретном правиле: он записан в архитектуре как свойство системы, а не как критерий для каждого узла, читающего состояние. - **Что меняем:** в рубрику `healthlog-review-rubric` и в проход `ops` — вопрос «читает ли узел состояние, которое сам же меняет, и остаётся ли он функцией от префикса журнала». Дешевле правила: любой запрос к `delivery` из свёртки обязан иметь границу по `received_at` разбираемой доставки. Тест сходимости на живом архиве (`internal/fold/replay_test.go`) остаётся постоянным — именно он это поймал.