kk0t9
b9500356b0
docs(v0.3): синхронизация швов power-safe + статус
...
Двунаправленные швы (спека v0.3 §10) после реализации Плана 7:
- domain B: banner «Реализация (v0.3)» (B01–B07, VM-модель abort/PONR=stop+umount+remount);
§12 — MCU/supercap (B08/B09) → v0.4.
- ipc.md §3: Power оживлён из FSM (не mock); Sleep/Wake/RequestSleep зарезервированы.
- foundation §5.2: «Power-стаб» → реальный PowerFsm (проекции state/ignition/source из FSM);
dev-mock кормит входы FSM.
- CLAUDE.md: статус v0.3 ГОТОВО; «Следующее» → v0.5 shell / v0.4 MCU-thermal.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Signed-off-by: Alexander <akotenev2003@gmail.com >
2026-06-25 00:21:10 +03:00
kk0t9
fb4e585152
docs(domain G): v2 — связь/телефон (Connectivity+Phone), после adversarial-ревью (15 находок) + кросс-док
...
Новый домен G: Connectivity-core (WiFi/LTE/tethering + BT-адаптер/паринг) +
Phone-ап (HFP-звонки/контакты). Многоагентный adversarial-ревью: 24 находки,
15 подтверждено (default-refute; tech-измерение — 0, техника устояла), все применены.
Ключевое из ревью:
- BT-шов резолвнут двунаправленно: владелец BlueZ — Connectivity-core (G §3 ↔ H §6/§15 ✅ ).
- Граница голоса: только HFP спаренного телефона; встроенный модем — data-only (VoLTE/eCall вне скоупа).
- SIM PIN/PUK-флоу (sim_locked/no_sim) + captive-portal детект (portal/limited, не ложный online) — модем v1.
- Connectivity поднимается на Stage 2 (синхр. с architecture §6).
- Мультипаринг: ровно один active-телефон для HFP/PBAP (Dial/CallStateChanged однозначны).
- SCO-loss mid-call → CallState=audio_lost + снятие роли phone_call → H раскорчивает медиа (не залипает).
- Входящий-оверлей не перекрывает реверс-вид (z-order overlay-слота → C); tethering-петля AP+tether запрещена.
- PBAP-синк фоновый; отказ-пути паринга/no_service симметрично J/H.
Кросс-док: H §6/§15 (BlueZ ✅ ) + якоря D §147/§148→§10; architecture §3 (Connectivity+BT)
/§6 (Stage 2); ipc §3 (Type+tether, State enum, CallState=audio_lost); security-privacy §7
(контакты/журнал/SMS local-first); hardware §4 (Bluetooth); tech-stack (NM/MM/BlueZ);
C §11 (z-order overlay).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-22 19:08:52 +03:00
kk0t9
b9747ee66d
docs(domains F+J): v2 после adversarial-ревью (37 находок) + кросс-док
...
F (plugin-host, 17):
- exec-путь плагина (/data/apps/<id>/, код exec-поддерево / данные noexec); IPC-передача
Install→App-Host (LoadApp/UnloadApp); teardown с явным StopApp+отзыв грантов; атомарный
install/update (staging+rename, a-base §3); ре-валидация манифеста на каждом activate +
capability-pin; sideload-гигиена распаковки; бюджет ресурсов (cgroup+OOM); аудит операций;
namespace manifest-id ru.shturman.* vs OWN-экспорт ru.shturman.plugin.<id>.*; WASM↔identity-конфликт;
PluginManager в ipc; dev-tools/тест-харнесс (#13 ); фазы (SDK/dev v0, экосистема v3)
J (cameras, 20):
- Stage 0 ранний путь = DRM/KMS из initramfs (не Wayland) + DRM-master handoff smithay без
чёрного кадра; реверс-сигнал owner=Power/GPIO (CAN-gear требует сигнал в E); camera_in
capability + per-node видео-гейтинг (/dev/videoN only first-party); fail-safe frame-watchdog
→ no_signal (не stale DMABUF); dashcam privacy (152-ФЗ, fscrypt, retention, factory-reset,
индикатор); lifecycle (не пишет в sleep, ShutdownImminent-флаш сегментами, grace-hold via B);
surround/video ресурсы (VPU/DMABUF/a-base §8); dev-симулятор камер (#13 ); Camera в ipc
Кросс-док: ipc (AppHost.LoadApp/UnloadApp, PluginManager, Camera), security-privacy
(namespace-фикс ru.shturman.*, camera_in, audit-scope), a-base §3 (dashcam в at-rest fscrypt)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 15:57:54 +03:00
kk0t9
5ba19cde46
docs(domain K): v2 после adversarial-ревью (18 находок) + кросс-док
...
- GPS-скорость: zero-clamp <~2-3 км/ч (на стоянке Doppler-шум, не ноль) — distraction v1
получал бы ложный on; FixQuality многоуровневый (no_fix/2d/3d/augmented/dead_reckoning
+ HDOP/sats); dead_reckoning не валиден для distraction/Nav; валидность времени ≠ позиции
- приватность локации: эфемерна (без трека в v1), audit-log, исключена из LLM-промпта,
while-in-use грант, on-device
- антенна (внешняя/активная), TTFF cold/warm-start, окно без GPS на старте поездки;
питание GPS в sleep/battery-cutoff (обесточивание+cold-start по умолчанию)
- резистивная ADC-лесенка руля: контракт window-table + кондиционирование + collision-drop
+ темп-дрейф; транспорт ввода = uinput/evdev (не Shell-D-Bus, иначе surface-апы не покрыты);
гейтинг руль-действий в distraction
- IMU опционален/не гарантирован → dashcam (J) = непрерывный ring-buffer, не на g-sensor
- точность времени SHM (~десятки-сотни мс), PPS опц./hardware-gated; Nav «фаза 2»→v4
- кросс-док: a-base §7/§14 (SHM, split time-row + K-dep), hardware §4 (антенна/1PPS),
domains/README (K-cell без TPMS/климата), ipc Location (enum), c-shell §7/§9/§11
(clamped speed, uinput-ввод, закрыт Location-вопрос)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 15:30:08 +03:00
kk0t9
7a30ed7a7d
docs(domain B): v2 после adversarial-ревью (22 находки) + кросс-док
...
Существенная переработка power-lifecycle:
- детект running по НАПРЯЖЕНИЮ бортсети (~14В генератор vs ~12.4В покой), не RPM (v2);
Power.IgnitionState — единственный канон lifecycle-состояния
- триггер shutdown ≠ rate-of-change: ACC-off / under-voltage-held / thermal-trip;
cold-crank до ~6В — НОРМА (ride-through), не индикатор обрыва
- SoC↔MCU shutdown-протокол специфицирован СЕЙЧАС: hold-up-таймер + heartbeat +
safe-to-cut + fail-safe при потере линка (обе стороны); MCU — fail-safe-авторитет
- abort при re-power до PONR (ShutdownAborted); shutting-down разбит abortable/committed
- НОВОЕ: thermal shutdown (триггер/гистерезис/UX); ordered teardown (E закрывает ISO-TP);
таблица MCU-vs-supercap; battery deep-discharge cutoff; монотонные часы для таймеров;
первый boot без времени; периодическое сохранение времени
- watchdog по фазам (runtime + shutdown RebootWatchdogSec/MCU-дедлайн + boot-окно);
v0=SoC+MCU+reboot, bootcount=v4
- фазы: MCU HW fail-safe-таймер = v0 (не v1); save-time = v0
- кросс-док: security-privacy (mic power-gated), ipc Power (enum/reason/ShutdownAborted),
e/data-model (engine_running не дублирует IgnitionState), a-base §7 (периодич. save)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-21 01:53:57 +03:00
kk0t9
d112f5397d
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 >
2026-06-21 01:06:05 +03:00
kk0t9
2a9f9925cc
docs(ipc): v2 — ретро-ревью (10 находок)
...
- 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 >
2026-06-21 00:49:41 +03:00
kk0t9
fb27d8d2fe
docs: завершить Tier 1 (контракты) + ревью-фикс red-line CAN
...
- security-privacy: изоляция, capabilities, гейтинг по каналам, приватность/152-ФЗ;
first-party = вшит в подписанный образ; рисковые комбинации (vehicle_read+network)
- plugin-sdk: манифест, точки расширения, коллизия интентов, host-allowlist
- hardware: RK3588, power-safe, периферия, HAL/BSP портирование
- ВАЖНО: уточнён red-line CAN (принцип #2 + hardware §4): «чтение» = без
управляющих/actuator/write-передач; диагностические OBD read-запросы допустимы
(иначе не прочитать DTC); listen-only — только пассивный сниффинг
- + автозащита питания, тепло, износ eMMC; кросс-доковые аннотации
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 20:28:52 +03:00
kk0t9
3d13bb5827
docs: tech-stack + контракты ipc/data-model (+ ревью-фиксы)
...
- tech-stack: Rust-first (один прод-рантайм; Python — dev-only), полный стек, крейты
- architecture: ассистент Python→Rust для консистентности; boot-порядок
(Broker+App-Host до Shell); потолок частоты сигналов ~10–20 Гц
- contracts/ipc: реестр D-Bus (сервисы ядра/апов, соглашения, портал-брокеринг)
+ открытые вопросы из self-review
- contracts/data-model: VSS-aligned каталог сигналов, OBD-PID маппинг, DTC-модель;
добавлен MIL-статус (PID 0x01) для killer-фичи, состояние машины, расход-estimate
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-20 20:01:36 +03:00