Files
portal/docs/superpowers/specs/2026-06-17-wall-read-block-bug-spec.md
T

4.5 KiB

Спека — требования к заметке-багу «чтение под стеной» для claude-brain

Цель

Зафиксировать требования к новому файлу-заметке о дефекте чтения в режиме реализации под стеной «роутер-наставник» — для передачи в claude-brain. Документ описывает контракт, перечень случаев и приоритет починки; сам файл-заметка пишется отдельным шагом плана, не этим документом.

Что фиксируем — суть бага

Контракт. Заметка обязана одной фразой назвать дефект: в режиме реализации (под опечатанным планом) чтение разрешено только по пути текущего шага; всё остальное — включая файлы, появившиеся в ходе прогона, и собственный вывод запущенных инструментов — читать нельзя (гейт ДР-1).

Критерий. В файле есть короткая формулировка сути в одно-два предложения.

Случаи, где дефект бьёт

Контракт. Заметка перечисляет конкретные сценарии: (1) свой вывод команды в temp-файле; (2) забытое до печати плана чтение; (3) файл, созданный сторонним сервисом/процессом во время прогона; (4) нечем проверить результат шага; (5) ветвление по содержимому файла невозможно; (6) диагностика ошибки по внешнему логу; (7) промежуточный артефакт в цепочке инструментов; (8) перечитать только что записанное; (9) неожиданно найденный файл; (10) файлы от параллельной сессии.

Edge-case. Указать живой пример: на прогоне go-live аудита так не прочитался вывод Nuclei и был пропущен шаг gitleaks.

Критерий. В файле — нумерованный список сценариев с коротким пояснением каждого.

Связь с рассинхроном указателя

Контракт. Заметка фиксирует, почему наивный escape на чтение опасен: стена двигает счётчик шагов даже когда действие не прошло (десинк F-J); если пустить чтение через ту же машинерию шагов — очередь сдвинется. Вывод: чтение не является шагом (шаги — только Write/Edit/Bash/MultiEdit), поэтому разрешение на чтение должно работать «сбоку от очереди», не трогая счётчик.

Критерий. В файле явно сказано: счётчик не должен двигаться на чтении.

Приоритет починки

Контракт. Заметка предлагает порядок: (1) счётчик шагов += 1 только при успешно завершённом настоящем шаге (чинит и десинк, и делает чтение безопасным); (2) пассивно разрешить чтение своего вывода и файлов, созданных после опечатывания, без escape и без касания очереди; (3) escape-метка read:<путь> — крайний резерв, строго мимо счётчика шагов.

Критерий. В файле — список из трёх пунктов починки по приоритету, с пометкой, что главное — починка счётчика, а escape — последнее.

[
  {"id":"vc1","kind":"EXTRACTED","ref":"docs/superpowers/router-mentor-wall-GUIDE.md","anchor":"Читать ПЕРЕД работой под стеной"},
  {"id":"vc2","kind":"EXTRACTED","ref":"docs/security/2026-06-17-go-live-security-report.md","anchor":"SECURITY GO-LIVE REPORT"}
]