- роадмап отвечает «что умеет и чего не умеет»: PLAN.md → ROADMAP.md, четыре канонические секции, достигнутые звенья строками в «Готово», цели переформулированы возможностями приложения - задачи: род работы и «Затрагивает» набору спринта, 34 заголовка в форму действия, «Завершение» целей перечнями со ссылкой из каждой задачи - вычитка проходами task-form и doc-wording, починены протухшие факты в README, паспорте и review.md
5.9 KiB
Роадмап
Что приложение уже умеет и чего ещё не умеет. Цель — возможность приложения,
файл [goal] в items/; её задачи здесь не перечисляются — перечень даёт
tasks.py list --goal <слаг>. Очередь значима только в «Запланировано» и
обосновывается прозой рядом.
Готово
- 2026-08-01
ingest— Сервис принимает доставки HAE и кладёт тела в архив. Приём отвечает200до разбора, свёртку ведёт фоновый воркер: код ответа отражает доставку, а не её понимание. - 2026-08-02
reindex—healthlog reindexпроигрывает журнал в свежую витрину и печатает оба отпечатка. Повторный прогон ничего не меняет. - 2026-08-02
catalog— Клиент видит перечень разрезов с измеренным родом агрегации. Сверка минутного слоя с часовым разложила метрики живого корпуса на накопительные и мгновенные, не сойдясь ни на одной. - 2026-08-04
parsing-and-storage— Метрики, тренировки и записи со своимиidразобраны и лежат в часовых объектах. Ни одна секция живого потока не числится неразобранной, категориальные значения несут стабильный код рядом с переведённой строкой, первая встреча незнакомой секции наблюдаема.
Разведка формата закончена там же и записана в research/apple-health.md: правило вывода слоя, модель идентичности и формы точки проверены на живом потоке. Возможностью приложения она не была, поэтому строки среди достигнутых целей не занимает.
Запланировано
Очередь держится на двух зависимостях. healthlog import идёт перед чисткой
нижнего слоя: пока импорт экспорта не написан, помечать что-либо устаревшим не
на основании чего. MCP входит в чтение, а не идёт отдельной целью: адаптер
собственной логики не несёт, он переводит вызовы в те же обработчики, и очередь
осталась порядком задач внутри цели.
- [goal] Клиенты читают данные через HTTP и MCP — Данные видны только через sqlite на хосте — ни один из трёх потребителей, включая агента-медика, ничего прочитать не может
- [goal] Клиент узнаёт форму данных из ответа — Метрик больше сотни и формы точек разные — клиент вынужден угадывать структуру по выборке
- [goal] История из родного экспорта Apple лежит в хранилище — Слой sample пуст: полная история и точные сэмплы лежат в zip-архиве и никуда не едут
- [goal] Нижний слой чистится после проверенного экспорта — Нижний слой растёт на ~100 тысяч координат в сутки, а после экспорта Apple он избыточен
- [goal] Приложение сообщает о своём состоянии — Тихо сломавшаяся автоматизация — главный эксплуатационный риск, а сейчас факт виден только в логах
Направления
- [goal] Исход слияния не зависит от порядка элементов на проводе — Правила слияния держатся на замерах, и каждый новый замер находит зависимость от порядка на проводе
- [goal] Расхождение витрины с журналом не молчит — Расхождение витрины с журналом сейчас молчит: reindex печатает оба отпечатка, а сравнивать их некому
- [goal] У каждого входа есть названный предел — Предела на одну сущность нет вовсе: 63 МиБ держат блокировку 5.019 с, соседние доставки уходят в failed
- [goal] Новая форма от источника не теряется молча — Пять секций HAE поток ещё не приносил, а ручные секции заводятся задним числом — разбор полон ровно до следующей новой формы
Разработка
- [goal] Сервис доступен телефону из любой сети — Сервис живёт на рабочей машине — телефон достаёт до него только дома, и оба контура открыты