Files
shturman/docs/capability-catalog.md
kk0t9 737cb04f3a docs(v0.4): синхронизация швов MCU/thermal + статус
domain B (A12/B08/B09/B10 софт/модель; физический выбор → HW-bring-up), ipc §3 (Power +=
ThermalState/ThermalChanged), hardware §3 (B08/B09 статус v0.4 + 🟡 HW), capability-catalog
(A12/B10 , B08/B09 софт+модель), CLAUDE.md (статус v0.4 ГОТОВО → v0.5).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Alexander <akotenev2003@gmail.com>
2026-06-25 15:52:13 +03:00

231 lines
25 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Каталог возможностей (мастер-индекс)
> Единый список **всех** функций платформы — сводный реестр строк из доменных таблиц
> «Функции» (A–L) со сквозными тегами. Источник для [roadmap.md](roadmap.md):
> roadmap разворачивает фазы и критический путь, каталог — что вообще существует.
## Как читать
- **ID** = `<буква домена><NN>` (например `D10`). Стабильный якорь для ссылок из
roadmap и кросс-доков.
- **1:1 с доменами.** Каждая строка таблицы «Функции» домена имеет ровно одну запись
здесь, и наоборот (трассируемость; всего **170**: A24 · B14 · C15 · D16 · E14 · F12 ·
G13 · H15 · I16 · J9 · K9 · L13).
- **MVP/later, Фаза, Зависит от — verbatim из доменов.** Фазы НЕ нормализуются:
составные `vN/vM` и нестандартные (`ongoing`, `as needed`, «с первым surface-апом») сохранены
как в домене. Маркер `MVP-dev` = только для разработки; `MVP (день 1)` = критично в
первый образ; `MVP (killer)` = killer-фича.
- **Статус проработки:** `✅` — спроектировано в домене (v2, adversarial-ревью пройден);
`🟡` — остаётся **выбор-на-подтверждение** (указан кратко; зеркалит «Открытые вопросы»
домена).
- **Capability-теги** вынесены отдельной таблицей ([§ Capability-карта](#capability-карта-сшивка-с-security-privacy-3)),
т.к. схема колонок реестра фиксирована (7). Сшивка с моделью [security-privacy §3](contracts/security-privacy.md).
## Реестр функций
| ID | Функция | Домен | MVP/later | Фаза | Зависит от | Статус |
|----|---------|-------|-----------|------|------------|--------|
| A01 | Bring-up / base-образ (Debian/Armbian RK3588) | A | MVP | v0 | hardware | 🟡 Armbian/Debian vs Yocto |
| A02 | RO-rootfs A/B (kernel+dtb+initramfs+rootfs) + overlay(tmpfs) + `/data` | A | MVP (день 1) | v0 | — | 🟡 ФС /data: f2fs vs ext4 |
| A03 | Флешируемый релиз-образ (RAUC-bundle, прошивка) | A | later | v4 | — | ✅ |
| A04 | Быстрый boot (Stage 0/1/2, < 10 c) | A | MVP | v0 | architecture §6 | ✅ |
| A05 | Splash (Stage 0) | A | MVP | v0 | — | ✅ |
| A06 | First-boot provisioning (`/data` init, machine-id) | A | MVP (день 1) | v0 | — | ✅ |
| A07 | Время: NTP (timesyncd) + fake-hwclock персист | A | MVP | v0 | B | ✅ |
| A08 | Время: GPS как offline-first UTC (NMEA→gpsd→chrony) | A | MVP | v1 | hardware(GPS), K | ✅ |
| A09 | Память (zram + OOM + cgroup-лимиты) | A | MVP (день 1) | v0 | — | ✅ |
| A10 | Логирование (journald volatile + критичное в `/data` + pstore) | A | MVP (день 1) | v0 | — | ✅ |
| A11 | eMMC write-minimization | A | MVP (день 1) | v0 | — | ✅ |
| A12 | Тепловой мониторинг + базовый throttling (SoC) | A | MVP | v0 | hardware | ✅ v0.4 (политика+абстракция; cpufreq/пороги → RK3588) |
| A13 | Тепловой тюнинг (политики под горячий салон) | A | later | v1 | — | ✅ |
| A14 | Hardware watchdog (вооружён в boot-окне) + recovery | A | MVP | v0 | hardware, B | ✅ |
| A15 | systemd-таргеты / оркестрация | A | MVP | v0 | — | ✅ |
| A16 | Board-support: один reference-BSP | A | MVP | v0 | hardware HAL | ✅ |
| A17 | Локаль базы (ru_RU.UTF-8, tzdata, кириллич. шрифты, keymap) | A | MVP | v0 | — | ✅ |
| A18 | Stage 0 boot-инфра раннего пути задней камеры | A | later | v2 | architecture §6, J/B | ✅ |
| A19 | OTA (RAUC A/B incl ядро/dtb, signed, bootcount+mark-good, rollback) | A | later | v4 | — | 🟡 RAUC vs Mender/swupdate/OSTree |
| A20 | Secure boot (verified boot, OTP-eFuse, key-mgmt) | A | later | v4 | hardware | ✅ |
| A21 | At-rest шифрование `/data` (fscrypt, eFuse-bound) | A | later | v4 | secure boot | ✅ |
| A22 | Factory reset (`/data` wipe) | A | later | v4 | recovery | ✅ |
| A23 | Мульти-BSP (другие платы/авто) | A | later | later | hardware HAL | ✅ |
| A24 | Свой kernel/dtb тюнинг (внутри A/B-слота) | A | as needed | ongoing | — | ✅ |
| B01 | Детект ACC (debounce + crank) + `running` по напряжению | B | MVP (день 1) | v0 | hardware/MCU | ✅ |
| B02 | Graceful shutdown sequencing (+ ordered teardown) | B | MVP (день 1) | v0 | a-base, hold-up (hardware §3) | ✅ |
| B03 | Машина состояний (+ abort/committed) | B | MVP | v0 | — | ✅ |
| B04 | `ru.shturman.Power` сервис | B | MVP | v0 | ipc | ✅ |
| B05 | Watchdog (runtime + shutdown-фаза + boot-окно) | B | MVP | v0 | hardware, a-base | ✅ |
| B06 | Load-shedding при power-loss | B | MVP | v0 | селективные рейлы (hardware §6) | ✅ |
| B07 | Save last-known-time + периодика | B | MVP | v0 | a-base §7 | ✅ |
| B08 | MCU-копилот shutdown-протокол (если MCU) | B | MVP | v0 | hardware §3 | v0.4 софт (протокол+кодек+клиент); 🟡 физический MCU vs supercap → HW |
| B09 | MCU аппаратный fail-safe-таймер | B | MVP | v0 | hardware §3 | v0.4 модель (hang/budget→cut); 🟡 реальный таймер-чип → HW |
| B10 | Thermal shutdown (триггер + hysteresis + UX) | B | MVP | v0/v1 | a-base §10, hardware §1a | ✅ v0.4 (триггер+гистерезис; UX-рендер → v0.5) |
| B11 | MCU прошивка: update path | B | later | v1 | hardware | 🟡 MCU vs supercap-only |
| B12 | Sleep/wake + battery-cutoff | B | later | v1/v2 | — | ✅ |
| B13 | Гейт wake-word по состояниям (с D) | B | MVP | v1 | D | ✅ |
| B14 | Реверс-wake (Stage 0 камера) · scheduled/CAN-wake | B | later | v2/later | hardware §4, J | ✅ |
| C01 | Home с крупными тайлами | C | MVP | v0 | — | ✅ |
| C02 | Тема день/ночь (авто) | C | MVP | v0 | — | ✅ |
| C03 | Быстрый boot / первый кадр (Stage 1) | C | MVP | v0 | architecture §6 | ✅ |
| C04 | Slint-shell: home/тайлы/настройки (без внешних поверхностей) | C | MVP | v0 | — | ✅ |
| C05 | Декларативный рендер тайлов/карточек | C | MVP | v0 | — | ✅ |
| C06 | Полный smithay-композитор (мульти-клиент) + слот-поверхности | C | later | с первым surface-апом (нав/медиа) | — | ✅ |
| C07 | Статус-бар: время, сеть (с initial «unknown») | C | MVP | v0 | Connectivity, время (a-base §7) | ✅ |
| C08 | Статус-бар: быстрый статус машины | C | later | v2 | E | ✅ |
| C09 | Анимации / переходы (полировка) | C | MVP | v0 | — | ✅ |
| C10 | Экран настроек (тема/единицы v0 → голос/LLM v1 → плагины v3) | C | MVP | v0+ | Settings | ✅ |
| C11 | Интеграция ассистента (PTT + лог диалога) | C | MVP | v1 | D | ✅ |
| C12 | Driver-distraction режим | C | MVP | v1/v2 | K (GPS) v1 / E (OBD) v2 | ✅ |
| C13 | Ввод с мультируля (кнопки руля) | C | later | v1/v2 | K/E | ✅ |
| C14 | UI управления разрешениями (review/revoke) | C | later | v3 | security-privacy | ✅ |
| C15 | Мультидисплей · профили водителей · виджеты | C | later | later | — | ✅ |
| D01 | Wake-word «Штурман» | D | MVP | v1 | mic, tech-stack | ✅ |
| D02 | VAD (Silero) | D | MVP | v1 | — | ✅ |
| D03 | STT RU офлайн (Vosk/Silero) | D | MVP | v1 | — | ✅ |
| D04 | TTS RU офлайн (Silero) | D | MVP | v1 | — | ✅ |
| D05 | Push-to-talk + текстовый лог диалога | D | MVP | v1 | Shell | ✅ |
| D06 | Intent router | D | MVP | v1 | — | ✅ |
| D07 | Локальные интенты (громче/домой/…) | D | MVP | v1 | — | ✅ |
| D08 | LLM online (GigaChat/YandexGPT) | D | MVP | v1 | Connectivity | ✅ |
| D09 | Multi-turn контекст | D | MVP | v1 | — | ✅ |
| D10 | Vehicle-context injection | D | MVP (killer) | v2 | E, data-model | ✅ |
| D11 | Online degradation/timeout UX («думаю…»/«нет сети») | D | MVP | v1 | — | ✅ |
| D12 | Driver-distraction (приоритет голосу) | D | MVP | v1/v2 | Shell (owner); K (GPS) v1; E (OBD) v2 | ✅ |
| D13 | Provider switch + офлайн-фолбэк (llama.cpp) | D | later | v3 | — | 🟡 выбор офлайн-модели (бенч на железе) |
| D14 | Память о водителе (`.md`) | D | later | v3 | storage | 🟡 что авто-запоминать / схема / consent |
| D15 | Plugin-интенты (dispatch в IntentHandler) | D | later | v3 | plugin-sdk | ✅ |
| D16 | Barge-in (прерывание TTS голосом) | D | later | later | AEC, PipeWire loopback | ✅ |
| E01 | Live-сигналы (стандартные PID) | E | MVP | v2 | data-model, hardware(CAN) | ✅ |
| E02 | MIL-статус + DTC count (PID 01) | E | MVP | v2 | — | ✅ |
| E03 | Чтение DTC (Mode 03) + расшифровка по базе | E | MVP | v2 | dtc-база | 🟡 DTC-база: своя RU vs готовая |
| E04 | Пробинг поддерживаемых PID | E | MVP | v2 | — | ✅ |
| E05 | `engine_running` (running/stopped/unknown, из RPM; НЕ дублирует `Power.IgnitionState`) | E | MVP | v2 | — | ✅ |
| E06 | Подписка с rate-cap (~1020 Гц) | E | MVP | v2 | ipc | ✅ |
| E07 | Pending/permanent DTC (Mode 07/0A) | E | later | v2+ | — | ✅ |
| E08 | Мгновенный расход (computed, core) | E | later | v2/v3 | fuel_rate/MAF | ✅ |
| E09 | Trip-производные (пробег/средний) | E | — | — | **у плагина** (trip-стейт, plugin-sdk §8) | ✅ вне ядра |
| E10 | Топливные коррекции (fuel trim 0609) | E | later | later | — | ✅ |
| E11 | VIN (Mode 09) | E | later | later | — | ✅ |
| E12 | Пассивный сниффинг broadcast (DBC) | E | later | later | native CAN, DBC | ✅ |
| E13 | Vendor DTC (`P1xxx`) через vendor-базу | E | later | later | vendor DB | ✅ |
| E14 | Лог поездок | E | later | later | storage | ✅ |
| F01 | SDK-крейт `shturman-sdk` | F | MVP | v0 | — | ✅ |
| F02 | Dev-tools: scaffolding + валидатор манифеста | F | MVP-dev | v0 | — | ✅ |
| F03 | Dev-run плагина в VM (через App-Host) | F | MVP-dev | v0+ | App-Host, dev-environment | ✅ |
| F04 | Тест-харнесс plugin-host (#13) | F | MVP-dev | v0+ | dev-environment | ✅ |
| F05 | Жизненный цикл (install/update/remove) + LoadApp/UnloadApp | F | later | v3 | App-Host, PluginManager, plugin-sdk | ✅ |
| F06 | Атомарный install/update (staging+rename, a-base §3) | F | later | v3 | a-base §3 | ✅ |
| F07 | Бюджет ресурсов (cgroup + OOM-приоритет) | F | later | v3 | a-base §8 | ✅ |
| F08 | Schema/`shturman_api`/id-валидация + ре-валидация + capability-pin | F | later | v3 | plugin-sdk, security-privacy | ✅ |
| F09 | Sideload (+ гигиена распаковки) | F | later | v3 | App-Host, PluginManager | ✅ |
| F10 | Capability-review UX (с C) + аудит операций | F | later | v3 | C, security-privacy, A §9 | ✅ |
| F11 | Подпись манифеста/бандла + keyring | F | later | v3+/v4 | security-privacy §6; v4-trust-anchor | 🟡 схема подписи (формат/keyring/ревокация) |
| F12 | Курируемый стор / реестр | F | later | later | — | ✅ |
| G01 | Connectivity-сервис (WiFi-клиент + LTE-данные + статус + SIM-unlock) | G | MVP | v1 | hardware §4, NM/MM | ✅ |
| G02 | Состояние связности (portal/limited детект, не ложный online) | G | MVP | v1 | NM connectivity-check | ✅ |
| G03 | Приоритет/failover путей + metered-aware | G | MVP | v1 | — | ✅ |
| G04 | BT-адаптер + паринг (core) + диспетчер профилей + active-устройство | G | MVP | v2 | hardware (BT), BlueZ | ✅ |
| G05 | HFP-звонки (состояния + аудио `phone_call` + SCO-loss) | G | MVP | v2 | H §3, mic/amp | ✅ |
| G06 | Отказ-пути (сбой паринга, no_sim/no_service) | G | MVP | v2 | — | ✅ |
| G07 | Контакты/журнал (PBAP, фоновый синк) + privacy | G | MVP | v2 | security-privacy, a-base §3 | ✅ |
| G08 | Управление вызовом (руль/тач) + входящий-оверлей (vs реверс) | G | MVP | v2 | C §4/§7/§9, K §3 | ✅ |
| G09 | Голосовой набор «позвони X» (assistant-интент) | G | later | v2 | D §6 | ✅ |
| G10 | tethering от телефона (BT-PAN / hotspot) | G | later | v2/v3 | — | ✅ |
| G11 | WiFi-hotspot (AP, раздача uplink) | G | later | v3 | hardware/B | ✅ |
| G12 | SMS/сообщения (MAP) + чтение вслух | G | later | v3 | D (TTS) | ✅ |
| G13 | Проекция (CarPlay/Android Auto) | G | later | v4/неопр. | лицензии (§8) | 🟡 not-first-party / плагин / вне скоупа |
| H01 | Аудио-плоскость + роли (PipeWire `media.role`, Stage 1) | H | MVP | v1 | PipeWire/WirePlumber | ✅ |
| H02 | Политика фокуса/ducking (лестница, crash-safe 2 оси, гистерезис) | H | MVP | v1 | WirePlumber, D (state) | ✅ |
| H03 | AEC (`module-echo-cancel`) + loopback-референс | H | MVP | v1 | PipeWire, D | ✅ |
| H04 | Громкость/mute (master + per-stream, кривая, мультируль) | H | MVP | v1 | C/K (ввод) | ✅ |
| H05 | Вывод → codec/усилитель + pop-suppression | H | MVP | v1 | hardware, B | ✅ |
| H06 | Локальный плеер (библиотека + декодер + отказ-пути) | H | MVP | v2 | storage, `symphonia`/`audiopus` | 🟡 декодер/кодеки + AAC-патент (legal) |
| H07 | Now-playing UI + транспорт (тайл + поверхность) | H | MVP | v2 | C (слоты), Shell | ✅ |
| H08 | BT A2DP sink (SBC/AAC) + AVRCP (+ обрыв-handling) | H | MVP | v2 | BT-адаптер (G/Connectivity) | ✅ |
| H09 | Resume playback после рестарта (без авто-старта) | H | later | v2 | Settings, B | ✅ |
| H10 | Gapless-воспроизведение | H | later | v2 | `symphonia` | ✅ |
| H11 | FM-радио (+ RDS) | H | later | v3 | **тюнер (нет в hardware §4)** | 🟡 FM-тюнер: добавить vs отказаться |
| H12 | Стриминг (провайдер-агностик, креды юзера) | H | later | v3 | network, plugin-sdk | ✅ |
| H13 | Интернет-радио (HTTP/Icecast) | H | later | v3 | network | ✅ |
| H14 | Media-source точка расширения (плагины) | H | later | v3 | plugin-sdk, F | ✅ |
| H15 | Мульти-зона / balance-fader-EQ / BT A2DP source | H | later | later | hardware/BT | ✅ |
| I01 | Офлайн-карты (OSM/ODbL, PMTiles, version-coherent) | I | MVP | v4 | tech-stack, хранилище | ✅ |
| I02 | Рендер карты (MapLibre GL Native BSD-2, GPU, поверхность) | I | MVP | v4 | C §4, Mesa/Panfrost | ✅ |
| I03 | Офлайн-роутинг (ETA, rerouting+гистерезис) | I | MVP | v4 | движок | 🟡 Valhalla vs OSRM |
| I04 | Покрытие/детект региона (вне загруженных тайлов) | I | MVP | v4 | I §2, G §2 | ✅ |
| I05 | Turn-by-turn + промпты (`nav_guidance`, stale-drop) | I | MVP | v4 | H §3, D | ✅ |
| I06 | Map-matching + позиционирование (GPS-loss/free-drive/ресинк) | I | MVP | v4 | K §2 | ✅ |
| I07 | Ввод назначения (голос/поиск/избранное/тап) | I | MVP | v4 | D §6, геокодер | ✅ |
| I08 | Офлайн-геокодер/POI (статус «вне региона») | I | MVP | v4 | OSM-данные | ✅ |
| I09 | Избранное/дом/работа/last-parked (fscrypt, consent-синк) | I | MVP | v4 | a-base §3, sec-priv, L | ✅ |
| I10 | Отказ-пути (no-route/geocoder/битые-тайлы/ENOSPC) | I | MVP | v4 | I §4/§6/§2, L §7 | ✅ |
| I11 | Resume маршрута (валидность по тайлам/фиксу) | I | MVP | v4 | Settings, B, I §2 | ✅ |
| I12 | Speed-limit инфо-бейдж (пассивный, не предупреждение) | I | later | v4 | OSM `maxspeed` | ✅ |
| I13 | Обновление карт (канал L / ручное, атомарно) | I | later | v4 | L §5/§7, G | ✅ |
| I14 | Трафик: TMC/RDS (задел) | I | later | later | **H §7** | ✅ |
| I15 | Трафик/поиск онлайн (опц. #8) | I | later | later | G §2 | ✅ |
| I16 | Sensor-fusion DR в тоннелях (IMU+GPS) | I | later | later | K §10 (открыто) | ✅ |
| J01 | Задняя камера (capture + вид) + Stage 0 ранний путь (DRM/KMS) | J | later | v2 | hardware, A §4, B §7, C | 🟡 DRM-master handoff Stage 0→1 |
| J02 | Парктроник-оверлей (с учётом stale) | J | later | v2 | E/K | ✅ |
| J03 | Fail-safe «нет сигнала» (frame-watchdog → SignalState) | J | later | v2 | — | ✅ |
| J04 | Камера-вид как Wayland-поверхность | J | later | v2 | C slot-протокол | ✅ |
| J05 | `camera_in` capability + per-node гейтинг | J | later | v2 | security-privacy | ✅ |
| J06 | Dev-симулятор камер (#13) | J | MVP-dev | v0+ | dev-environment (PipeWire/vcan) | ✅ |
| J07 | Камеры 0..N (динамический набор) | J | later | later | data-plane | ✅ |
| J08 | Dashcam (ring-buffer + privacy/fscrypt + ShutdownImminent-флаш) | J | later | later | A §3/§10/§12, B §4 | 🟡 кодек/VPU (H.264/H.265, rkmpp) |
| J09 | Surround / 360° (+ бюджет ресурсов) | J | later | later | a-base §8, hardware | ✅ |
| K01 | `ru.shturman.Location` (GPS → position/speed/heading + FixQuality/HDOP) | K | MVP | v1 | hardware(GPS), gpsd | ✅ |
| K02 | Zero-clamp скорости / валидность курса у нуля | K | MVP | v1 | — | ✅ |
| K03 | GPS-источник (NMEA/gpsd) для time-sync a-base §7 | K | MVP | v1 | hardware(GPS) | ✅ |
| K04 | Приватность локации (эфемерна; audit; не в промпт) | K | MVP | v1 | security-privacy | ✅ |
| K05 | Мультируль: ADC-лесенка (window-table) → uinput | K | later | v1/v2 | hardware(ADC)/BSP | ✅ |
| K06 | Мультируль: CAN-кнопки (через E) | K | later | v2 | E | ✅ |
| K07 | IMU / акселерометр (опц.) | K | later | later | hardware(IMU) | ✅ |
| K08 | Выделенные не-CAN датчики | K | later | later | hardware | ✅ |
| K09 | Nav-позиционирование (потребитель Location) | K | later | v4 | домен I | ✅ |
| L01 | Companion-сервис (device-side, локальный API, Stage 2) | L | later | v3 | G (транспорт), Settings | ✅ |
| L02 | Паринг device↔телефон (локальный якорь, per-peer ключ) | L | later | v3 | — | ✅ |
| L03 | Моб.приложение: данные машины/DTC (read-only) + поездки | L | later | v3 | E, trip-плагин | 🟡 моб.стек: Flutter vs Rust-core+native |
| L04 | Моб.приложение: просмотр/правка памяти водителя | L | later | v3 | D §7 | ✅ |
| L05 | Синхронизация (настройки/память/поездки, local-first) | L | later | v3 | Settings, D, trip-плагин | ✅ |
| L06 | Уведомления (local in-app / remote-relay) | L | later | v3/v4 | relay (§5) | 🟡 push-транспорт: relay vs APNs/FCM vs локально |
| L07 | Телеметрия (opt-in, выключена; consent-wipe на reset) | L | later | v2/v3 | security-privacy §7, a-base §12 | ✅ |
| L08 | Бэкап/восстановление `/data` (+ совместимость BSP/схемы) | L | later | v3/v4 | a-base §3/§11/§12 | ✅ |
| L09 | OTA-канал: сборка/хостинг/доставка + fail-safe + anti-rollback | L | later | v4 | a-base §5, secure boot | ✅ |
| L10 | Каналы релизов (stable/beta) + staged rollout + halt-петля | L | later | v4 | OTA-канал | ✅ |
| L11 | Опциональное облако (relay/хостинг, self-hostable) | L | later | v4 | — | ✅ |
| L12 | Удалённый статус машины (read-only, opt-in локация) | L | later | v4 | E, consent | ✅ |
| L13 | Удалённый доступ через облако-relay (E2E) | L | later | v4 | паринг, облако | ✅ |
## Capability-карта (сшивка с security-privacy §3)
> Каждая capability из [модели §3](contracts/security-privacy.md) → **владелец/гейт** (кто
> публикует ресурс и где он гейтится) + **функции-потребители** (ID реестра). Так каждая
> capability имеет явных потребителей, а каждая чувствительная функция — свой канал гейтинга.
| capability | владелец / гейт | функции (ID) |
|------------|-----------------|--------------|
| `vehicle_read:[signals]` | E — `VehicleData`-прокси (фильтр по списку) | произв.: E01–E08, E10E14 · потреб.: D10, C08, J02, L03, L12 · плагины |
| `assistant_intents:[…]` | D — `Assistant.RegisterIntents` + OWN `IntentHandler` | ядро: D06, D07 · расш.: D15 · регистрируют: G09, I07 · плагины |
| `ui_tiles` / `ui_screens` | C — `Shell.Register*` (+ Wayland-сокет для поверхности) | ядро-UI: C01, C04, C05, C07, C08, C10, C11 · поверхности: H07, I02, J04 · плагины |
| `audio_out` | H — арбитр + PipeWire Security Context (playback-ноды) | произв.: H01, H02, H05, H06, H08, H10H15 · роли: D04 (TTS), I05 (нав), G05 (`phone_call`) |
| `audio_in` (микрофон) | H — per-node capture (WirePlumber) + D потребитель · **высокочувств.** | D01, D02, D03 · H03 (AEC-референс) · G05 (HFP-mic) |
| `network` | G — Connectivity (net-namespace + runtime-грант) | D08, H12, H13, I13, I15, L01, L05, L06, L09L13 · плагины (бинарно on/off) |
| `location` | K — `ru.shturman.Location` (+ runtime-грант) | произв.: K01 · потреб.: C12, D12, I06, I07, I09, L12 · NMEA-для-времени (не cap): K03→A08 |
| `camera_in:[sources]` (камера) | J — per-node PipeWire SC + WirePlumber (+ индикатор) · **высокочувств.** | J01, J04, J05, J07, J08, J09 · плагины (узкий per-source) |
| `gpu` (render) | bubblewrap пробрасывает `/dev/dri` | C06 (композитор), I02 (MapLibre), D13 (llama.cpp, опц. GPU-offload), J08/J09 (декод/surround) |
| `storage` | A — `/data` + bubblewrap mount `/data/apps/<id>/` | D14, E09/E14, H06, I09, J08, L08 · плагины (F-песочница) |
## Покрытие и заметки
- **Трассируемость:** 170 строк, биекция с доменными таблицами «Функции» (каждая
доменная строка ↔ ровно один ID). При правке домена — синхронизировать строку здесь.
- **🟡-строки** (выбор-на-подтверждение, зеркалят «Открытые вопросы» доменов): A01, A02,
A19, B08, B09, B11, D13, D14, E03, F11, G13, H06, H11, I03, J01, J08, L03, L06 — **18**.
- **Сквозные открытые вопросы** (не привязаны к одной строке — в roadmap как риски):
размещение карт-данных (I §18 ↔ A §10/hardware) · владелец BlueZ / выделенный BT-сервис
(G §15) · exec/mount-политика `/data` (F §10 ↔ A §3) · AAC-патент / ODbL-атрибуция
(H §15, I §18 → legal/#12).
- **Фазы — verbatim**; последовательность и критический путь (образ/power v0 → UI v0 →
ассистент-онлайн v1 → контекст машины v2 → офлайн+Plugin API v3 → нав+OTA+ретрофит v4)
разворачивает [roadmap.md](roadmap.md), здесь не дублируется.