закрыта задача read-api-wire-format

This commit is contained in:
av
2026-08-04 16:18:43 +03:00
parent a834d10415
commit b819b77f62
2 changed files with 0 additions and 39 deletions
-1
View File
@@ -7,7 +7,6 @@
Урожай спринта поднимается `tasks.py list --tag sprint:2026-08-04` — это первая порция переоценки на сессии.
## Набор
- [Форма провода маршрутов чтения](items/read-api-wire-format.md) — Переименование поля в internal/catalog меняет публичный контракт без касания httpapi, и держит это один байтовый тест
- [Точки за период](items/read-api-points-period.md) — Точки лежат в витрине и наружу не отдаются: «вес за год» достаётся только sqlite3 на хосте
- [Условный запрос по точкам](items/read-api-points-conditional.md) — Агент опрашивает по расписанию, а каждый повтор стоит полного чтения: на каталоге это 693 мс и +153 МиБ
- [Свёртка по сетке](items/read-api-points-bucket.md) — «Шаги за неделю по дням» — базовый запрос трекера и игры, и сегодня его нечем задать
-38
View File
@@ -1,38 +0,0 @@
# Форма провода маршрутов чтения
- **Секция:** ядро
- **Зачем:** Переименование поля в internal/catalog меняет публичный контракт без касания httpapi, и держит это один байтовый тест
- **Теги:** goal:read-api, sprint:2026-08-04
Публичный контракт чтения перестаёт меняться от переименования поля в домене —
либо потому, что доменные типы объявлены формой провода намеренно, либо потому,
что между ними и транспортом появился DTO.
Сегодня типы `internal/catalog` сами несут json-теги, а `internal/httpapi/catalog.go`
(66 строк) владеет только обёрткой: переименование поля в домене меняет
публичный контракт без касания транспорта, и держит это один байтовый тест
непустого ответа. Пока маршрут чтения был один и без потребителей, цена была
нулевой; со следующей задачи образец копируют точки, тренировки, записи и MCP.
Мерджится первой из всей цели и трогает только уже живой каталог. Решение
принимается **до** того, как его скопируют, — потом это будет не решение, а
археология. Развилка не изобретается с нуля: как разделять доменные типы и форму
провода, решено во множестве чужих проектов, и правило проекта требует начать с
их разбора.
## Критерии приёмки
- решение записано в `docs/architecture.md` с названной ценой обеих сторон, а не
только выбранной — оракул: глазами по разделу
- переименование поля доменного типа либо не меняет байты ответа, либо меняет их
намеренно, и тест утверждает это прямо, а не проверяет непустоту — оракул:
тест на переименование
- маршрут каталога приведён к решению, и следующий маршрут копирует образец, а
не выбирает заново — оракул: гейт зелёный плюс сверка `httpapi/catalog.go` с
записанным решением
## Рамки
Трогается только каталог и его транспорт, схема не трогается. Публичный контракт
каталога при этом может измениться — потребителей у него сегодня нет, и это
единственный момент, когда такая правка бесплатна.