- каждая запись каталога задач получила тип вместо тега kind: и префикса заголовка; секция роадмапа «Разработка» стала «Сопровождением», порядок секций канонический - поправлены протухшие факты: нереализованные маршруты Read API, MCP и `healthlog import`, словарь слоёв в инварианте, семантика гейта по покрытию диффа, периметр перестал дублировать security.md - замер слияния переведён с находки 49 на находку 54, заполнены Purpose спек storage и parsing
2.6 KiB
✨ Отдавать записи со своим id за период
- Тип: feature
- Категория: Ядро
- Зачем: stateOfMind разобран и хранится, но наружу не отдаётся — а восстановить его нечем: в экспорте Apple его нет
- Теги: goal:read-api, sprint:2026-08-04
Записи со своим id — сегодня это stateOfMind — достаются за период через
GET /records/{kind}.
Разбор и хранение сделаны тем же изменением, что у тренировок; наружу не отдаётся
ничего. У этих данных есть особенность, которой нет больше ни у чего в проекте:
stateOfMind нет в экспорте Apple, он не восстанавливается пересборкой из
снапшота, и единственный его источник — доставки HAE. Отдача наружу — не
удобство, а единственный способ увидеть то, что иначе живёт только внутри базы.
Конверт наследуется от точек; собственной формы у записей нет.
Двигает строку «Завершения» цели: «Тренировки с маршрутом и записи со своим id отдаются за период».
Затрагивает
Новый маршрут GET /api/v1/records/{kind} и код отказа на неизвестном kind.
Публичный тип провода в internal/httpapi — конверт записей. Чтение таблицы
записей; схемы и формата на диске не трогает.
Критерии приёмки
- записи
stateOfMindза период отдаются одним запросом — оракул: запрос к поднятому сервису на живом архиве - неизвестный
kindотвечает отказом со списком известных, а не пустым списком: пустота и опечатка обязаны различаться — оракул: тест - конверт совпадает с конвертом точек и тренировок — оракул: тест, сравнивающий форму ответа трёх маршрутов
Рамки
Схема не трогается, данные только читаются. Берётся после конверта.