- каждая запись каталога задач получила тип вместо тега kind: и префикса заголовка; секция роадмапа «Разработка» стала «Сопровождением», порядок секций канонический - поправлены протухшие факты: нереализованные маршруты Read API, MCP и `healthlog import`, словарь слоёв в инварианте, семантика гейта по покрытию диффа, периметр перестал дублировать security.md - замер слияния переведён с находки 49 на находку 54, заполнены Purpose спек storage и parsing
55 lines
6.3 KiB
Markdown
55 lines
6.3 KiB
Markdown
# Роадмап
|
|
|
|
Что приложение уже умеет и чего ещё не умеет. Цель — возможность приложения,
|
|
файл типа `goal` в `items/`; её задачи здесь **не перечисляются** — перечень даёт
|
|
`tasks.py list --goal <слаг>`. Очередь значима только в «Запланировано» и
|
|
обосновывается прозой рядом. В «Сопровождении» лежит то, чем держат проект —
|
|
выкладка, инструмент, эксплуатация; граница проходит по тому, кто наблюдает:
|
|
сообщает ли о состоянии приложение своему пользователю или дежурный смотрит на
|
|
сервис снаружи.
|
|
|
|
## Запланировано
|
|
|
|
Очередь держится на двух зависимостях. **`healthlog import` идёт перед чисткой
|
|
нижнего слоя:** пока импорт экспорта не написан, помечать что-либо устаревшим не
|
|
на основании чего. **MCP входит в чтение, а не идёт отдельной целью:** адаптер
|
|
собственной логики не несёт, он переводит вызовы в те же обработчики, и очередь
|
|
осталась порядком задач внутри цели.
|
|
|
|
- [🎯 Клиенты читают данные через HTTP и MCP](items/read-api.md) — Данные видны только через sqlite на хосте — ни один из трёх потребителей, включая агента-медика, ничего прочитать не может
|
|
- [🎯 Клиент узнаёт форму данных из ответа](items/self-description.md) — Метрик больше сотни и формы точек разные — клиент вынужден угадывать структуру по выборке
|
|
- [🎯 История из родного экспорта Apple лежит в хранилище](items/native-export-import.md) — Слой sample пуст: полная история и точные сэмплы лежат в zip-архиве и никуда не едут
|
|
- [🎯 Нижний слой чистится после проверенного экспорта](items/lower-layer-cleanup.md) — Нижний слой растёт на ~100 тысяч координат в сутки, а после экспорта Apple он избыточен
|
|
- [🎯 Приложение сообщает о своём состоянии](items/observability.md) — Тихо сломавшаяся автоматизация — главный эксплуатационный риск, а сейчас факт виден только в логах
|
|
|
|
## Направления
|
|
|
|
- [🎯 Исход слияния не зависит от порядка элементов на проводе](items/merge-robustness.md) — Правила слияния держатся на замерах, и каждый новый замер находит зависимость от порядка на проводе
|
|
- [🎯 Расхождение витрины с журналом не молчит](items/journal-and-rebuild.md) — Расхождение витрины с журналом сейчас молчит: reindex печатает оба отпечатка, а сравнивать их некому
|
|
- [🎯 У каждого входа есть названный предел](items/limits-and-load.md) — Предела на одну сущность нет вовсе: 63 МиБ держат блокировку 5.019 с, соседние доставки уходят в failed
|
|
- [🎯 Новая форма от источника не теряется молча](items/parsing-completeness.md) — Пять секций HAE поток ещё не приносил, а ручные секции заводятся задним числом — разбор полон ровно до следующей новой формы
|
|
|
|
## Сопровождение
|
|
|
|
- [🎯 Сервис доступен телефону из любой сети](items/deploy.md) — Сервис живёт на рабочей машине — телефон достаёт до него только дома, и оба контура открыты
|
|
|
|
## Готово
|
|
|
|
- 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](../research/apple-health.md): правило вывода слоя,
|
|
модель идентичности и формы точки проверены на живом потоке. Возможностью
|
|
приложения она не была, поэтому строки среди достигнутых целей не занимает.
|