- каждая запись каталога задач получила тип вместо тега kind: и префикса заголовка; секция роадмапа «Разработка» стала «Сопровождением», порядок секций канонический - поправлены протухшие факты: нереализованные маршруты Read API, MCP и `healthlog import`, словарь слоёв в инварианте, семантика гейта по покрытию диффа, периметр перестал дублировать security.md - замер слияния переведён с находки 49 на находку 54, заполнены Purpose спек storage и parsing
78 lines
4.9 KiB
Markdown
78 lines
4.9 KiB
Markdown
# Разведка
|
|
|
|
Наблюдения за внешним миром: что реально шлёт источник, чем документация
|
|
формата расходится с практикой. Источник истины — этот каталог, а не чужая
|
|
документация.
|
|
|
|
**Каждый вывод — с числами и командой, которой получен**, чтобы его можно было
|
|
перепроверить. Число без источника читается как условие, а не как замер.
|
|
|
|
## Как снималось
|
|
|
|
Сервис запущен локально (`task run`), телефон шлёт по локальной сети на IP
|
|
машины. Автоматизация — REST API, JSON, интервал 5 минут.
|
|
|
|
Накоплено к 2026-08-01: **42 доставки, 165 МБ тел, 6,6 МБ архива**.
|
|
Три автоматизации, режимы менялись по ходу разведки:
|
|
|
|
| автоматизация | что шлёт | режимы, которые прошли |
|
|
|---|---|---|
|
|
| `BC99C8A3` | показатели здоровья | суммирование посекундно → поминутно → **выключено**, период Today → Default → **Since Last Sync** |
|
|
| `37A43AE1` | тренировки (сперва ошибочно показатели) | период Default |
|
|
| `F4458FA4` | состояние разума | период Default |
|
|
|
|
За это время снято: суммированные данные обеих гранулярностей,
|
|
несуммированные, тренировка в помещении и уличная с геотреком, состояния
|
|
разума, ночь целиком. Позже к этому добавился родной экспорт Apple Health —
|
|
второй источник, снятый разово выгрузкой из приложения «Здоровье».
|
|
|
|
Разбор — командами вида:
|
|
|
|
```
|
|
gzip -dc raw/2026/07/31/<id>.json.gz | jq -r '...'
|
|
```
|
|
|
|
плюс скриптом `tmp/research/hl.py` (Python 3, только стандартная библиотека,
|
|
каталог под `.gitignore`):
|
|
|
|
```
|
|
python3 tmp/research/hl.py deliveries что приехало
|
|
python3 tmp/research/hl.py metrics --period 'Since Last Sync'
|
|
python3 tmp/research/hl.py shapes формы точки
|
|
python3 tmp/research/hl.py sources источники, с показом невидимых символов
|
|
python3 tmp/research/hl.py points step_count точки, инфляция серий
|
|
python3 tmp/research/hl.py sleep разбор ночи
|
|
python3 tmp/research/hl.py diff <id1> <id2> что изменилось между доставками
|
|
python3 tmp/research/hl.py workouts тренировки, ряды, маршрут
|
|
```
|
|
|
|
Он канонизирует JSON перед сравнением и показывает невидимые символы — те две
|
|
грабли, на которых разбор оболочкой ломался молча.
|
|
|
|
## Записи
|
|
|
|
- [apple-health.md](apple-health.md) — 54 находки на живом потоке Health Auto
|
|
Export и на родном экспорте Apple.
|
|
|
|
Записи нумерованы сквозным номером внутри файла, и **на номер ссылаются
|
|
снаружи**: спеки, предложения и задачи говорят «находка 49». Поэтому нумерация
|
|
не пересчитывается, записи не переставляются, новая получает следующий номер.
|
|
|
|
Тематический указатель по номерам находок:
|
|
|
|
| Тема | Находки |
|
|
| --- | --- |
|
|
| Форма точки, схемы, типы значений | 4, 21, 38, 39, 44 |
|
|
| Слой и гранулярность, режимы автоматизации | 5, 6, 13, 19, 20, 23, 33, 41 |
|
|
| Идентичность, столкновения, слияние, полнота | 11, 14, 36, 47, 49, 54 |
|
|
| Досчёт задним числом и стабильность значений | 3, 10, 30, 48, 51 |
|
|
| Локализация и категориальные значения | 8, 24, 37, 43 |
|
|
| Секции потока и их состав | 9, 15, 16, 17, 22, 34, 50, 52 |
|
|
| Заголовки доставки и мета-информация | 12, 31, 32 |
|
|
| Родной экспорт Apple как второй источник | 34, 42, 43, 45, 46 |
|
|
| Объём, цена, что чистить | 7, 23, 41 |
|
|
| Поведение приложения и потери данных | 18, 26, 27, 28, 29 |
|
|
| Род агрегации | 40, 53 |
|
|
| Разбор ночи, сон | 25, 35, 38, 47 |
|
|
| Источник точки (`source`) | 1, 2, 36 |
|