a617de3bde
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
60 lines
4.5 KiB
Markdown
60 lines
4.5 KiB
Markdown
# Спека — требования к заметке-багу «чтение под стеной» для claude-brain
|
|
|
|
## Цель
|
|
|
|
Зафиксировать требования к новому файлу-заметке о дефекте чтения в режиме
|
|
реализации под стеной «роутер-наставник» — для передачи в claude-brain. Документ
|
|
описывает контракт, перечень случаев и приоритет починки; сам файл-заметка
|
|
пишется отдельным шагом плана, не этим документом.
|
|
|
|
## Что фиксируем — суть бага {#B1}
|
|
|
|
**Контракт.** Заметка обязана одной фразой назвать дефект: в режиме реализации
|
|
(под опечатанным планом) чтение разрешено только по пути текущего шага; всё
|
|
остальное — включая файлы, появившиеся в ходе прогона, и собственный вывод
|
|
запущенных инструментов — читать нельзя (гейт ДР-1).
|
|
|
|
**Критерий.** В файле есть короткая формулировка сути в одно-два предложения.
|
|
|
|
## Случаи, где дефект бьёт {#B2}
|
|
|
|
**Контракт.** Заметка перечисляет конкретные сценарии: (1) свой вывод команды в
|
|
temp-файле; (2) забытое до печати плана чтение; (3) файл, созданный сторонним
|
|
сервисом/процессом во время прогона; (4) нечем проверить результат шага; (5)
|
|
ветвление по содержимому файла невозможно; (6) диагностика ошибки по внешнему
|
|
логу; (7) промежуточный артефакт в цепочке инструментов; (8) перечитать только
|
|
что записанное; (9) неожиданно найденный файл; (10) файлы от параллельной сессии.
|
|
|
|
**Edge-case.** Указать живой пример: на прогоне go-live аудита так не прочитался
|
|
вывод Nuclei и был пропущен шаг gitleaks.
|
|
|
|
**Критерий.** В файле — нумерованный список сценариев с коротким пояснением каждого.
|
|
|
|
## Связь с рассинхроном указателя {#B3}
|
|
|
|
**Контракт.** Заметка фиксирует, почему наивный escape на чтение опасен: стена
|
|
двигает счётчик шагов даже когда действие не прошло (десинк F-J); если пустить
|
|
чтение через ту же машинерию шагов — очередь сдвинется. Вывод: чтение не является
|
|
шагом (шаги — только Write/Edit/Bash/MultiEdit), поэтому разрешение на чтение
|
|
должно работать «сбоку от очереди», не трогая счётчик.
|
|
|
|
**Критерий.** В файле явно сказано: счётчик не должен двигаться на чтении.
|
|
|
|
## Приоритет починки {#B4}
|
|
|
|
**Контракт.** Заметка предлагает порядок: (1) счётчик шагов += 1 только при
|
|
успешно завершённом настоящем шаге (чинит и десинк, и делает чтение безопасным);
|
|
(2) пассивно разрешить чтение своего вывода и файлов, созданных после
|
|
опечатывания, без escape и без касания очереди; (3) escape-метка `read:<путь>` —
|
|
крайний резерв, строго мимо счётчика шагов.
|
|
|
|
**Критерий.** В файле — список из трёх пунктов починки по приоритету, с пометкой,
|
|
что главное — починка счётчика, а escape — последнее.
|
|
|
|
```verified-context-json
|
|
[
|
|
{"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"}
|
|
]
|
|
```
|