Give the owner's test ruling a note to be found by, name who decides an ordered behaviour change, and drop the incident chronicle from the canon

This commit is contained in:
heaven 2026-08-31 22:52:35 +03:00
parent 94381bb007
commit f8c1d57d61
4 changed files with 20 additions and 4 deletions

View file

@ -69,7 +69,7 @@ Go-бэкенд издательского художественного пер
- Дисциплина: не верь заголовкам — грунтуй выводы `file:line`/цитатой; спорное верифицируй адверсариально (author≠reviewer); эмпирика на текстах, знакомых моделям по претрейну (классика, известные переводы), — предварительная: вес имеет только замер на целевом жанре.
- **Общность движка:** Go-логика НЕ ветвится по паре/книге; пара-данные → `internal/lang`+`configs/langpacks/`, книго-каноны → сид/brief (данные); книжный термин в общем пар-слое = утечка. Тест-данные пары легитимны. Норматив (только больные места): `docs/architecture/12-go-style-notes.md`. Ревью-вопрос по умолчанию: «заработает ли на паре, которой в репо ещё НЕТ, без правки Go?»
- **При компакции/сжатии контекста ВСЕГДА сохранять:** список изменённых файлов · незакрытые находки ревью и их диспозиции · обязательства и открытые вопросы сессии · команды тестов (D39.121).
- **Тесты и гейты не подгонять под зелень:** править или удалять тест/голден/гейт, чтобы он прошёл, — НЕДОПУСТИМО; несогласие с тестом — вопрос оркестратору пингом, не правка (D39.121). ⚠ **Запрет — про МОТИВ, и различие несущее (решение владельца 31.08):** правка *чтобы прошло* запрещена; правка, вызванная ЗАКАЗАННОЙ сменой поведения, — обычное обслуживание, и **держать протухший тест НЕ НУЖНО: техдолг правим, а не консервируем**. Цена смешения уже уплачена — сессия сознательно оставила внутри теста ратифицированно-дефектный механизм, потому что чинить его ей было нельзя. Условие одно: такая правка ОБЪЯВЛЯЕТСЯ в отчёте — что изменилось в поведении, какой тест это описывал и куда уехала гарантия.
- **Тесты и гейты не подгонять под зелень:** править или удалять тест/голден/гейт, чтобы он прошёл, — НЕДОПУСТИМО; несогласие с тестом — вопрос оркестратору пингом, не правка (D39.121). ⚠ **Запрет — про МОТИВ (D39.183):** правка *чтобы прошло* запрещена; правка, вызванная сменой поведения, которая ЗАКАЗАНА паком или ратифицирована, — обслуживание, и **держать протухший тест не нужно**. ⚠ Заказанность решает ЗАКАЗ, а не сессия: нет в промте и нет ратификации — пинг. Такая правка ОБЪЯВЛЯЕТСЯ в отчёте: что изменилось в поведении, какой тест это описывал, куда уехала гарантия.
- **Мандат самопроверки в промтах сессий (обязателен, решение владельца):** промты полигон-сессий — и вообще любых пишущих код / запросы к моделям — ДОЛЖНЫ явно требовать ревью ИСПОЛНЕНИЕМ: своего кода + сформированных запросов к моделям + полученных результатов. Сессии регулярно ошибаются и багуют, и это искажает результат; **самоотчёт «проверено» без исполнения регулярно оказывается ложным и стоит денег**. Бэкенд-промты — явный бэкенд-ревью после кода (обычно отрабатывает по опыту, но требовать явно). Пост-хок адверсариальная верификация оркестратора при лендинге — второй рубеж, НЕ замена самопроверки.
⚠ **Исполнения мало: промт заказывает адверсариальный проход сессии по СВОЕЙ готовой работе; глубину и веер сессия выбирает под предмет, промт даёт направление — что в этом паке уязвимо.**
**Fable 5** — обычно хватает одного-двух агентов, но это РЕКОМЕНДАЦИЯ, не потолок: веер под предмет выбирает сессия. Модель задавай агенту ЯВНО и знай, сколько их у тебя работает.

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
# Реестр D-нот — карта актуальности v2 (D1D39.182;
# Реестр D-нот — карта актуальности v2 (D1D39.183;
> ⚠ **СЛАБОЕ МЕСТО, КОТОРОЕ БЫЛО ЗДЕСЬ (вписано 22.08, ЗАКРЫТО 24.08 — D39.157 п.6).** Колонка ТЕЛА
> у нот D39.107…D39.123 говорила «жив», хотя тела уехали в слайс подрезкой D39.139; семнадцать строк
@ -244,3 +244,4 @@
| D39.180 | 31.08 | **Пак платформы P12 «долги под ногами» ПРИНЯТ И ЗАЛЕНДЖЕН** вместе с контрактным минором **0.9.0**. Приёмка — 5 линз, 6 major / 16 minor / 0 блокеров, 8 дофиксов исполнены. Обязательство D39.158 (снятие обхода `--verify-bank`) закрыто целиком, живой пробой на двух ярусах. Регистр: открытых 97 против 107, major 2 против 7. Три урока: тихо-зелёное с заголовком против тела (D39.171); **граница контракта судит ПРОЗУ, а не только поля** — непрозрачность поля не спасает; строка, закрытая несуществующим пином | жив | ЖИВОЕ: PD-424 сужена до терминальной ручки · новые PD-433/434/435 · строка бэклога 244 | платформа контракт приёмка |
| D39.181 | 31.08 | **Закон раскрытия движка РАТИФИЦИРОВАН** (слово владельца): правило «факт класса X → потребителю Y по каналу Z» + четыре обязанности как норма зоны `backend/`; **поля леджера доставки в кадре `finished`** (признак объёмного стопа едет ЧИСЛОМ) и **`config_drift_basis` в `status --json`** — оба класса «новое поле контракта шва». Генезис — вопрос владельца «не хаки ли это»: десять из тринадцати правок оказались одной формой «движок знает и не говорит». ⚠ Честная цена: закон загейчен на 40% | жив | ЖИВОЕ: применение к десяти экземплярам — фаза 2 пака; строка 246 (расхождение копий полосы отказов) | движок раскрытие шов контракт |
| D39.182 | 31.08 | **Бэкенд-пак «деньги и честность выдачи» ПРИНЯТ И ЗАЛЕНДЖЕН**: закон раскрытия (D39.181) применён к одиннадцати экземплярам. Приёмка — 5 линз, **3 блокера / 15 major / 12 minor**, доработка принята; батарея зелёная, тестов 1045 в 1083, удалённых ноль. ⚠ ДВА блокера — дефекты В САМОМ ЛЕКАРСТВЕ: разложение денег завышало потери на **+59.8%**, отвергая наивный срез за 29.2%; «дешёвый зонд» выключал починку на денежной поверхности. Три касания чужих тестов санкционированы явно (утверждение · предпосылка · сценарий) | жив | ЖИВОЕ: различение уровней теста — вопрос владельцу · §2.2 против `snapshotdiff` · строка 246 | движок деньги раскрытие приёмка |
| D39.183 | 31.08 | **Слово владельца: запрет «не подгонять тесты под зелень» — про МОТИВ.** Правка *чтобы прошло* запрещена; правка от ЗАКАЗАННОЙ или ратифицированной смены поведения — обслуживание, протухший тест не держим. ⚠ Заказанность решает ЗАКАЗ, а не сессия. Условие — объявление в отчёте | жив | ЖИВОЕ: полноту объявления не проверяет ничто — строка бэклога 248 | тесты канон процесс |

