docs(catalog): v1 — мастер-индекс 170 функций + capability-карта, после adversarial-ревью (9 находок) + кросс-док-швы (F/C)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 16:52:01 +03:00
parent 2eaa561892
commit e9bff7f4c8
3 changed files with 227 additions and 9 deletions
+225 -7
View File
@@ -1,12 +1,230 @@
# Каталог возможностей (мастер-индекс)
> Единый список **всех** функций платформы со сквозными тегами. Заполняется по
> мере проработки доменов (Tier 2); служит источником для [roadmap.md](roadmap.md).
> Единый список **всех** функций платформы сводный реестр строк из доменных таблиц
> «Функции» (A–L) со сквозными тегами. Источник для [roadmap.md](roadmap.md):
> roadmap разворачивает фазы и критический путь, каталог — что вообще существует.
Статус: **заготовка**. Колонки фиксированы:
## Как читать
| ID | Функция | Домен | MVP / later | Фаза | Зависит от | Статус проработки |
|----|---------|-------|-------------|------|------------|-------------------|
| — | _TODO: наполняется по ходу проработки доменов_ | — | — | — | — | — |
- **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 | ✅ |
| 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 | 🟡 MCU vs supercap-only |
| B09 | MCU аппаратный fail-safe-таймер | B | MVP | v0 | hardware §3 | 🟡 MCU vs supercap-only |
| B10 | Thermal shutdown (триггер + hysteresis + UX) | B | MVP | v0/v1 | a-base §10, hardware §1a | ✅ |
| 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), здесь не дублируется.
+1 -1
View File
@@ -46,7 +46,7 @@
| Анимации/переходы (полировка) | **MVP** | — | v0 |
| Экран настроек (растёт: тема/единицы v0 → голос/LLM v1 → плагины v3) | **MVP** | Settings | v0+ |
| Интеграция ассистента (PTT + лог диалога) | **MVP** | D | v1 |
| Driver-distraction режим | **MVP** | K (GPS speed) v1 / E (OBD speed) v2 | v1 / v2 |
| Driver-distraction режим | **MVP** | K (GPS speed) v1 / E (OBD speed) v2 | v1/v2 |
| Ввод с мультируля (кнопки руля) | later | K/E | v1/v2 |
| UI управления разрешениями (review/revoke) | later | security-privacy | v3 |
| Мультидисплей · профили водителей · виджеты | later | — | later |
+1 -1
View File
@@ -98,7 +98,7 @@ App-Host из манифеста на activate ставит **cgroup-лимит
| Schema/`shturman_api`/id-валидация + ре-валидация + capability-pin | later | plugin-sdk, security-privacy | v3 |
| Sideload (+ гигиена распаковки) | later | App-Host, PluginManager | v3 |
| Capability-review UX (с C) + аудит операций | later | C, security-privacy, A §9 | v3 |
| Подпись манифеста/бандла + keyring | later | security-privacy (схема §10); v4-trust-anchor (signed OTA) | v3+/v4 |
| Подпись манифеста/бандла + keyring | later | security-privacy (схема §6); v4-trust-anchor (signed OTA) | v3+/v4 |
| Курируемый стор/реестр | later | — | later |
## 9. Зависимости