andrey.epifantsev 76e2d9e884 chore(openspec): архив harness-retro, спека harness-retro в openspec/specs, hook-guards обновлена (#29)
openspec archive harness-retro: change → openspec/changes/archive/2026-10-24-harness-retro/; openspec/specs/harness-retro/spec.md (22 требования), hook-guards — MODIFIED «Регрессионный корпус хуков»; известные ошибки корпуса вынесены в отдельное требование, чтобы текст требования был ≤ 500 символов (validate --strict).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:11:55 +04:00

3.1 KiB
Raw Blame History

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 с идентификатором записи