View file

@ -1,4 +1,4 @@
# Журнал решений оркестратора — контракт D1D39.182 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
# Журнал решений оркестратора — контракт D1D39.183 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
> **КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто:
> ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 живёт ниже в этом файле (голова D39.106+).
@ -1761,3 +1761,18 @@ head-1 это семнадцать бюджетируемых операций,
### 4. Что ещё поймала приёмка
`StreamVersion` не был бампнут при добавлении поля в кадр `finished` — нашли ТРИ линзы независимо, при том что правило ратифицировано D39.85 и записано дословно в комментарии над самой константой, в файле, который пак правил (`1.1` в `1.2`) · новое ратифицированное `config_drift_basis` РАСХОДИЛОСЬ между `status` и `export` на одной книге — болезнь строки 239, воспроизведённая в лекарстве от неё (сведено к общей предпосылке `driftCheckable`) · носитель «проход обрезан» доехал только для рендера, а инцидент холодного прогона был на классификаторе (заведено `ClassifyBatchesDropped`).
## D39.183 — СЛОВО ВЛАДЕЛЬЦА 31.08: запрет «не подгонять тесты под зелень» — про МОТИВ; протухший тест держать не нужно. ✅
**Генезис.** Пак «деньги и честность» (D39.182) трижды упёрся в правило: починка меняла поведение, и чужие тесты падали не потому, что нашли дефект, а потому что описывали СТАРОЕ поведение. Каждый раз сессия останавливалась и спрашивала оркестратора. Оркестратор предлагал таксономию из трёх уровней (утверждение · предпосылка · сценарий); разведка показала, что канон УЖЕ различает — по МОТИВУ, а не по уровню, и оба разобранных случая решились именно мотивом.
**Решение владельца, дословно по смыслу:** «делаем; техдолг активно правим и избавляемся от него, stale тесты как раз держать не нужно».
1. Правка *чтобы тест прошёл* — запрещена, как и была.
2. Правка, вызванная сменой поведения, которая **заказана паком или ратифицирована**, — обычное обслуживание. Протухший тест не консервируется.
3. ⚠ **Заказанность решает ЗАКАЗ, а не сессия.** Нет в промте и нет ратификации — пинг. Иначе правило открыло бы дверь, которую старое закрывало: сессия объявила бы заказанным собственное изменение.
4. Условие: такая правка ОБЪЯВЛЯЕТСЯ в отчёте — что изменилось в поведении, какой тест это описывал, куда уехала гарантия.
**Известная слабость, названная вслух:** полноту такого объявления сегодня не проверяет ничто, и за сутки сессии ТРИЖДЫ ошиблись в описании собственных правок чужих тестов (D39.182 §2). Носитель лечения — строка бэклога **248** (warn-only гейт-детектор). ⚠ Замер, снимающий соблазн дешёвой проверки: греп по строкам `t.Error`/`t.Fatal` локализует утверждение в 1 случае из 475 — он ловит СООБЩЕНИЕ, а утверждение это СРАВНЕНИЕ, и оно на другой строке.
**Попутно тем же лендингом:** зонный `pre-commit` научился называть неотслеживаемые файлы в каталогах коммита — pathspec-форма их молча роняет (инцидент 31.08: `migrations.sha256` уехал в коммит, ссылаясь на три миграции, оставшиеся снаружи). ⚠ Хук ставится установщиком из ЗАМОРОЖЕННОЙ зоны фронта, поэтому на свежем клоне его нет вовсе — известный дефект, строка бэклога 220.