Принцип АК-47 — аудит соблюдения
55 сессий (ретро 18–22 августа 2026) + 10 свежепостроенных скриптов · аудит 13 агентами (8 читателей + 2 кодовых аудитора + 3 скептика-опровергателя) · 22.08.2026, хаб A-2022BAYAREA
Принцип в целом соблюдается: 90% строивших сессий чистые. Из 49 сессий, где что-то строилось, — 44 без нарушений, 5 с замечаниями, ни одного полного провала. Подтверждённый major — один: перезапись чужих живых артефактов под занятыми именами (класс уже 14+ раз в журнале поломок). Главный должник в коде — voice_pull_tg.py: 330 из 567 строк съела машинерия замка.
44сессий чисто
5с замечаниями
0провалов
6ничего не строили
7нарушений (6 minor + 1 major)
Счёт по сессиям (49 строивших)
🟢 pass 44 (89.8%) · 🟠 warn 5 (10.2%) · 🔴 fail 0. Каждое обвинение прогнано через 3 скептиков-опровергателей (линзы = трое ворот АК-47); подтверждено голосованием ≥2/3 только одно.
🔴 Подтверждённый major (2/3 голосов скептиков)
| Где | Что | Ворота |
| retro-2026-08-20-fleet-routines-registry |
Свой сборщик и своя панель писались под занятыми именами без проверки существующего — затёрты два чужих живых артефакта (ежечасный дашборд + рабочий агрегатор на 237 строк от 11.07). Вторая панель рутин флота = вторая копия вместо одного источника. |
simpler-fork + copies |
Класс «перезапись чужого живого артефакта» — ≥14 датированных строк в Breakage-Journal. По правилу третьей поломки это давно системный класс → нужна отдельная сессия починки (гейт на коллизию имён в общих папках).
🟠 Minor-нарушения (6)
| Сессия | Деталь | Ворота |
| 21.08 git-s7-fast | ballcheck.py — одноразовый скан там, где 7 рутин зовут готовый pr_watch --digest (сам же выброшен той же сессией) | copies |
| 21.08 owner-lock | Карточка «для живой сессии на хабе» как обход пяти отказов классификатора вместо починки классификатора | G3 |
| 20.08 apple-contacts | Корневой Contacts/ — вторая копия канона контактов в волте | copies |
| 20.08 fleet-routines | Две параллельные панели рутин флота вместо одного источника | copies |
| 19.08 mac16-routines | dr_tick_precheck.py — деталь ради экономии, врала молча | G2 |
| 19.08 mac16-routines | workflow_harvest_sweep — краш выглядел как успех | G2 |
Паттерн виден: 3 из 6 minor — «copies» (вторая копия вместо одного источника), 2 — «молчаливая ложь» (G2). Оба типа канон прямо запрещает.
Аудит кода: 10 свежепостроенных скриптов (последние 2 недели)
| Скрипт | LOC | Паспорт | Тест | Громкий отказ | Починит Антон | Вердикт |
pub_ledger_write.py | 276 | ✅ | ✅ | ✅ | да | pass — эталон |
daily_backup_E_to_F.ps1 | 351 | ✅ | ✅ | ✅ | отчасти | pass — эталон оправданного усложнения |
day_ledger.py | 473 | ✅ | ✅✅ | ✅ | отчасти | pass |
backup_healthcheck.py | 329 | ✅ | ✅ | ✅ | отчасти | pass |
daily_longread.py | 421 | ✅ | ✅ | ✅ | отчасти | pass |
dr_teaser_gate.py | 192 | ✅ | ✅ | ✅ | да | warn — паспорт обещает больше, чем код |
task_rank.py | 706 | ✅ | ✅ | ✅ | отчасти | warn — 4 волны фич в одном файле |
merge_cards.py | 137 | ✅ | ❌ | ❌ | отчасти | warn — нет теста, может молча соврать |
dr_lane.py | 510 | ✅ | ❌ | ✅ | отчасти | warn — ТЕСТА НЕТ у живой ежедневной детали (§5.8) |
voice_pull_tg.py | 567 | ❌ | ✅ | ✅ | нет | fail — 330/567 строк = машинерия замка |
Образцы соблюдения (чему подражать)
- 21.08 openrouter-wallet — «тупее нельзя» буквально: вместо автоматизации браузерного логина — два curl-запроса к /key и /credits. Цель переосмыслена, ничего не построено.
- 21.08 reply-meter — корень вместо трёх заплаток: три сторожа умирали по одному корню → одна дверь
gh_env.py; найден и убит живой дубль pr-watch.
- 22.08 dr1327 — кандидат-механизм передан владельцу вместо своей копии; «фальшивая независимость хуже недобора».
- 21.08 mac16-inbox — дыра закрыта СТРОКОЙ в существующем роботе, а не новым кроном; механизмы после 1-2 случаев сознательно НЕ строятся.
- 22.08 rep-reply — детектор сознательно оставлен в скретчпаде без постоянного дома, дом «при 3-м спросе».
Что чинить (предложения, не стройка)
- 🔴 Класс «перезапись чужого живого артефакта» (14+ строк в журнале) — созрел для отдельной сессии починки: fail-closed гейт на занятые имена в общих папках (_Dashboards, _imports).
- 🟠
voice_pull_tg.py — кандидат на упрощение: вынести замок в общий модуль или заменить на простой lock-файл с TTL.
- 🟠
dr_lane.py и merge_cards.py — дописать тесты (§5.8: живая деталь без теста = /tt максимум ⚠️).
- 🟡 Паттерн «copies» (3 из 6 minor) — при следующем ретро сверять новые файлы с существующими по имени и роли ДО стройки.
Метод: 8 агентов прочли 55 ретро целиком и судили по канону (память ak47-simplicity: 3 ворот G1/G2/G3, ⚠️-пометки, один источник, простая развилка); 2 агента прочли код 10 скриптов; каждое major-обвинение атаковали 3 скептика (по одному на ворота), подтверждение = ≥2/3. Презумпция невиновности: сомнение → pass.