docs: #399 spec revision 3 per SPEC-REVIEW-399-r2

User-Visible: no
Issue: #399
This commit is contained in:
Codex
2026-08-31 04:26:14 +03:00
parent 6befe4168f
commit bb635298c1
+13 -4
View File
@@ -3,8 +3,8 @@
- Issue: https://github.com/Matysh/houseplan-card/issues/399 - Issue: https://github.com/Matysh/houseplan-card/issues/399
- Приоритет: P2, infra; полный трек — класс B (конфигурация гейта, workflow, - Приоритет: P2, infra; полный трек — класс B (конфигурация гейта, workflow,
тесты), три несвязанные поверхности в одном issue по решению аудита тесты), три несвязанные поверхности в одном issue по решению аудита
- Ревизия: 2 (2026-08-31) — по SPEC-REVIEW-399-r1 (Medium: перебор по каталогу, - Ревизия: 3 (2026-08-31) — по SPEC-REVIEW-399-r2 (Medium: план тестов повторял
а не по паре имён) снятую формулировку AC5)
## Сценарий ## Сценарий
@@ -152,8 +152,14 @@ include`) и/или шаг линта в `.github/workflows/validate.yml`,
1. Пин фронтенда совпадает с ожидаемой версией закреплённого HA (AC1). 1. Пин фронтенда совпадает с ожидаемой версией закреплённого HA (AC1).
2. Списки деревьев в `include` и в шаге линта совпадают (AC2). 2. Списки деревьев в `include` и в шаге линта совпадают (AC2).
3. Синтетический workflow без обеих зацепок → проверка пинов краснеет (AC4). 3. Синтетический workflow без обеих зацепок → проверка пинов краснеет (AC4).
4. Явный список обходимых файлов зафиксирован; добавление нового файла в 4. Каталог `.github/workflows/*.yml` перебирается целиком: синтетический
workflows без обновления списка краснеет (AC5). третий workflow с `pip install pytest` без версий краснеет **без** правки
каких-либо списков в тесте (AC5). Списка обходимых файлов в тесте нет и
быть не должно — файл, не ставящий python-зависимостей, распознаётся по
собственному содержимому.
5. Реальный каталог проверяется тем же кодом: девять workflow, установка
python-зависимостей найдена ровно в двух — это вывод проверки, а не
зафиксированное в ней ожидание (AC5).
**Мутанты** (`scripts/mutation-gate.mjs`): **Мутанты** (`scripts/mutation-gate.mjs`):
@@ -161,6 +167,9 @@ include`) и/или шаг линта в `.github/workflows/validate.yml`,
`validate-workflow.test.mjs` красный. `validate-workflow.test.mjs` красный.
- `lint-scope-drifts`: добавить дерево в `include`, не тронув workflow → - `lint-scope-drifts`: добавить дерево в `include`, не тронув workflow →
контракт скоупа красный. контракт скоупа красный.
- `workflow-scan-hardcodes-the-list`: заменить перебор каталога на
фиксированный список имён → пункт 4 плана красный (иначе от снятой
конструкции ничто не удерживает).
## Риски ## Риски