homelab-codex-ws/docs/sessions/2026-08-26.md
2026-08-26 17:03:04 +02:00

3.5 KiB
Raw Blame History

Session 16:00

Recon floty po 3 tygodniach bez nadzoru (ostatnia sesja 2026-08-06) + sesja naprawcza: (A) usunięcie watchtowera z LUSTRO jako reliktu spoza GitOps, (B) higiena kolejek actions/pending i zawieszonych incydentów active na VPS. SUPERVISED — checkpointy A/B/C zatwierdzane przez operatora, backup przed każdą operacją destrukcyjną.

Commits

Ta sesja nie wprowadziła żadnych commitów w kodzie poza niniejszym logiem — wyłącznie operacje na nodach (LUSTRO, VPS). Jeden niepowiązany commit (003f83d, kb-publish skill) doszedł na master od równoległej sesji operatora w międzyczasie — poza zakresem tej sesji.

(brak commitów tej sesji)

Files changed

Brak zmian w repo.

Deploys / operacje na nodach

Recon (read-only, wszystkie 4 węzły: SOLARIA, PIHA, VPS, LUSTRO):

  • Zero nowych commitów na origin/master przez 3 tygodnie.
  • Soak test R1 (auto-cleanup node-agenta): PIHA 20/20 uruchomień 0 usunięć, VPS 21/21 uruchomień 0 usunięć, SOLARIA 3/3 0 usunięć, LUSTRO 5/5 — 1 usunięcie (prune-disposable, celowy kanarek testowy z 08-06, zgodnie z zamysłem). Zero ofiar wśród kontenerów chronionych. rc=23 nie wystąpił ani razu — fix 0o775 z sesji 08-06 trzyma.
  • Zdiagnozowano ciągłą pętlę restartów pi-watchtower-1 na LUSTRO (API Docker 1.25 vs wymagane min. 1.40), trwającą nieprzerwanie od co najmniej 2026-08-06 04:31.

Watchtower LUSTRO — usunięcie (checkpoint A→B, zatwierdzony):

  • Backup: docker inspect + compose.yml + pusty katalog /home/pi/watchtower/home/pi/watchtower-removal-backup-2026-08-26/ na LUSTRO.
  • docker stop + docker rm pi-watchtower-1, docker rmi containrrr/watchtower:latest, /home/pi/compose.yml (jedyne źródło autostartu — brak systemd/cron) przeniesiony do backupu jako .disabled.
  • Weryfikacja: docker ps -a na LUSTRO czyste; 7 min ciszy zdarzeń containers_not_running-watchtower na VPS (wymagane min. 5 min).

Higiena kolejek VPS (checkpoint C→wykonanie, zatwierdzony):

  • Backup: tar czf /opt/homelab/backups/actions-incidents-2026-08-26.tgz (actions/ + world/incidents.json), sha256 ef9afbfa....
  • 17/18 pending → cancelled/ (stale_manual_cleanup): 16× stare alert-node-*/alert-ha-* z czerwca + 1× shadow-mode HA-websocket z 13.08 (kolizja nazwy pliku z niepowiązanym wpisem z 08-06 — zapisany pod nową nazwą container-restart-piha-homeassistant-shadowmode-20260813.json, żeby nie nadpisać cudzej historii).
  • redeploy-vps-gokapi pozostawiony — realna luka wdrożeniowa (desired w hosts/vps/services.yaml, brak kontenera), nie cruft. Follow-up do sesji deploy.
  • 5 incydentów w world/incidents.json ręcznie przełączonych na resolved (piha-homeassistant, solaria-narty27, solaria-prune-canary, lustro-prune-canary, lustro-watchtower) — wszystkie zdiagnozowane jako trwale osierocone (brak mechanizmu auto-resolve dla zniknionej/przeniesionej usługi, patrz Narrative).
  • Sekwencja bez wyścigu: docker stop control-plane-observer → edycja pliku → docker start → weryfikacja >15 s (kilka cykli flush) — bo _save_world() nadpisuje world/*.json co 5 s z pamięci procesu, bez merge z dyskiem.
  • Efekt uboczny własnego restartu: inc-...-vps-observer (1 wystąpienie) — rozwiązał się sam w ~60 s (poprawny, nieosierocony przypadek).
  • Stan końcowy: active_incidents_count: 0, runtime-summary.json status: nominal.

Narrative

user-provided summary