docs(domain L): v2 — облако/компаньон (Companion+OTA-канал+телеметрия), после adversarial-ревью (21 находка) + кросс-док

Новый домен L: device-Companion-сервис + моб.приложение + опц.self-hostable облако.
Облако опционально, local-first, никогда не управляет машиной. Многоагентный
adversarial-ревью: 30 находок, 21 подтверждена (default-refute), все применены.

Ключевое из ревью:
- OTA untrusted-host неполон без anti-rollback → добавлена монотонность security-version (downgrade/replay-защита); подпись ≠ свежесть. Зеркально в a-base §5.
- fscrypt-ключ eFuse-bound непереносим → честно: cross-device restore требует отдельного backup-ключа (открыто); убрана ложная «ключ у пользователя».
- DOWNLOAD(L) ≠ APPLY(A): разведены фазы; download-fail-safe (ENOSPC/resume/отбраковка битого до RAUC) симметрично J/H.
- Time-gate (a-base §7): холодный boot 1970 → TLS «not yet valid» — OTA/sync/телеметрия ждут вменяемых часов.
- Captive-portal (G): egress только при State==online, не на portal/limited.
- Телеметрия: consent/буфер стираются на factory-reset (инвариант «после reset все opt-in выкл»); не ретроспективна; отзыв → дроп буфера; облако: retention+удаление (152-ФЗ).
- Поездки — из trip-плагина (app-storage), не из core E.
- dashcam-бэкап: отдельный носитель + consent-гейт J §4.
- Staged-rollout halt-петля + парадокс с opt-in телеметрией; push-доставка; модель аккаунта (recovery/multi-vehicle/multi-user); version-skew моб↔головблок — зафиксированы.

Кросс-док: a-base §5 (anti-rollback + Журнал), §12 (telemetry-consent в wipe);
architecture §3 (Companion first-party) + §5 (ребро Companion→Connectivity).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 13:55:40 +03:00
parent 3fd9b42bb0
commit 1eaa0b8896
3 changed files with 243 additions and 2 deletions
+6 -2
View File
@@ -86,6 +86,10 @@
- **(рек.) RAUC**: атомарные **A/B**-обновления (юнит = kernel+dtb+initramfs+rootfs),
**подписанные** bundle, **откат** при сбое.
- **Anti-rollback (downgrade-защита, v4):** подпись гарантирует аутентичность, **не свежесть** → A хранит
**монотонный security-version-счётчик** (eFuse-fuse / U-Boot env, модель AVB rollback-index) и отвергает
валидно-подписанный, но **downgrade/replay**-бандл. Иначе скомпрометированный OTA-хост (домен L) откатил бы
парк на подписанную дырявую прошивку. A/B-откат (ниже) — failure-recovery, **не** downgrade-защита (разные вещи).
- **Handshake отката (обязателен, иначе откат не работает):**
- В **U-Boot env на eMMC** (не в overlay/`/data`): активный слот, «try»-слот,
счётчик попыток + `bootlimit`.
@@ -177,7 +181,7 @@
## 12. Factory reset (сброс к заводским)
Атомарная очистка/реинициализация **только `/data`** (wipe поддеревьев apps-storage,
память водителя `.md`, **контакты/журнал (G, в apps-storage)**, токены, Settings, **dashcam-медиа
память водителя `.md`, **контакты/журнал (G, в apps-storage)**, токены, Settings, **telemetry-consent + буфер телеметрии + все opt-in-согласия (L §8)**, **dashcam-медиа
(J §4 — на отдельном носителе/разделе)**; RO base-образ/BSP/device-identity сохраняются).
Зачем: продажа/передача авто (стереть ПДн — security-privacy §7), recovery после порчи
конфигурации, UX-выход из неработоспособности. Из recovery-режима + подтверждение
@@ -247,7 +251,7 @@ reference-таргет — first-party**, остальное — порты.
| Overlay | upper/work на volatile tmpfs; персист только через `/data` | 2026-06-16 |
| ФС `/data` | f2fs (рек.) / ext4; power-safe mount-опции + atomic write (fsync/rename) (🟡) | 2026-06-16 |
| Boot-фазы | splash в Stage 0, ядро в Stage 1 (по architecture §6) | 2026-06-16 |
| OTA | RAUC A/B + bootcount/bootlimit + mark-good (Shell-кадр); A=механизм/подпись, L=канал (🟡) | 2026-06-16 |
| OTA | RAUC A/B + bootcount/bootlimit + mark-good (Shell-кадр); A=механизм/подпись/**anti-rollback**, L=канал; downgrade-защита ≠ failure-откат (🟡) | 2026-06-16 |
| Secure boot | OTP-eFuse, необратим; dev-ключи ≠ prod, на dev не жжём; v4 | 2026-06-16 |
| Доверие | secure boot (анкор) + подписанный OTA; в dev — trust-by-build, полное — v4 | 2026-06-16 |
| Watchdog | SoC WDT + MCU; вооружён в boot-окне; единственный userspace-владелец | 2026-06-16 |