diff --git a/docs/contracts/hardware.md b/docs/contracts/hardware.md index 48d3dfb..bacb131 100644 --- a/docs/contracts/hardware.md +++ b/docs/contracts/hardware.md @@ -110,9 +110,9 @@ read-запросы OBD-II разрешены (без них не прочита ELM327 не убираем (E §3 — путь для старых не-CAN авто), но где нужна жёсткая гарантия — адаптер без TX. **Задняя камера (контракт захвата; safety НЕ заявляем, принцип #1):** стандарт CVBS (PAL/NTSC) + -разрешение/fps; источник «задняя включена» — провод фонаря з.х. (GPIO, надёжнее/быстрее) vs CAN -gear-сигнал (тогда gear нужен в data-model); **латентность — инженерный бюджет** (#11: -time-to-first-frame + steady-state; verified boot добавляет Stage-0 задержку, мерить отдельно), +разрешение/fps; источник «задняя включена» — **провод фонаря з.х. (GPIO — выбранный дефолт, J §13)**; CAN +gear-сигнал — отложенная альтернатива (требует gear в data-model); **латентность — инженерный бюджет** (#11: +time-to-first-frame + steady-state; verified boot добавляет Stage 0 задержку, мерить отдельно), не регуляторное требование; **fail-safe:** при отказе чипа — явное «нет сигнала», не замёрзший кадр (#4). Оверлей/UX — домен J. diff --git a/docs/dev-environment.md b/docs/dev-environment.md index 395b11c..bdb3c3f 100644 --- a/docs/dev-environment.md +++ b/docs/dev-environment.md @@ -43,7 +43,7 @@ L2 Linux dev-VM systemd · D-Bus · SocketCAN(vcan) · PipeWire · Wayland(s (Lima, vz, ← интегрированный стек; сервисы = systemd-юниты + bubblewrap (как в проде) ARM64) │ -L3 Симуляция Vehicle Simulator (vcan) · моки LLM/STT/TTS · фейк-GPS · мок-сеть +L3 Симуляция Vehicle Simulator (vcan) · моки LLM/STT/TTS · фейк-GPS · мок-сеть · fake-камера/аудио/BT · plugin-host-харнесс │ L4 Реальный RK3588 (позже) сборка образа → флеш → путь «VM → железка» ``` @@ -59,7 +59,7 @@ L4 Реальный RK3588 (позже) сборка образа → флеш | Сборка Rust | **в VM** (та же арка) + кросс `aarch64-unknown-linux-gnu` с хоста | target-arch бинари | | Аудио | **PipeWire** в VM | тест аудио-пайплайна | | Изоляция сервисов | **systemd-юниты + bubblewrap** | dev зеркалит прод, а не Docker-огород | -| Оркестрация | **`justfile`** | единые dev-команды (`just vm-up`, `just sim`, `just test`…) | +| Оркестрация | **`justfile`** | единые dev-команды (`just vm-up`, `just sim`, `just test`, `just plugin-dev-run`/`sideload`…) | | CI | **GitHub Actions, ARM64-Linux** | совпадает с таргетом | | License-check | **`cargo-deny`** | принцип #12 (без AGPL-заразы) | @@ -85,6 +85,10 @@ ELM327-emulator. **Эталонный тест killer-фичи:** симулят - **LLM** — заглушка (canned-ответы/echo) или крошечная локальная модель. - **STT** — обход голоса вводом текста; **TTS** — тихий/лог-режим. - **GPS** — NMEA-реплей; **модем/сеть** — управляемые состояния (для теста offline-first). +- **Камеры** — fake V4L2/PipeWire-источник (тест-паттерн / реплей / **no-signal**; реверс-стаб; Stage 0-мок TTFF) — J §11. +- **Аудио** — синтетический медиа-поток, мок BT-A2DP / нав-промпта / TTS / звонка (матрица ducking) — H §12. +- **BT / телефон** — фейковый BT-стек (паринг + сбой, HFP/A2DP/PBAP, мульти-устройство, SCO-loss), мок-контакты — G §12. +- **Plugin-host** — тест-харнесс: поднять плагин в bubblewrap + прокси из манифеста (sideload), итерация без полного стека — F. --- diff --git a/docs/domains/a-base-system.md b/docs/domains/a-base-system.md index 9866588..247f2ce 100644 --- a/docs/domains/a-base-system.md +++ b/docs/domains/a-base-system.md @@ -132,14 +132,16 @@ ## 8. Память (zram / OOM) -Локальная квантованная LLM (llama.cpp) + smithay + PipeWire + ONNX STT/TTS + Vehicle-Data -на 8–16 ГБ — реальное давление на память. Базовая политика: +Локальная квантованная LLM (llama.cpp) + smithay + PipeWire + ONNX STT/TTS + Vehicle-Data + +**видео-пайплайн** (DMABUF камер / VPU-кодирование dashcam, J §9) на 8–16 ГБ — реальное давление +на память. Базовая политика: - **zram** (сжатый swap в RAM, lz4/zstd) — основной запас; даёт RAM без записи во flash (служит и цели §10-износа). - **Swap-на-flash (eMMC/SD) — запрещён** (убивает flash, нарушает §10). - **OOM-политика:** `systemd-oomd`/earlyoom — защищаем kernel/Power/Shell/Perm-Broker - (Stage-1 critical set), первыми жертвами делаем офлайн-LLM и фоновые апы. + (Stage 1 critical set) **+ низколатентную заднюю камеру** (J §9); первыми жертвами — офлайн-LLM, + фоновые апы, **throttleable dashcam/surround** (J §9 — деградируют видимо, не stall). - **cgroup `MemoryMax/MemoryHigh`** на App-Host и тяжёлые апы. 8 ГБ — впритык, 16 ГБ — целевой для одновременной локальной LLM (см. выбор модели — d-assistant). @@ -175,7 +177,8 @@ ## 12. Factory reset (сброс к заводским) Атомарная очистка/реинициализация **только `/data`** (wipe поддеревьев apps-storage, -память водителя `.md`, токены, Settings; RO base-образ/BSP/device-identity сохраняются). +память водителя `.md`, **контакты/журнал (G, в apps-storage)**, токены, Settings, **dashcam-медиа +(J §4 — на отдельном носителе/разделе)**; RO base-образ/BSP/device-identity сохраняются). Зачем: продажа/передача авто (стереть ПДн — security-privacy §7), recovery после порчи конфигурации, UX-выход из неработоспособности. Из recovery-режима + подтверждение (защита от случайного). Отличать от `Settings.Reset(key)` (один ключ). При шифровании @@ -208,7 +211,7 @@ reference-таргет — first-party**, остальное — порты. | systemd-таргеты/оркестрация | **MVP** | — | v0 | | Board-support: один reference-BSP | **MVP** | hardware HAL | v0 | | Локаль базы (ru_RU.UTF-8, tzdata, кириллич. шрифты, keymap) | **MVP** | — | v0 | -| Stage-0 boot-инфра раннего пути задней камеры | later | architecture §6, J/B | v2 | +| Stage 0 boot-инфра раннего пути задней камеры | later | architecture §6, J/B | v2 | | OTA (RAUC A/B incl ядро/dtb, signed, bootcount+mark-good, rollback) | later | — | v4 | | Secure boot (verified boot, OTP-eFuse, key-mgmt) | later | hardware | v4 | | At-rest шифрование `/data` (fscrypt, eFuse-bound) | later | secure boot | v4 | diff --git a/docs/domains/b-power-lifecycle.md b/docs/domains/b-power-lifecycle.md index c1cd16a..b97c0be 100644 --- a/docs/domains/b-power-lifecycle.md +++ b/docs/domains/b-power-lifecycle.md @@ -137,7 +137,7 @@ power-эффектом; ни одно SoC-сообщение не должно ( ## 7. Sleep / wake и защита АКБ - **Низкопотребление** при заглушённом двигателе (быстрый/scheduled wake). -- **Источники пробуждения:** ACC-on, таймер, **реверс-передача** (Stage-0 камера, §4/J), опц. CAN-wakeup. +- **Источники пробуждения:** ACC-on, таймер, **реверс-передача** (Stage 0 камера, §4/J), опц. CAN-wakeup. - **`battery-cutoff` (отдельно от ACC-off):** при долгой стоянке порог напряжения (раньше/выше operating-brown-out hardware §3 — зарезервировать энергию на запуск) → sleep → forced off; гистерезис на wake-on-ACC. Бюджет разряда — §12 (с hardware). @@ -183,7 +183,7 @@ power-эффектом; ни одно SoC-сообщение не должно ( | MCU прошивка: update path | later | hardware | v1 | | Sleep/wake + battery-cutoff | later | — | v1/v2 | | Гейт wake-word по состояниям (с D) | **MVP** | D | v1 | -| Реверс-wake (Stage-0 камера) · scheduled/CAN-wake | later | hardware §4, J | v2/later | +| Реверс-wake (Stage 0 камера) · scheduled/CAN-wake | later | hardware §4, J | v2/later | ## 11. Зависимости @@ -199,7 +199,8 @@ power-эффектом; ни одно SoC-сообщение не должно ( shutdown-подмножество уже специфицировано в §4/§5, остальное здесь. - ◻️ **Бюджет разряда АКБ** (sleep, ACC-off listening, battery-cutoff порог) — числа с hardware. - ◻️ **Тепловые пороги** (critical-trip + recovery-hysteresis) — согласовать с a-base §10 + hardware §1a. -- ◻️ **Удержание дисплей/камера-рейла после ACC-off** — кто арбитрит grace-hold (B состояние, C/J запрос); с реверс-камерой Stage 0. +- ✅ **Удержание дисплей/камера-рейла после ACC-off (grace-hold):** **J — запросчик** (J §7), **B — + владелец/арбитр** (§4 шаг 2 grace-окно, §7) — ограничивает hold-up-бюджетом, не переопределяет PONR. С реверс-камерой Stage 0. --- diff --git a/docs/domains/f-plugin-host.md b/docs/domains/f-plugin-host.md index 83eddb9..6352a4d 100644 --- a/docs/domains/f-plugin-host.md +++ b/docs/domains/f-plugin-host.md @@ -38,7 +38,7 @@ App-Host из манифеста на activate ставит **cgroup-лимиты** (`MemoryMax`/`MemoryHigh`, `CPUQuota`, `pids.max`): дефолтный потолок + опц. больший в манифесте (виден в ревью — как дисковая квота plugin-sdk §4.4). -В OOM-иерархии (a-base §8) сторонний плагин — **низкий приоритет** (ниже Stage-1-ядра и офлайн-LLM): +В OOM-иерархии (a-base §8) сторонний плагин — **низкий приоритет** (ниже Stage 1-ядра и офлайн-LLM): убивается раньше killer-фичи → `AppCrashed` → деградация (#4). CPU-троттлинг — чтобы busy-loop не съел UI (#11). ## 3. Валидация манифеста (целостность — только с подписью) diff --git a/docs/domains/h-media-audio.md b/docs/domains/h-media-audio.md index 551b86f..477353f 100644 --- a/docs/domains/h-media-audio.md +++ b/docs/domains/h-media-audio.md @@ -153,7 +153,7 @@ capture-нода не «дакает» вывод; дакает медиа им - **Boot аудио-плоскости:** PipeWire+WirePlumber и статическая лестница ролей (§3) поднимаются на **Stage 1** (раньше Media-апа; сам Media — Stage 2, architecture §6), чтобы маршрутизация/политика были доступны до прогрева плеера. **До Stage 1 звука нет** (как голоса нет в boot-окне, D §8). Роль `alert` доступна с - поднятия WirePlumber (Stage 1); **ранний park-beep на Stage-0-реверсе** (до аудио-плоскости) — за её + поднятия WirePlumber (Stage 1); **ранний park-beep на Stage 0-реверсе** (до аудио-плоскости) — за её пределами, потребует отдельного раннего звукового пути (◻️ §15 → J/E/B; park-beep informational, #1). - **`ShutdownImminent`/ACC-off (ipc §3, B §4):** остановить воспроизведение, **mute amp до PONR** (порядок — B §4, §8), сохранить now-playing (источник/трек/позиция/очередь) в Settings. @@ -228,7 +228,7 @@ capture-нода не «дакает» вывод; дакает медиа им - 🟡 **enable/mute-секвенс усилителя (anti-pop):** owner GPIO — hardware §4 (mute-GPIO), owner порядка — B §4. → hardware + B. - ✅ **AEC** — узел audio-plane (`module-echo-cancel`/WebRTC APM), референс = output-monitor, не в ассистенте; loopback-tap — §4. → резолв §4 (синхронизировано в d-assistant §10). -- ◻️ **Ранний звук на Stage-0-реверсе** (park-beep до поднятия аудио-плоскости) — нужен ли отдельный путь. → J/E/B. +- ◻️ **Ранний звук на Stage 0-реверсе** (park-beep до поднятия аудио-плоскости) — нужен ли отдельный путь. → J/E/B. - ◻️ **Split политики:** сколько в статическом WirePlumber vs Rust-координаторе (+ crash-safety проактивного cork, тайминги гистерезиса/фейда дакинга). → реализация. - ◻️ **Явный focus-request API** (D-Bus) vs только неявные роли. → реализация/ipc §4. diff --git a/docs/domains/j-cameras-video.md b/docs/domains/j-cameras-video.md index 23e8f11..6399226 100644 --- a/docs/domains/j-cameras-video.md +++ b/docs/domains/j-cameras-video.md @@ -29,9 +29,9 @@ кадра** (Shell поднимает overlay-слот с live-видом, затем ранний клиент отпускает master). Boot-инфра — A §4. - **Риск (открытый):** ранний кадр до проверки подписи initramfs подрывает trust-chain, после — бьёт TTFF — развести minimal-trust (до) vs полный вид (после), с a-base §4. -- **Сигнал реверса:** **GPIO фонаря з.х. — рекомендуемый дефолт** (надёжнее/быстрее/Stage-0-совместим). Владелец — +- **Сигнал реверса:** **GPIO фонаря з.х. — рекомендуемый дефолт** (надёжнее/быстрее/Stage 0-совместим). Владелец — **`Power` (B §7)**, J **потребляет**; CAN-gear как альтернатива требует **нового gear-сигнала в data-model/E** - (его сейчас нет — ветка нереализуема без этого; gear может быть не на OBD-порту, E §7). 🟡 выбрать (§10). + (его сейчас нет — ветка нереализуема без этого; gear может быть не на OBD-порту, E §7). ✅ **выбрано: GPIO** (§13). - **Парктроник-оверлей:** дистанция из E (CAN) или K (не-CAN); на `stale`/`unavailable` (E §5b) — **скрыть/пометить** оверлей, не рисовать last-known. - **Fail-safe «нет сигнала»:** per-frame timestamp + **frame-watchdog** (нет кадра N мс / потеря sync → `no_signal`); @@ -59,7 +59,7 @@ ## 6. Виды в shell - Камера-виды (steady-state, после Stage 1) — **Wayland-поверхности** в слотах shell (C §4, slot-протокол). - Задняя/парктроник — приоритетный/оверлейный слот (может поверх раннего Stage-0-кадра). + Задняя/парктроник — приоритетный/оверлейный слот (может поверх раннего Stage 0-кадра). ## 7. Камера и lifecycle (шов с B/E/A) @@ -82,7 +82,7 @@ - **Кодирование dashcam — на аппаратном VPU RK3588** (rkmpp/V4L2-M2M), не CPU (H.264/H.265). 🟡 кодек/VPU. - **DMABUF zero-copy** capture→encode/composite (N источников × буферы — главный член RAM). -- Внести видео-пайплайн в **a-base §8** (давление памяти + OOM-порядок: задняя — защищена у Stage-1; dashcam/surround — throttleable). +- Внести видео-пайплайн в **a-base §8** (давление памяти + OOM-порядок: задняя — защищена у Stage 1; dashcam/surround — throttleable). - GPU-контеншн: surround уступает UI (#11); деградация при throttling (a-base §10) — видимая, не stall. ## 10. Функции @@ -102,18 +102,18 @@ ## 11. Dev-симулятор камер (#13) Fake V4L2/PipeWire-источник: тест-паттерн / реплей файла / **no-signal** (для fail-safe §3); эмуляция реверса -**обоих путей** (GPIO-стаб И CAN-gear через vcan — выбор не сделан); Stage-0-мок (замер TTFF); отказ capture-чипа/потеря источника. +**обоих путей** (GPIO-стаб — дефолтный путь; CAN-gear через vcan — для будущей ветки); Stage 0-мок (замер TTFF); отказ capture-чипа/потеря источника. Поверх существующих PipeWire/vcan/weston (dev-environment). Сценарий «реверс→камера» (e2e) — отсюда. ## 12. Зависимости -- **Вниз:** hardware (§4 capture/реверс/камеры; §1a тепло), A (§4 Stage-0 boot-инфра, §3 fscrypt/atomic, §8 память, §10/§12). +- **Вниз:** hardware (§4 capture/реверс/камеры; §1a тепло), A (§4 Stage 0 boot-инфра, §3 fscrypt/atomic, §8 память, §10/§12). - **Вбок:** B (§7 питание/реверс-wake, §4 ShutdownImminent/grace-hold, §12), E/K (парктроник, stale), K (IMU/GPS dashcam), C (слоты/slot-протокол). - **Вверх:** виды камер для UI (C); расширяемо плагинами (`camera_in`). ## 13. Открытые вопросы -- 🟡 **Сигнал реверса** GPIO (рек.) vs CAN gear — выбрать; CAN требует gear-сигнал в data-model/E. +- ✅ **Сигнал реверса** — **GPIO** фонаря з.х. (выбранный дефолт; §3, Журнал); CAN-gear отложен (требует gear-сигнал в data-model/E, которого нет). - 🟡 **DRM-master handoff** Stage 0→Stage 1 (без чёрного кадра) + trust до/после проверки initramfs — с A §4/B. - 🟡 **Кодек/VPU** dashcam (H.264/H.265, rkmpp) — выбрать. - ◻️ **Носитель dashcam** (раздел/карта; износ; retention) — с A/hardware. diff --git a/docs/glossary.md b/docs/glossary.md index b73b6b7..6a5c520 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -1,27 +1,108 @@ # Глоссарий -> Единый словарь Штурмана: один термин — одна строка. Пополняем по мере того как -> термины появляются в других документах, чтобы говорить на одном языке. +> Единый словарь Штурмана: один термин — одна строка. Канонические определения, +> чтобы все документы и контрибьюторы говорили на одном языке. Пополняем по мере +> появления новых терминов. -Статус: **заготовка** (TODO наполнить определения). +Статус: **v1 (наполнен).** Сгруппировано по областям; ссылки — на канонический документ-владелец. + +--- + +## Машина, CAN, диагностика | Термин | Определение | |--------|-------------| -| OBD-II | TODO | -| PID | TODO | -| DTC | TODO | -| CAN / SocketCAN / vcan | TODO | -| ELM327 | TODO | -| VSS (Vehicle Signal Specification) | TODO | -| ECU | TODO | -| AUTOSAR | TODO | -| AGL (Automotive Grade Linux) | TODO | -| D-Bus | TODO | -| Capability (манифест плагина) | TODO | -| Intent (ассистента) | TODO | -| Wake-word / VAD / STT / TTS | TODO | -| Driver memory (`.md` контекст водителя) | TODO | -| ACC (сигнал зажигания) | TODO | -| HAL / board support | TODO | +| **OBD-II** | Стандартный диагностический интерфейс авто (разъём + протоколы). Штурман читает PID/DTC — только read-запросы. | +| **PID** | Parameter ID — код запрашиваемого параметра OBD-II (скорость, обороты, температуры…). | +| **DTC** | Diagnostic Trouble Code — код неисправности (напр. `P0420`). Читается, НЕ сбрасывается (#2). | +| **CAN** | Controller Area Network — шина данных авто. **SocketCAN** — Linux-стек CAN; **vcan** — виртуальный CAN для dev-тестов. | +| **listen-only** | Пассивный приём CAN в silent-режиме: ноль TX, без ACK. Строжайшая форма read-only (hardware §4). | +| **Mode 01/03/07/09** | Стандартные read-режимы OBD-II (текущие данные / DTC / pending / vehicle-info). **Mode 04** (сброс DTC) и UDS-write — запрещены (#2). | +| **ELM327** | Популярный OBD-адаптер; полноценный CAN-узел → read-only держится software-дисциплиной (hardware §4). | +| **VSS** | Vehicle Signal Specification — таксономия сигналов машины (модель данных E / data-model). | +| **DBC** | Формат описания CAN-сообщений; per-vehicle маппинг сигналов (data-model §7, часть BSP). | +| **ECU** | Electronic Control Unit — блок управления узлом авто. Штурман с управляющими ECU не интегрируется (#1). | +| **AUTOSAR** | Отраслевой стандарт ПО для ECU. «Занятая клетка», в которую Штурман сознательно НЕ идёт (vision). | +| **AGL** | Automotive Grade Linux — тяжёлая OEM-ориентированная авто-ОС; Штурман легче и нишев под афтемаркет. | -> TODO: дополнить список и заполнить определения по ходу проработки документов. +## Платформа, IPC, UI + +| Термин | Определение | +|--------|-------------| +| **D-Bus** | Шина control-plane: команды/события/свойства. НЕ для медиа-потоков (те — PipeWire/Wayland). | +| **Control plane / data plane** | D-Bus (управление) vs PipeWire/Wayland/V4L2 (высокополосные аудио/видео/графика). | +| **PipeWire** | Медиа-сервер аудио/видео (data-plane). **WirePlumber** — его сессионный менеджер и политика (ducking). | +| **Wayland** | Протокол композитинга. Shell = кастомный композитор на **smithay** (Rust); `cage` не годится (single-app). | +| **Slint** | Rust-native декларативный GPU-ускоренный UI-тулкит (рендер тайлов/экранов). | +| **Слот-модель** | Слоты Shell (home-грид / полноэкран / оверлей / статус-бар); ап вкладывает декларативный элемент **или** Wayland-поверхность (architecture §8, C §4). | +| **Capability** | Заявленное в манифесте плагина право на ресурс (`vehicle_read`, `network`, `audio_out`…); гейтится на своём канале (security-privacy §3). | +| **Intent** | Голосовая команда ассистента; плагины регистрируют intent-фразы + `IntentHandler` (D §6, plugin-sdk §4). | +| **Perm-Broker** | Единый грантодатель/портал разрешений: политика + runtime-гранты (architecture §7). | +| **App-Host** | Запускает/супервизит/песочит апы и плагины; настраивает прокси+sandbox из манифеста. | +| **bubblewrap** | Песочница апов/плагинов: namespaces, seccomp, минимальный FS-вид. | +| **Прокси (dbus-proxy / портал)** | Фильтрующий per-app D-Bus-прокси (грубая изоляция по сервису/методу); тонкую авторизацию делает сам сервис по `sender`. | +| **Манифест** | YAML-декларация плагина: `id`, capabilities, точки расширения (plugin-sdk §2). | +| **first-party / 3rd-party** | Наши апы в подписанном base-образе (auto-grant) vs сторонние в `/data` (install-ревью + sandbox). | + +## Ассистент и аудио + +| Термин | Определение | +|--------|-------------| +| **Wake-word** | Слово-активатор («Штурман»); движок openWakeWord (Apache-2.0). | +| **VAD / STT / TTS** | Voice Activity Detection (Silero) / распознавание речи (Vosk·Silero, офлайн) / синтез речи (Silero, офлайн). | +| **AEC** | Эхоподавление (`module-echo-cancel` / WebRTC APM): убирает свой TTS/медиа-выход из микрофона (H §4). | +| **ducking** | Временное понижение/пауза менее приоритетного звука; политика ролей поверх PipeWire (H §3). | +| **`media.role`** | Тег use-case PipeWire-потока (`media`/`phone_call`/`assistant_tts`/`nav_guidance`/`alert`) — основа арбитража аудио. | +| **Vehicle-context injection** | Подмешивание live-снимка данных машины в системный промпт ассистента — killer-фича (D §4). | +| **Driver memory** | Локальные `.md` о водителе/привычках/машине; не уходят в облако без явного согласия (D §7). | +| **RU-LLM** | Российские облачные LLM (GigaChat / YandexGPT), данные в РФ (152-ФЗ). | +| **provider-agnostic** | Сменный бэкенд за единым интерфейсом с авто-fallback (принцип #8). | + +## Питание и загрузка + +| Термин | Определение | +|--------|-------------| +| **ACC** | Сигнал зажигания (accessory). **IgnitionState** (off/accessory/running) — каноническое lifecycle-состояние, владелец B. | +| **Stage 0 / 1 / 2** | Фазы быстрого boot: **Stage 0** = загрузчик→splash (+ранний путь задней камеры); **Stage 1** (~3–5 c) = ядро-минимум→Shell первый кадр; **Stage 2** = фоновый прогрев (Vehicle-Data/Assistant/Media/Nav/Connectivity). architecture §6. | +| **MCU-копилот** | Маленький always-on МК: детект ACC, hold-up-секвенсинг, watchdog, sleep/wake (рек., hardware §3). | +| **hold-up** | Буфер энергии (supercap) на graceful shutdown при резком пропадании 12 В. | +| **power-safe** | Гарантия от corruption при резком обесточивании: RO-rootfs + atomic-write + graceful shutdown (A+B вместе, #5). | +| **load-shedding** | Сброс тяжёлых потребителей (усилитель/модем/подсветка) при power-loss → hold-up кормит только SoC+хранилище. | +| **PONR** | Point-of-no-return — момент unmount, после которого shutdown необратим (abort недоступен). | +| **watchdog** | Аппаратный таймер ребута зависшей системы (SoC-WDT + независимый MCU-backstop). | + +## Хранилище, образ, OTA + +| Термин | Определение | +|--------|-------------| +| **RK3588** | Целевой SoC-класс (8–16 ГБ, mainline-Linux, Panfrost GPU) — это же класс реальных автоголов. | +| **read-only rootfs + overlay** | Неизменяемая корневая ФС + volatile-tmpfs overlay; запись только в `/data` (power-safe, #5). | +| **`/data`** | Журналируемый RW-раздел; единственный писатель — Settings/State (durable-write контракт, A §3). | +| **A/B-слоты** | Два загружаемых юнита (kernel+dtb+initramfs+rootfs) для атомарного OTA с откатом. | +| **RAUC** | Инструмент атомарных подписанных A/B-обновлений (механизм/подпись — A, канал доставки — L). | +| **OTA** | Over-the-air обновления: signed bundle, bootcount + mark-good, rollback (v4). | +| **fscrypt** | At-rest шифрование чувствительных поддеревьев `/data` (память, токены, контакты, dashcam), eFuse-bound (v4). | +| **zram / OOM** | Сжатый swap в RAM (swap-на-flash запрещён) / out-of-memory-политика (защита Stage 1 critical set, A §8). | +| **secure boot** | Verified boot; якорь доверия — хэш ключа в OTP/eFuse, необратим (v4). | +| **BSP / HAL** | Board-support package / hardware abstraction layer — порт на другое железо/авто (DT + HAL-конфиг + DBC). | + +## Связь и телефон + +| Термин | Определение | +|--------|-------------| +| **BlueZ** | Linux BT-стек; адаптер/паринг — владелец Connectivity-core (G §3). GPL-демон через D-Bus (#12). | +| **ModemManager / NetworkManager** | Демоны модема (LTE/SIM) / сети (WiFi); обёртка — Connectivity-core. GPL-демоны через D-Bus. | +| **HFP** | Hands-Free Profile — BT-звонки (Phone-ап, роль `phone_call` в арбитре H). | +| **A2DP / AVRCP** | BT-аудио-стриминг (sink) / метаданные+транспорт — медиа (Media-ап, H §6). | +| **PBAP / MAP** | BT-доступ к контактам+журналу / сообщениям; local-first, 152-ФЗ (G §5). | +| **tethering** | Интернет от телефона (BT-PAN / WiFi-hotspot). **captive portal** — публичный WiFi с авторизацией (не «ложный online», G §2). | + +## Безопасность и приватность + +| Термин | Определение | +|--------|-------------| +| **152-ФЗ** | Российский закон о персональных данных: local-first, данные в РФ, явное отзываемое согласие. | +| **audit-log** | Нормативный локальный журнал доступа к чувствительному + cloud-egress (владелец A §9, просмотр — UI C). | +| **DMABUF / V4L2** | Zero-copy буфер GPU/видео (capture→encode/composite) / Linux video capture API. | +| **dashcam / surround** | Видеорегистратор (ring-buffer, fscrypt, отдельный носитель) / круговой обзор (композит N камер) — домен J. | +| **parktronic** | Парктроник: дистанция (CAN или не-CAN датчик) для оверлея/предупреждения поверх видео-вида. |