diff --git a/docs/tasks/SPRINT.md b/docs/tasks/SPRINT.md index 4947be8..d8a2a0c 100644 --- a/docs/tasks/SPRINT.md +++ b/docs/tasks/SPRINT.md @@ -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) — «Шаги за неделю по дням» — базовый запрос трекера и игры, и сегодня его нечем задать diff --git a/docs/tasks/items/read-api-wire-format.md b/docs/tasks/items/read-api-wire-format.md deleted file mode 100644 index 9d8d67b..0000000 --- a/docs/tasks/items/read-api-wire-format.md +++ /dev/null @@ -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` с - записанным решением - -## Рамки - -Трогается только каталог и его транспорт, схема не трогается. Публичный контракт -каталога при этом может измениться — потребителей у него сегодня нет, и это -единственный момент, когда такая правка бесплатна.