From e9bff7f4c8ee772d653dde710a8b86bedfeef4fd Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 23 Jun 2026 16:52:01 +0300 Subject: [PATCH] =?UTF-8?q?docs(catalog):=20v1=20=E2=80=94=20=D0=BC=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D1=80-=D0=B8=D0=BD=D0=B4=D0=B5=D0=BA=D1=81?= =?UTF-8?q?=20170=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B9=20+=20capab?= =?UTF-8?q?ility-=D0=BA=D0=B0=D1=80=D1=82=D0=B0,=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=20adversarial-=D1=80=D0=B5=D0=B2=D1=8C=D1=8E=20(9?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=85=D0=BE=D0=B4=D0=BE=D0=BA)=20+=20=D0=BA?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D1=81-=D0=B4=D0=BE=D0=BA-=D1=88=D0=B2=D1=8B?= =?UTF-8?q?=20(F/C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- docs/capability-catalog.md | 232 +++++++++++++++++++++++++++++++++- docs/domains/c-shell-ux.md | 2 +- docs/domains/f-plugin-host.md | 2 +- 3 files changed, 227 insertions(+), 9 deletions(-) diff --git a/docs/capability-catalog.md b/docs/capability-catalog.md index 598250b..b68d53c 100644 --- a/docs/capability-catalog.md +++ b/docs/capability-catalog.md @@ -1,12 +1,230 @@ # Каталог возможностей (мастер-индекс) -> Единый список **всех** функций платформы со сквозными тегами. Заполняется по -> мере проработки доменов (Tier 2); служит источником для [roadmap.md](roadmap.md). +> Единый список **всех** функций платформы — сводный реестр строк из доменных таблиц +> «Функции» (A–L) со сквозными тегами. Источник для [roadmap.md](roadmap.md): +> roadmap разворачивает фазы и критический путь, каталог — что вообще существует. -Статус: **заготовка**. Колонки фиксированы: +## Как читать -| ID | Функция | Домен | MVP / later | Фаза | Зависит от | Статус проработки | -|----|---------|-------|-------------|------|------------|-------------------| -| — | _TODO: наполняется по ходу проработки доменов_ | — | — | — | — | — | +- **ID** = `<буква домена>` (например `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 (~10–20 Гц) | 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 06–09) | 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, E10–E14 · потреб.: 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, H10–H15 · роли: 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, L09–L13 · плагины (бинарно 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//` | 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), здесь не дублируется. diff --git a/docs/domains/c-shell-ux.md b/docs/domains/c-shell-ux.md index e462903..6612674 100644 --- a/docs/domains/c-shell-ux.md +++ b/docs/domains/c-shell-ux.md @@ -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 | diff --git a/docs/domains/f-plugin-host.md b/docs/domains/f-plugin-host.md index 6352a4d..dd7a196 100644 --- a/docs/domains/f-plugin-host.md +++ b/docs/domains/f-plugin-host.md @@ -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. Зависимости