- роадмап отвечает «что умеет и чего не умеет»: PLAN.md → ROADMAP.md, четыре канонические секции, достигнутые звенья строками в «Готово», цели переформулированы возможностями приложения - задачи: род работы и «Затрагивает» набору спринта, 34 заголовка в форму действия, «Завершение» целей перечнями со ссылкой из каждой задачи - вычитка проходами task-form и doc-wording, починены протухшие факты в README, паспорте и review.md
34 lines
2.3 KiB
Markdown
34 lines
2.3 KiB
Markdown
# Ловить гейтом расхождение спеки с маршрутами
|
|
|
|
- **Секция:** Ядро
|
|
- **Зачем:** Рукописная спека — источник истины, а расходится она с кодом молча: без гейта решение о рукописной спеке не держится
|
|
- **Теги:** goal:read-api, sprint:2026-08-04
|
|
|
|
Маршрут, которого нет в спеке, и поле ответа, которого спека не обещала, красят
|
|
гейт — рукописный контракт перестаёт расходиться с кодом молча.
|
|
|
|
Это не украшение к спеке, а то, чем держится решение писать её руками. Без
|
|
проверки рукописная спека расходится с первого же маршрута, и потребитель,
|
|
сгенерировавший по ней клиент, узнаёт об этом последним.
|
|
|
|
Класс отказа тот же, что у остальных безусловных шагов гейта проекта: не виден
|
|
глазами и стоит дорого. Место ему там же.
|
|
|
|
Двигает строку «Завершения» цели: «Контракт чтения читается машиной».
|
|
|
|
## Критерии приёмки
|
|
|
|
- добавленный маршрут без правки спеки красит гейт — оракул: намеренно
|
|
рассогласованный маршрут в прогоне гейта
|
|
- переименованное поле ответа красит гейт — оракул: намеренное переименование в
|
|
прогоне гейта
|
|
- проверка укладывается в бюджет гейта — оракул: замер шага по логу
|
|
`tmp/gate/`
|
|
- проверка работает без внешней сети — оракул: прогон гейта в контейнере без
|
|
доступа наружу
|
|
|
|
## Рамки
|
|
|
|
Трогает `Taskfile` и шаги гейта, кода маршрутов не касается. Берётся после
|
|
спеки: проверять нечего, пока нет источника истины.
|