diff --git a/CLAUDE.md b/CLAUDE.md index 6aa44282..f743637b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -64,6 +64,16 @@ Go-бэкенд издательского художественного пер ## Гардрейлы (жёсткие) - **Греп по ЖИВОМУ дереву — с исключением отработанного архива:** `--exclude-dir=prompts --exclude-dir=reports` (либо `grep -rn … docs/ --exclude-dir=prompts --exclude-dir=reports`). Замер 02.09: греп `feed_cap` даёт 4 живых файла и 8 архивных, `bank-stop` — 12 и 14, то есть истории в выдаче больше, чем настоящего. ⚠ **`archive/architecture/` НЕ исключать** — там тела закрытых эр журнала решений, и канон велит грепать «живой файл → слайсы». +- ⛔ **ОБХОД ПРЯЧЕТ СВОЮ ЦЕНУ, ПОКА НЕТ ПРАВИЛЬНОГО МЕХАНИЗМА; ПОЯВИТСЯ МЕХАНИЗМ — ЦЕНА СТАНОВИТСЯ ВИДНА + СРАЗУ** (замер платформы 11.09, и это лучший аргумент за запрет воркэраундов, какой у нас есть в числах). + Рецепт стенда предписывал $0-шаблон, чтобы тест не ушёл в платные вызовы. Настоящая задача была другая — + **спросить СОГЛАСИЕ** на трату; предикат вместо этого спрашивал, свободен ли порт, то есть отвечал на + соседний вопрос. Пока обход стоял, его цена была невидима и выглядела как чужая поломка: **два красных + теста в пакете, которые никто не мог объяснить**, и число «0 FAIL» в носителе, оказавшееся УСЛОВНЫМ. + Как только согласие построили по роду (обход шаблона → гард, читающий провайдера КАЖДОЙ модели и + считающий незнакомую ПЛАТНОЙ), пакет стал зелёным целиком, а обход остался без основания. + ⇒ **встретив «у нас так сделано, чтобы не случилось X», спрашивай не «хорошо ли сделано», а «тот ли это + вопрос»** — и меряй, сколько стоит обход, когда правильный механизм появится. - ⛔ **ТЯЖЁЛЫЙ ПРОГОН УБИВАЕТ НЕ НЕХВАТКА ПАМЯТИ НА МАШИНЕ, А ПОТОЛОК ЕГО СОБСТВЕННОГО CGROUP** (замерено 11.09 после ЧЕТЫРЁХ убийств подряд у одной сессии). `dmesg` показывает **26** убийств, и все с `constraint=CONSTRAINT_MEMCG`, каждое в СВОЁМ транзиентном юните