- каждая запись каталога задач получила тип вместо тега kind: и префикса
заголовка; секция роадмапа «Разработка» стала «Сопровождением», порядок
секций канонический
- поправлены протухшие факты: нереализованные маршруты Read API, MCP и
`healthlog import`, словарь слоёв в инварианте, семантика гейта по покрытию
диффа, периметр перестал дублировать security.md
- замер слияния переведён с находки 49 на находку 54, заполнены Purpose спек
storage и parsing
- роадмап отвечает «что умеет и чего не умеет»: PLAN.md → ROADMAP.md, четыре
канонические секции, достигнутые звенья строками в «Готово», цели
переформулированы возможностями приложения
- задачи: род работы и «Затрагивает» набору спринта, 34 заголовка в форму
действия, «Завершение» целей перечнями со ссылкой из каждой задачи
- вычитка проходами task-form и doc-wording, починены протухшие факты в README,
паспорте и review.md
- конверт и точки разложены на форму провода, точки за период и условный
запрос; свёртка — на сетку, порог неполного ведра и предел размера ответа;
тренировки и записи разъехались на два независимых маршрута
- openapi-swagger разложена на спеку, гейт против расхождения и Swagger UI —
все три вне набора, вместе с mcp-server
- набор спринта 2026-08-04 — весь HTTP-слой чтения, восемь задач
- цель parsing-and-storage закрыта по своему критерию; незакрываемый остаток
(новые формы от источника, ручные секции задним числом) переехал в тему
parsing-completeness
- цель mcp поглощена целью read-api, переименованной в «Чтение данных
клиентами»: адаптер — последний шаг того же направления, а не своё
- read-api-points разложена на конверт с точками, свёртку по сетке и
тренировки с записями; спринт 2026-08-04 набран пятью задачами
- первый шаг — замер: в 1 022 координатах, где полноту решило превосходство
полей, была ли более полная точка более поздней; от исхода ветвится всё
- «экспорт — источник правды» ограничено двумя рамками: по дате снапшота и по
типам, которых в экспорте нет вовсе (stateOfMind)
- байтовый тай-брейк решает 98,8% спорных координат из 84 978: step_count
потерял род, потому что сохранённая точка выиграла у более поздней
- вариант (б) «брать бо́льшее» снят, взято «пришедшая побеждает сохранённую»;
оно не полурешётка, и задача обязана доказать равенство пересборки приёму
- открытых вопросов не осталось: три решения владельца доведены до берущегося
вида, по entity-without-parsed-label принято хранить с NULL-меткой после Read API
- unseen-sections-check сжата до остатка — активная проверка появления секции;
разбор невиденных секций из неё вынут, вслепую он не пишется
- спринт под целью parsing-and-storage: categorical-value-dictionary и
unseen-sections-check, обеим написаны критерии приёмки с оракулами
- беклог и план переехали в docs/tasks (38 задач, 11 целей), слаги
переименованы с транслита на английские, 85 ссылок поправлены
- conventions.md разобран в docs/conventions/, local-research.md — в
docs/research/, review-journal.md — в docs/review.md с разделом настройки
конвейера; заведены security.md, adr/ и .pm.json
- шаг docs.py check добавлен в task gate; поведение в architecture.md помечено
девятью маркерами долга, database.md получил настройки с числовым значением