From fd1c3627bb6f4e878b398a9253e27ef0fc3525f5 Mon Sep 17 00:00:00 2001 From: heaven Date: Sat, 5 Sep 2026 15:33:14 +0300 Subject: [PATCH] Record the way a gate stops meaning anything: a habit invented for oneself displaces the one already standing --- docs/architecture/05-decisions-log.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index fb61de8f..8b198237 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -2382,6 +2382,15 @@ Gemini как построенный (его в `internal/llm/` нет) · дв **3. Формы ЛОЖНОЙ ЗЕЛЕНИ, найденные за смену** (реестр, а не рассказ): упавшая сборка · обрезанный вывод · **эквивалентная посадка** · **отказ, принявший форму таймаута или тишины** (восемь случаев за смену — свойство инструмента, не невезение) · **вырожденное утверждение** (предмет отсутствует в фикстуре) · **триггер, существующий только в ПОЧИНЕННОМ мире** · **посадка с нерезолвящимся якорем** (запись есть, не утверждает ничего, а ДЛИНА списка читается как покрытие) · **`SURVIVED` как сообщение о НЕДОСТИЖИМОСТИ** (единственная форма, которая приносит дефект, а не прячет: так найден мёртвый код) · ⛔ **гейт, ЗАЩИЩАЮЩИЙ дефект** — тест ПИНИТ неверное поведение, починить не покраснев нельзя, и ревизия по зелени проходит мимо; самая устойчивая из всех. +**3-бис. ⛔ СОБСТВЕННАЯ ДИСЦИПЛИНА ВЫТЕСНЯЕТ СУЩЕСТВУЮЩИЙ ГЕЙТ — найдено зоной движка у СЕБЯ (05.09).** +Зона завела свою проверку «якорь посадки резолвится ровно один раз» и гоняла её после КАЖДОГО касания +кода — и **ни разу не прогнала линт якорей, который уже стоит в репозитории с готовым гейтом**. Итог: +шесть битых якорей в её же доках, **пять из них старше её пака** и скрыты тем, что `backend/docs` добавили +в корни линта только 04.09. **У зоны было ДВА множества якорей и ОДНА привычка — та, которую она завела +сама.** ⇒ Норма: **новая проверка не заменяет существующий гейт, а добавляется к нему; заводя свою +дисциплину, сначала спроси, что уже сторожит этот класс.** Это тот способ, которым гейт перестаёт +что-то значить, — не отключением, а вытеснением из привычки. + **4. Посадки и починки.** Посадка, чей отказ выглядит ТАЙМАУТОМ, посадкой не является (`t.Fatalf` из порождённой горутины — `runtime.Goexit` не на той горутине). **Починка из двух частей требует посадки из двух частей** (одинокая половина воспроизводит третий мир, которого не было). **Починка, у которой проверена только одна половина, — половина починки** (громкая смерть, ставшая тихим исчезновением, — класс из шапки `CLAUDE.md`, допущенный В ПОЧИНКЕ). **Починка с посадкой, но без теста, выглядит покрытой ровно до полного прогона каталога.** Проверка «якорь резолвится ровно один раз» гоняется ПОСЛЕ КАЖДОГО касания кода, а не перед сдачей. **5. Указатели.** Носитель БЕЗ якоря не проверяется инструментом, который ищет якоря (комментарий в Go пережил линт и нёс снятое различение как действующее). Ноту адресуют НОМЕРОМ: строка журнала подрезку не переживает. **Номер строки протухает от акта СВОЕЙ ЖЕ записи, если запись стоит выше цели в том же файле** ⇒ форма указателя: сначала ТОКЕН, потом номер с оговоркой «на момент этой редакции». **Протухший ЧУЖОЙ указатель ПОМЕЧАЮТ, а не переписывают.** Правка файла, на который целятся якоря, требует линта БЕЗ фильтра по своей зоне: «поправил читателя, оставил писателя» бывает и через НУМЕРАЦИЮ — правка, законная в своей зоне, ломает чужую по механике файла; худший случай — замороженная зона, у которой нет своего линта в цикле.