---
okf: "0.1"
type: incident
visibility: private
status: active
updated: 2026-08-03
links:
  - ../phases/backlog.md
---

## Cutover HA "ken": kontener piha to legacy, prawdziwy dom to RPi4/HAOS (2026-07-22)

**Data**: 2026-07-22
**Źródło**: recon — dwie instancje HA równolegle sterowały domem (kontener
`homeassistant5` na piha + RPi4 HAOS 192.168.31.7), patrz
`kb/decisions/ha-configs-as-code.md` sekcja "Incident log". `instances.yaml`
naprawiony w tej samej sesji: `ken` = 192.168.31.7 (api), `ken-legacy` =
dawny kontener piha (docker-exec, archived).

**Do zrobienia**:
1. **ha-diag-agent na piha**: przepiąć z `http://localhost:8123` (celuje w
   legacy!) na `http://192.168.31.7:8123` — wymaga nowego tokenu
   `diag_agent` wystawionego na instancji 31.7 (obecny token jest dla
   kontenera piha i nie zadziała na nowym targecie).
2. **Wygaszenie `homeassistant5`**: import archiwalny do
   `services/home-assistant/config/ken-legacy/` → `docker stop` (BEZ `rm`)
   → 7 dni obserwacji (upewnić się, że nic w domu nie polega na tym
   kontenerze) → decyzja o `docker rm`.
3. ✅ ZROBIONE (2026-07-22) — **Adapter `api` w `import.sh` dla `ken`**:
   automatyzacje/skrypty/sceny przez `/api/config/<domain>/config/<id>`
   (REST), dashboardy/area+entity registry/`input_*` helpery przez websocket
   API (`scripts/ha/lib/ha_api.py`, `ha_ws.py`, `import_api.py`). Pierwszy
   realny import `ken` zaimportował 118 automatyzacji, 5 skryptów, 3 sceny,
   7 dashboardów (default + 6 named; jeden zarejestrowany dashboard nigdy
   nie skonfigurowany — `config_not_found`, odnotowany w raporcie, nie
   twardy błąd). Pełny import `/config` pozostaje poza zasięgiem (HAOS bez
   SSH) — patrz DESIGN.md.
4. ✅ ZROBIONE (2026-07-22) — **`scripts/ha/deploy.sh`, adapter `api`, zakres
   automations/scripts/scenes**: drift-check (świeży re-import vs. `HEAD`,
   dowolna różnica poza plikami z tego deployu = abort z diffem) →
   walidacja (lokalny sanity check + `check_config` na instancji) → zapis
   per obiekt (`POST /api/config/<domain>/config/<id>`) → verify (GET +
   porównanie, bez auto-rollbacku). `--dry-run` zweryfikowany na żywym
   `ken` (read-only, bez różnic). Testy offline:
   `scripts/ha/tests/test_deploy_api_offline.sh`. Poza zakresem: dashboardy/
   helpery (WS, brak mutującej komendy), adapter `docker-exec`, DELETE
   obiektów usuniętych z repo (tylko ostrzeżenie).

---

