homelab-codex-ws/kb/incidents/2026-07-22-ha-ken-cutover-legacy.md
oskar 4658089e21 fix(kb): przepiecie wszystkich odwolan wewnetrznych po migracji
126 plikow (md, yaml, sh, py) odwolywalo sie do sciezek sprzed migracji.

  15  markdown-linkow [..](..) -> policzona sciezka WZGLEDNA wobec pliku
      odsylajacego (wczesniej czesc z nich byla repo-root-relative i nie
      rozwiazywala sie z katalogu, w ktorym lezala)
 200  odwolan tekstowych (backticki, proza, yaml, importy w kodzie)
      -> nowa sciezka repo-root-relative, zgodnie z konwencja repo
   5  linkow rodzenstwa (gole nazwy plikow, np. "](DEPLOY.md)") — dzialaly
      tylko w starym katalogu; przeliczone recznie

Objete m.in.: CLAUDE.md (scripts/onboard/README.md -> kb/runbooks/
node-onboarding-tool.md, docs/backlog.md -> kb/phases/backlog.md),
README.md, .claude/skills/, 20 session logow, kod jobow.

Ostatnie 5 odwolan pochodzi z tresci wciagnietej rebasem z origin/master
(session log 2026-07-31, override node-agenta na SOLARII, dwie pozycje
backlogu) — wskazywaly na docs/incidents/, docs/kb/modules/ i
services/narty27/README.md sprzed migracji.

Dodany wzajemny link miedzy kb/services/control-plane.md (stub kodu)
a kb/subsystems/control-plane.md (opis, deprecated) — dwa dokumenty o tym
samym systemie, latwe do pomylenia.

Weryfikacja na 790 plikach: 0 odwolan do starych sciezek,
0 martwych linkow markdown. Lint OKF: 190/190 plikow ZGODNE.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:58:46 +02:00

51 lines
2.4 KiB
Markdown

---
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).
---