- роадмап отвечает «что умеет и чего не умеет»: PLAN.md → ROADMAP.md, четыре канонические секции, достигнутые звенья строками в «Готово», цели переформулированы возможностями приложения - задачи: род работы и «Затрагивает» набору спринта, 34 заголовка в форму действия, «Завершение» целей перечнями со ссылкой из каждой задачи - вычитка проходами task-form и doc-wording, починены протухшие факты в README, паспорте и review.md
2.8 KiB
[goal] Клиенты читают данные через HTTP и MCP
- Секция: Запланировано
- Зачем: Данные видны только через sqlite на хосте — ни один из трёх потребителей, включая агента-медика, ничего прочитать не может
- Теги: decomposed
Потребители читают данные: точки с выбором слоя и свёрткой по сетке, тренировки и записи, машиночитаемый контракт — и всё то же самое через MCP.
Идёт после каталога и рода агрегации намеренно: без измеренного рода свёртка в ответе неотличима от угадывания, а ошибиться здесь дорого — просуммировать нижний слой значит завысить втрое.
MCP входит в эту цель, а не идёт отдельной. Прежде их было две, и разделяла их очередь: адаптер собственной логики не несёт, он переводит вызовы в те же обработчики, и переводить было нечего. Очередь никуда не делась — она стала порядком задач внутри цели, — а вот отдельная цель под адаптер описывала не направление, а последний шаг этого же направления. Заказчик у обоих транспортов один: три потребителя, из которых первый — агент.
Завершение
- Точки метрики за период отдаются по HTTP без доступа к файлу базы
- Повторный запрос тех же точек стоит
304, а не полного чтения - Точки сворачиваются по заданной сетке измеренным родом агрегации
- Неполное ведро отличимо от полного, и полярность порога названа
- У ответа любого маршрута чтения есть объявленный предел размера
- Тренировки с маршрутом и записи со своим
idотдаются за период - Контракт чтения читается машиной: спека, гейт против её расхождения с маршрутами, UI без внешней сети
- Агент-медик читает то же самое через MCP тем же токеном чтения, и собственной логики адаптер не несёт