# 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` строка продолжается `, известных ошибок ` #### Scenario: Сегменты с разной раскладкой - **WHEN** корпус содержит сегмент пилота 12.10 и сегмент ретро с другим домашним каталогом и другими репозиториями - **THEN** каждая запись прогоняется в песочнице своего сегмента, и вердикты совпадают с ожидаемыми #### Scenario: Известная ошибка - **WHEN** запись имеет `expected: allow`, `known: "RT-21"`, а текущий guard-main её блокирует - **THEN** тест корпуса не падает, в выводе запись отмечена как известная ошибка #### Scenario: Известная ошибка исправлена - **WHEN** запись имеет `known: "RT-21"`, а текущие хуки выносят ожидаемый вердикт - **THEN** тест корпуса печатает FAIL `KNOWN-FIXED` с идентификатором записи