Files
portal/docs/superpowers
Дмитрий df8c4720cb feat обзвон: запись исхода мимо двери больше не проходит — пол в модели и обход кода
Голый шов. Правило Т84 «недозвон не затирает состоявшийся разговор» жило в двери
ItogPoNomeru, и восемь сторожей доказывали, что дверь работает. Но все восемь
ходили ЧЕРЕЗ дверь, а дверью можно не воспользоваться: запрета писать МИМО не
было ни одного. Итог по номеру сегодня не пишет никто, значит первым пишущим
будет следующая смена — она увидит у модели поле outcome раньше, чем найдёт
дверь, напишет в него напрямую, и правило рухнет молча. Дверь осталась бы целой
и никем не использованной.

Защита разделена по УСТРОЙСТВУ, а не по тексту, и белого списка «кому можно»
нет ни в одной половине — такой список сам стал бы дырой.

Пол в самой модели ловит любую запись через объект: присваивание полю, fill,
update у строки, save. Имя переменной он не читает вовсе — он стоит на самой
записи, поэтому главная слабость текстового поиска закрыта не текстом, а местом.
Проверяется смысл перехода, а не автор: дверь поблажек не имеет и проходит лишь
потому, что запрещённого перехода не делает.

Обход кода ловит то, чего пол не видит физически: массовую правку и запросы
построителем — Eloquent на них событий не шлёт. Запрет действует на всех без
исключений, включая саму дверь.

Раскладка исходов НЕ задвоена: обе половины читают одну настройку. Повторено
только применение правила — модели запрещено зависеть от служб, у слоя Model
в настройке слоёв разрешённых зависимостей ноль. Два места связаны сторожем,
который обходит все 64 пары исходов и требует одинакового ответа.

Чего не ловит НИ ОДНА из половин, названо в бумагах: правку прямым SQL мимо
портала, имя таблицы или столбца, собранное из кусков, и код вне app. Первое
лечится только замком в самой базе — это правка канона схемы и вопрос владельцу,
поэтому названо, а не сделано молча.

Сторожа показаны красными. Настоящая запись мимо двери положена в САМ обходимый
код, а не в песочницу: сторож назвал файл, строку 14 и само выражение. Снятие
пола дало три красных, включая связку — пара transferred и no_answer. Возврат
доказан слепком со снятием невидимых знаков конца строки.

Заодно подписи двух значений в настройке: владелец закрыл обе развилки решениями
Р120 и Р121 от 06.08.2026, оба совпали с поставленным. Значения не менялись,
переписаны только пояснения, и рядом с каждым названо то, чего решение НЕ
закрывает.

Прогоны: обзвон и сделки 442, зелёных 441, красных ноль. Мои сторожа 32 из 32.
Статанализ ноль, deptrac ноль нарушений.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 21:10:53 +03:00
..
@
2026-08-03 00:02:38 +03:00