Files
shturman/docs/capability-catalog.md

25 KiB
Raw Permalink Blame History

Каталог возможностей (мастер-индекс)

Единый список всех функций платформы — сводный реестр строк из доменных таблиц «Функции» (A–L) со сквозными тегами. Источник для 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-карта), т.к. схема колонок реестра фиксирована (7). Сшивка с моделью security-privacy §3.

Реестр функций

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владелец/гейт (кто публикует ресурс и где он гейтится) + функции-потребители (ID реестра). Так каждая capability имеет явных потребителей, а каждая чувствительная функция — свой канал гейтинга.

capability владелец / гейт функции (ID)
vehicle_read:[signals] E — VehicleData-прокси (фильтр по списку) произв.: E01E08, 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, здесь не дублируется.