docs(skills): claude-subagent-playbook — эмпирика #38: перепроверка и прибор

- Зачем:
  - прогон тикета #38 повторил конфигурацию 08-01 (оркестратор он же
    исполнитель, Кодекс третьей линией) и показал у той же дыры вторую
    сторону, а заодно класс сбоя, которого в файле не было.
- Что:
  - перепроверка тем же ревьюером не судит соразмерность лечения ни в
    одну сторону: после ALL_CLOSED на своё предписание — NOT_CLOSED с
    требованием недостижимого; приём — проверять существование
    закрывающего состояния и мерить цену альтернативы.
  - долг 08-01 назван неисправленным: статус вешается на находку, не на
    лечение; здесь лечение судилось только по требованию владельца.
  - новый класс: сломан не код, а измерительный прибор — устаревший .pyc
    в цикле мутаций; линии ревью такого не ловят.
- Проверка:
  - запись прочитана целиком, повторов предыдущих записей нет.
This commit is contained in:
Dmitry Dementiev committed 2026-08-02 13:29:46 +03:00
1 parent 95c13211cb
commit 7377ee94c5
1 file changed
+35
@@ -608,3 +608,38 @@ compose down`); отдельных событий эскалации в `--json`
medium — 46 команд. Одна находка фактическая (комментарий рекламировал
торговые события, от которых спека отказалась) — её обе Клод-линии
пропустили: подтверждение ценности другой родословной.
## 2026-08-02: перепроверка толкает лечение в обе стороны (clickstream v2, тикет #38)
Конфигурация та же, что 08-01: оркестратор он же исполнитель, Кодекс (high)
третьей линией к двум прошедшим Клод-линиям. Снова три находки, все верны;
снова другая родословная дала класс, мимо которого прошли обе Клод-линии —
честность тестов: сторож сравнивал день −N с днём N, а сталкиваются −N и N−1.
- **Перепроверка тем же ревьюером не судит соразмерность лечения ни в одну
сторону.** 08-01 она вернула `ALL_CLOSED`, подтвердив исполнение
собственного предписания; здесь на ту же починку — `NOT_CLOSED` с
требованием недостижимого (полная неприкосновенность запомненной когорты:
в numpy владелец памяти размораживается всегда, а вид всегда показывает
`.base`). Одна дыра, две стороны. Приём: на `NOT_CLOSED` проверять не
только факт, но и существует ли закрывающее состояние, и мерить цену
альтернативы — здесь 16 МиБ копий на день вместо 2 мс, то есть размен
реального свойства на защиту от умысла.
- **Долг 08-01 не закрыт: статус вешается на находку, не на лечение.** Здесь
лечение судилось только потому, что владелец потребовал этого в
постановке («Кодекс коварен, польза бывает очевидна на первый взгляд»).
Механизма по-прежнему нет.
- **Новый класс: сломан не код, а измерительный прибор.** Цикл мутаций
«правка → прогон → откат» внутри секунды оставлял устаревший `.pyc`
(свежесть — по времени правки и размеру), тесты шли по байт-коду мутанта
и падали на восстановленном дереве. Чуть не «починил» работающее. Линии
ревью смотрят на код и такого не ловят; конвейер молча допускает, что
проверялка оркестратора исправна. Приём: мутации гонять с
`PYTHONDONTWRITEBYTECODE=1`, первым и последним прогоном — чистое дерево.
- **Польза линии пришла как «изменил, что я проверяю»**: находка развернула
батарею мутантов на дерево зёрен, которое я считал очевидным, — там
нашлись ещё два слепых сторожа. Слить ветвь дней с ветвью состава можно
было, не уронив ни одного из 297 тестов.
- Цифры: ревью 68 команд, 3 находки (1 MAJOR завышен — сценарий требует
сознательно снять флаг у массива, 2 MINOR); перепроверка на medium — 12
команд; батарея 17 мутантов, выживших нет.