docs(C-shell + кросс-док): ретро-ревью (6 находок) + синхронизация

C-shell v2:
- GPS-скорость для distraction — домен K (ru.shturman.Location), не E (E это OBD, v2);
  E — уточнение OBD-скорости в v2 + быстрый статус машины
- механизм поверхности: Wayland slot-протокол ru.shturman.shell_slot + slot-token,
  не «handle по D-Bus»
- fail-safe distraction при потере/устаревании скорости (консервативный дефолт,
  гистерезис, арбитраж GPS/OBD)
- контракт статус-бара: network «unknown» до Connectivity; часы — до синка времени

Кросс-док:
- architecture §1 (ELM327-оговорка к «физическому» read-only), §5 (положение/GPS из
  Location/K, не Vehicle-Data), §7 (Perm-Broker = грантодатель, статика — прокси+sandbox),
  §8 (surface через Wayland slot-протокол)
- ipc Shell.RegisterScreen → slot_token
- dev-environment: cage → smithay/weston в журнале и списке пакетов

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-21 01:06:05 +03:00
parent 64ef300ef4
commit d112f5397d
4 changed files with 43 additions and 15 deletions
+9 -4
View File
@@ -20,7 +20,9 @@ capabilities). Это делает открытый API не лозунгом,
Ключевое следствие для безопасности: к «опасным» ресурсам (CAN, питание)
прикасается ровно один привилегированный сервис каждый. **Read-only CAN — не
правило, а физический факт:** к шине машины прикасается только Vehicle-Data, и в
нём нет write-кода.
нём нет write-кода. *(Точнее: «физический» инвариант — для нативного CAN в silent-режиме;
на старте через ELM327 read-only держится software-дисциплиной, т.к. ELM327 — полноценный
CAN-узел. См. [contracts/hardware.md](contracts/hardware.md) §4.)*
---
@@ -111,7 +113,8 @@ dashcam-фронтальная, surround), расширяемый плагина
| Assistant | Vehicle-Data | D-Bus | live-контекст машины в промпт |
| Assistant | Connectivity → сеть | D-Bus/сеть | онлайн RU-LLM (GigaChat/YandexGPT) |
| Assistant, Media, Phone | PipeWire | audio | микрофон, TTS, музыка, BT-аудио |
| Nav, Shell | Vehicle-Data | D-Bus | скорость/положение для карты и виджетов |
| Nav, Shell | Location (домен K) | D-Bus | GPS-положение/скорость (карта, distraction v1) |
| Shell | Vehicle-Data | D-Bus | OBD-скорость (v2) + быстрый статус машины |
| Nav, Media, камеры-виды | Wayland | graphics | богатые поверхности в слот shell |
| Shell | все апы | D-Bus + Wayland | хостинг UI: декларативные вклады + поверхности |
| все апы | Settings/State | D-Bus | чтение/запись настроек |
@@ -169,7 +172,7 @@ graph TD
плагин не запишет в CAN — write-пути нет).
- **Механизм:** апы/плагины — в **bubblewrap**-песочнице (namespaces, seccomp, минимальный FS); ядро — **systemd-hardening**. WASM — опциональный тир для лёгких логических плагинов позже.
- **Модель разрешений:** манифест декларирует capabilities (`vehicle_read:[…]`, `assistant_intents`, `ui_tiles`, `network`, `storage`…). **Perm-Broker — единственная дверь** к привилегиям (модель «порталов» как у Flatpak): плагин не трогает ресурсы напрямую, а просит брокера.
- **Модель разрешений:** манифест декларирует capabilities (`vehicle_read:[…]`, `assistant_intents`, `ui_tiles`, `network`, `storage`…). **Perm-Broker — единый грантодатель/портал** (политика и рантайм-согласия), но **статическую** фильтрацию делает per-app D-Bus-прокси + bubblewrap (настраивает App-Host из манифеста) — не «брокер в каждом вызове». Детали — [contracts/security-privacy.md](contracts/security-privacy.md) §5.
- **Грант:** first-party — авто; сторонние — показываем запрашиваемые capabilities при установке, пользователь подтверждает.
Детали модели разрешений и приватности — [contracts/security-privacy.md](contracts/security-privacy.md).
@@ -186,7 +189,9 @@ Shell — Wayland-хост; апы/плагины — отдельные пес
**сам shell** своими Slint-компонентами → единый стиль, безопасность (чужой код
в процесс shell не пускаем).
- **Wayland-поверхности** для богатых апов: нав-карта, медиа, камеры, GPU-тяжёлое.
Ап рисует у себя и отдаёт shell готовую поверхность.
Ап рисует у себя и подключается клиентом к **Wayland-сокету Shell**; привязка surface→слот —
через приватный **slot-протокол** (`ru.shturman.shell_slot`) + slot-token от
`Shell.RegisterScreen` (не «handle по D-Bus»). Детали — [domains/c-shell-ux.md](domains/c-shell-ux.md) §4.
**Модель слотов:** shell задаёт слоты (грид home, полноэкранная зона, оверлей,
статус-бар); ап вкладывает либо декларативный элемент, либо поверхность. Так