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>
This commit is contained in:
+16
-3
@@ -73,9 +73,16 @@
|
||||
- Статическая фильтрация — прокси + sandbox (§5, владеет App-Host); broker — политика и рантайм-согласия.
|
||||
|
||||
### `ru.shturman.AppHost` — запуск/супервизия апов и плагинов
|
||||
- **Методы:** `ListApps() → [(id, status)]`, `StartApp(id)`, `StopApp(id)`, `GetStatus(id) → status`.
|
||||
- **Сигналы:** `AppStarted(id)`, `AppStopped(id)`, `AppCrashed(id, reason)`.
|
||||
- (Установка/дистрибуция плагинов — домен F, не здесь.)
|
||||
- **Методы:** `ListApps() → [(id, status)]`, **`LoadApp(id)`** (читает манифест `/data/apps/<id>/`,
|
||||
конфигурит sandbox+прокси+`sender→манифест`; затем доступен `StartApp`), `StartApp(id)`, `StopApp(id)`,
|
||||
**`UnloadApp(id)`** (снести sandbox/прокси/identity-binding), `GetStatus(id) → status`.
|
||||
- **Сигналы:** `AppStarted(id)`, `AppStopped(id)`, `AppCrashed(id, reason)`, `AppLoaded(id)`.
|
||||
- Установка/жизненный цикл плагинов — `ru.shturman.PluginManager` (ниже, домен F): зовёт `LoadApp`/`UnloadApp` после install/remove/update.
|
||||
|
||||
### `ru.shturman.PluginManager` — установка/жизненный цикл плагинов (домен F)
|
||||
- **Методы:** `InstallPlugin(pkg)`, `RemovePlugin(id)`, `UpdatePlugin(id)`, `ListPlugins() → [(id, version, status)]`.
|
||||
- **Сигналы:** `PluginInstalled(id)`, `PluginRemoved(id)`, `PluginUpdated(id)` (+ эмит нормативных audit-записей, A §9).
|
||||
- **Привилегированная операция** — недоступна самим плагинам через прокси. Контракт детально — домен F.
|
||||
|
||||
### `ru.shturman.Connectivity` — сеть (обёртка NM/MM)
|
||||
- **Методы:** `GetStatus() → status`, `ListNetworks() → [...]`, `Connect(id)`, `Disconnect()`.
|
||||
@@ -104,6 +111,12 @@
|
||||
### `ru.shturman.Media` / `…Nav` / `…Phone`
|
||||
- Свои интерфейсы (play/pause/route; navigateTo/cancel; dial/answer/hangup). **Детали — в спеках доменов** H/I/G; здесь — только факт регистрации на шине.
|
||||
|
||||
### `ru.shturman.Camera` — камеры/виды (владелец — домен J)
|
||||
- **Методы:** `ListSources()`, `SelectView(id)`.
|
||||
- **Сигналы:** `ReverseEngaged(on)` (источник — `Power`/GPIO, см. J §3).
|
||||
- **Properties:** `SignalState` per-source (`live`/`no_signal`/`acquiring`).
|
||||
- Видео — НЕ здесь (PipeWire/V4L2, data-plane); гейтится `camera_in` (security-privacy). До домена J — мок-стаб. Детали — [domains/j-cameras-video.md](../domains/j-cameras-video.md).
|
||||
|
||||
---
|
||||
|
||||
## 5. Брокеринг доступа песочных апов (портал-паттерн)
|
||||
|
||||
Reference in New Issue
Block a user