- AEC (эхоподавление, loopback-ref из PipeWire) добавлен в пайплайн — нужен для
wake-word во время воспроизведения и barge-in (был полностью пропущен)
- auto-fallback: v1 = online degradation UX, офлайн-фолбэк (llama.cpp) = v3 (раньше
фолбэкать в v1 было некуда); offline-first (#3) в v1 частично, полный — v3
- инференс: ONNX (Silero) + Vosk через нативный Kaldi (не «всё через ONNX»)
- vehicle-context: контракт инъектора — только quality=valid, гейт по состоянию машины,
ассистент декларирует vehicle_read через прокси; деградация на простых авто
- wake-word по состояниям питания (не безусловно always-on, риск разряда; Stage 2; гейт Power/B)
- distraction: owner Shell §7, скорость K(GPS v1)/E(OBD v2); журнал wake-word/mic
- кросс-док: tech-stack (Porcupine отвергнут), principles #3 (фазировка офлайн-диалога)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
- аудио per-node гейтинг (PipeWire Security Context + WirePlumber), не голый сокет:
audio_out ≠ audio_in; capture только по runtime-гранту
- сеть: строгая гарантия только бинарно on/off; host-allowlist best-effort
(DNS-allowlist обходится прямым IP — нужен forced-proxy по SNI/Host)
- якорь first-party не существует до v4: v0-v3 = trust-by-build/физконтроль
- целостность id при установке (отказ при коллизии; ru.shturman.plugin.* зарезервирован)
- жизненный цикл гранта: while-in-use, авто-снятие на stop/crash; enforce-split
(статически прокси+sandbox/App-Host, рантайм-гранты Perm-Broker)
- НОВОЕ: §1a Модель угроз (адверсарии↔слои + out-of-scope)
- 152-ФЗ: явное отзываемое согласие (не только уведомление), минимизация VIN/локации,
роли оператора/обработчика в BYO, локализация ≠ правовое основание
- audit-log промотирован в нормативный (владелец A §9 + UI домена C)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- enforcement: прокси даёт грубую изоляцию (сервис/метод), тонкую (per-signal,
per-key) делает сам сервис по идентичности sender — прокси не видит payload
- PermBroker: идентичность только из соединения, CheckCapability(cap) sender-scoped
(не принимает app аргументом → нет спуфинга); GrantChanged адресный
- НОВЫЙ сервис ru.shturman.Location (домен K) — GPS/положение; GPS-скорость не через E
- ошибки Stale/Timeout (транзиентно) vs NotAvailable (постоянно); GetSignal с таймаутом
- desired_max_hz = агрегатный hint (не per-subscriber троттл); подписки owner-bound,
авто-снятие по NameOwnerChanged; quality-поле; BatteryVoltage→ModuleVoltage
- RegisterIntents(handler_path) — фразы из манифеста; версии-мажоры сосуществуют
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- спека домена C: композитор, слот-модель, декларативный UI-DSL (резолв вопроса),
тема, driver-distraction, интеграция ассистента, ввод
- КОРРЕКЦИЯ: shell = кастомный multi-client композитор на smithay (Rust); cage
(single-app kiosk) не годится для мульти-поверхностной слот-модели → правка
в tech-stack и dev-environment
- ревью-де-риск v0: shell стартует как Slint-ап без внешних поверхностей, полный
smithay-композитор — с первым surface-апом
- ревью-фазинг: статус машины в статус-баре → v2; distraction по GPS-скорости в v1
(раньше OBD); день/ночь v0 по времени/GPS; настройки растут с фичами
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- спека домена D: пайплайн (wake→VAD→STT→router→[локальные/LLM]→TTS, ONNX Runtime),
функции (MVP/later), vehicle-context injection (killer), provider-agnostic LLM,
интенты, память о водителе (.md), приватность
- ревью: openWakeWord вместо проприетарного Porcupine (принцип #12); мягкая
деградация при нестабильной сети до офлайн-фолбэка; креды LLM — свои у пользователя;
+ контекст-размер, офлайн-STT в шуме, function-calling, обучение wake-word
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>