3.6 KiB
Sesja 2026-06-10/11 — lustro SSH shipping fix + ha-diag-agent piha
Cel
Naprawa shippingu eventów lustro → VPS; domknięcie deploy-configu ha-diag-agent na piha; zachowanie poison-quarantine (Codex) do osobnego review.
GŁÓWNE: LUSTRO event shipping — NAPRAWIONY (merged a5a1352)
Root cause
_ship_events_to_vps() (services/node-agent/src/node_agent.py) woła ssh bez -i,
więc klucz jest szukany w $HOME/.ssh = /home/homelab/.ssh (kontener działa jako
uid 1000 homelab od dodania user: "1000:1000" do bazowego
services/node-agent/docker-compose.yml). Override lustra montował klucz w /root/.ssh
— ślepy mount, ssh tam nie patrzy → oskar@100.95.58.48: Permission denied.
Fix
hosts/lustro/runtime/node-agent/docker-compose.override.yml:
- /home/pi/.ssh:/home/homelab/.ssh:ro # było: /root/.ssh — ślepe
Klucz pi@pimirror2 dodany do authorized_keys oskar@VPS.
uid match (pi=1000 = homelab=1000) spełnia strict ownership check OpenSSH.
Weryfikacja
- 5 nodów NOMINAL w world state; lustro w
/opt/homelab/world/nodes.json(online, świeżylast_seen) - 7600+ eventów backlogu spłynęło na VPS (
/opt/homelab/events/lustro/) - Staging na lustrze drenowany do zera (
--remove-source-filesdziała) - "Permission denied" zniknął z logów node-agenta
Diagnoza — lekcja verify-before-fix
Oba agenty (Claude Code, Codex) błędnie wskazały observer (poison event / race)
na nieaktualnym stanie (events=2 z ręcznego testu). Verify-before-fix obalił
obie hipotezy: events/lustro na VPS było puste → problem w warstwie dostarczania
(klucz SSH), nie w observerze.
ha-diag-agent piha — deploy config merged (5e9db5c), deploy NIEDOKOŃCZONY
.envutworzony na piha:/opt/homelab/config/ha-diag-agent/.env, chmod 600- ALE token = PLACEHOLDER — chelsty-ha offline → brak tokenu i połączenia
- Przed
shadow_mode=false: target restartu w supervisorze = nazwa kontenerahomeassistant5; curl endpointu z tokenem musi dać HTTP 200 - Decyzja PENDING: cel HA = chelsty-ha vs HA Ken (
homeassistant5na piha — z kontenera NIElocalhost)
observer poison-quarantine (Codex)
Zachowany na branchu task/observer-poison-quarantine (78c9e4a) — NIE w master.
Do osobnego review: czy observer realnie wiesza się na malformed evencie
(poison NIE był przyczyną lustra; hipoteza niezweryfikowana).
Realny bug → merge; inaczej → drop.
🔴 FLOTA-BOMBA — odkryta, NIE naprawiona (backlog, BLOKUJĄCE)
solaria / piha / chelsty to wciąż stare root kontenery node-agenta
(piha Created 2026-05-27, uid 0). Ich mount /root/.ssh działa tylko dlatego,
że kontenery są sprzed user: "1000:1000". Pierwszy --force-recreate / reboot
hosta / update obrazu przełączy je na uid 1000 i shipping padnie jak na lustrze.
NIE RECREATE bez fixu. Szczegóły i fix: docs/backlog.md.
Tech-debt złapany w sesji
→ wpisany do docs/backlog.md (flota-bomba, ha-diag-agent blocked,
poison-quarantine review, --omit-dir-times, stale komentarz node_agent.py,
shipping success na logger.debug, event-bloat lustro na VPS).
Session 20:19
Commits
fa59625 docs(ha-diag-agent): replace curl verify commands with docker exec
d7e0d31 fix(ha-diag-agent): remove host port mapping for 8087
Files changed
services/ha-diag-agent/DEPLOY.md | 4 ++-- services/ha-diag-agent/README.md | 4 ++-- services/ha-diag-agent/docker-compose.yml | 3 --- services/ha-diag-agent/service.yaml | 3 --- 4 files changed, 4 insertions(+), 10 deletions(-))
Deploys
None recorded
Narrative
user-provided summary