Open Design embed: sidecar lifecycle и crash-recovery

## Что это Rox Design запускается как sidecar-процесс (Pi-agent-server). При его сбое сейчас embed становится «мёртвым окном» — нет визуального индикатора, нет recovery-пути. Цель: при detected crash показывать banner «Rox Design crashed — recover» с 1-click восстановлением. Lifecycle states: `starting | ready | degraded | crashed | recovering`. Health-check через WebSocket ping каждые 5s; 3 промаха подряд → `crashed`. Recovery — relaunch sidecar process, restore last session ID, ре-инжект skin. Если 2 recovery подряд fail → fallback на read-only viewer (last snapshot из IndexedDB). Компоненты: `apps/electron/src/embed/RoxDesignSidecarManager`, `apps/electron/src/embed/RecoveryBanner`. Логирование через structured spans с trace-id, чтобы post-mortem был воспроизводим. ## Зачем Goal PZD-81: «Sidecar crash recover ≤ 1 click». Без явного visible-state пользователи будут closing/reopening ROX.ONE целиком, что разрывает unsaved-state и убивает доверие к embed как production-surface. ## Источники вдохновения - [agisota/looper](https://github.com/agisota/looper) — autonomous loop plan→review→fix→ship с checkpoint missions - [iii-hq/iii](https://github.com/iii-hq/iii) — real-time service composition с lifecycle observability - [pixlcore/xyops](https://github.com/pixlcore/xyops) — workflow automation + server monitoring с recovery patterns ## 🔗 Linear - [PZD-446](https://linear.app/kuhjie/issue/PZD-446) — backing ticket

Please authenticate to join the conversation.

Upvoters
Status

In Review

Board
🌊

Frictionless UX

Date

About 19 hours ago

Author

agi

Subscribe to post

Get notified by email when there are changes.