- три решения опровергнуты экспериментами: повтор при SQLITE_BUSY не сходится без _txlock=immediate (242 из 800 против 800 из 800), разбор в map[string]any держит 197 МиБ против 54, канонизация без json.Number теряет литерал - канонизации назначен дом: общий internal/canon вместо hae, иначе импорт экспорта Apple потребует второй реализации и хеш-детектор станет бесполезен - вывод слоя вернул шаг наследования, WARN сравнивается только с надёжным заголовком; в bucket возвращены units и границы содержимого
Беклог
Одна задача = один файл <slug>.md + строка в этом индексе.
Приоритет — грубая оценка «ценность / стоимость». Спекулятивные
задачи помечены [idea] в заголовке. Ведётся скиллом backlog.
Блокеры — вопросы, вынутые из задач. Работа над задачей идёт автономно; если внутри обнаружился вопрос, который решать не мне, он вынимается отдельным пунктом сюда, а сама задача переформулируется на остаток и продолжается. Пункт блокера отвечает на три вопроса: что именно решить, какие есть варианты с ценой каждого, и что заблокировано, пока решения нет. Разбираются пачками, а не по одному — прерывать поток ради каждого дороже, чем накопить.
блокеры
- Идентичность эпизодных метрик — Координатный ключ схлопывает эпизоды сна: 31 координата в 21 доставке из 89, тай-брейк неисполним
высокий
- Разбор метрик в часовые объекты — Доставки копятся непрозрачными телами — точек в хранилище нет вовсе, всё остальное упирается в это
- Тренировки и секции с собственными id — Тренировки с геотреком и состояние разума приходят, но не разбираются — без них не закрыть ни трекер, ни агента-медика
- Пересборка хранилища из сырого архива — Ошибка разбора без пересборки становится потерей данных — исправленный код не применится к уже разобранному
- Измеренный род агрегации и каталог разрезов — Без рода метрики свёртка в ответе неотличима от угадывания — а суммировать нижний слой значит завысить втрое
- Read API: точки, выбор слоя, свёртка по сетке — Данные видны только через sqlite на хосте — ни один из трёх потребителей ничего прочитать не может
- OpenAPI-спека и Swagger UI — Потребителей три и один из них агент — контракт должен читаться машиной, а не пересказываться в чате
- MCP-сервер поверх Read API — Агент-медик — первый заказчик проекта, а подключить его сейчас нечем
средний
- Словарь категориальных значений → коды HealthKit — Фазы сна и типы тренировок приходят строками русской локали — с экспортом Apple их не сверить
- Выведенные из данных схемы содержимого — Метрик больше сотни и формы точек разные — клиент вынужден угадывать структуру по выборке
- Импорт родного экспорта Apple Health — Слой sample пуст: полная история и точные сэмплы лежат в zip-архиве и никуда не едут
- Проверка секций, которых поток ещё не приносил — Симптомы, ЭКГ, лекарства, цикл и вес не виденны живьём — разбор писался вслепую
- Наблюдаемость: /stats — Тихо сломавшаяся автоматизация — главный эксплуатационный риск, а сейчас факт виден только в логах
- Деплой на rivendell — Сервис живёт на рабочей машине — телефон достаёт до него только дома
- Управление токенами и секретами — Проверка токенов выключена, config.docker.toml коммитится — так нельзя выезжать наружу
- [idea] Что считать сутками при смене часового пояса — Шаги за день — базовый запрос трекера и игры, но чей это день при перелёте, не решено
- [idea] Пересекающиеся источники одной метрики — Сон пишут и часы, и стороннее приложение — сумма по обоим задвоит ночь
- Умолчания конфига указывают на прежнюю раскладку — Запуск без конфига заведёт пустую базу в корне рядом с настоящей — тихая ловушка
низкий
- Устаревание нижнего слоя после экспорта — Нижний слой растёт на ~100 тысяч координат в сутки, а после экспорта Apple он избыточен
- Ретеншен сырого архива — Архив не подчищается вовсе — 14-дневный срок объявлен, но не работает
- Активный алерт «данных нет N часов» — Пропажу потока сейчас замечает человек, а не сервис