OpenSpec change harness-retro: proposal, specs (harness-retro — новая capability; hook-guards — MODIFIED «Регрессионный корпус хуков»: сегменты и known), design с Decisions made without discussion. По итогам brainstorming 24.10.2026: черновик ретро, срез одного проекта, запуск из репозитория обвязки, разметка блокировок агентом в корпус, хвосты по текущему состоянию, поправки владельца по процессу, подход A. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
3.1 KiB
Markdown
34 lines
3.1 KiB
Markdown
# Spec Delta: hook-guards
|
||
|
||
## MODIFIED Requirements
|
||
|
||
### Requirement: Регрессионный корпус хуков
|
||
Пакет SHALL содержать корпус вызовов хуков из реальных транскриптов и живых случаев. Каждая запись MUST иметь идентификатор, ожидаемый вердикт `allow|block` и код класса.
|
||
|
||
Корпус MUST состоять из сегментов: строка-шапка `{home, layout}`, за ней записи этого сегмента. Для каждого сегмента строится своя песочница с раскладкой из его шапки. Корпус MUST прогоняться через хуки тестами пакета по источникам и `doctor.sh` по установленным копиям.
|
||
|
||
Запись с полем `known: "<маркер находки>"` — известная ошибка текущих хуков:
|
||
- её расхождение с ожидаемым вердиктом MUST NOT давать FAIL;
|
||
- совпадение вердикта при наличии `known` MUST давать FAIL `KNOWN-FIXED`, чтобы пометку сняли.
|
||
|
||
#### Scenario: Расхождение в тестах пакета
|
||
- **WHEN** хук из `hooks/` выносит по записи корпуса без `known` вердикт, отличный от ожидаемого
|
||
- **THEN** `bash tests/run.sh` печатает FAIL с идентификатором и классом записи и завершается с ненулевым кодом
|
||
|
||
#### Scenario: Отчёт doctor
|
||
- **WHEN** запущен `doctor.sh` при установленных хуках
|
||
- **THEN** в разделе самотеста есть строка `корпус хуков: <совпало>/<всего>`, расхождения перечислены с идентификаторами
|
||
- **AND** при наличии записей `known` строка продолжается `, известных ошибок <K>`
|
||
|
||
#### Scenario: Сегменты с разной раскладкой
|
||
- **WHEN** корпус содержит сегмент пилота 12.10 и сегмент ретро с другим домашним каталогом и другими репозиториями
|
||
- **THEN** каждая запись прогоняется в песочнице своего сегмента, и вердикты совпадают с ожидаемыми
|
||
|
||
#### Scenario: Известная ошибка
|
||
- **WHEN** запись имеет `expected: allow`, `known: "RT-21"`, а текущий guard-main её блокирует
|
||
- **THEN** тест корпуса не падает, в выводе запись отмечена как известная ошибка
|
||
|
||
#### Scenario: Известная ошибка исправлена
|
||
- **WHEN** запись имеет `known: "RT-21"`, а текущие хуки выносят ожидаемый вердикт
|
||
- **THEN** тест корпуса печатает FAIL `KNOWN-FIXED` с идентификатором записи
|