Repository navigation
Domy: start kolejnych domów obok Domu 1 - #84
Merged
Merged
Conversation
Nadzorca co okres porownuje liste domow != 1 w trybie `baza` z dzialajacymi: startuje brakujace (takze dodane w trakcie pracy poda), zatrzymuje te, ktore zniknely z listy (z oproznieniem kolejki). Blad startu domu != 1 nie konczy procesu: stan dla panelu, dziennik, alarm instancji przez bramke odstepu z dziennika, start na kopii, ponowienie po zmianie wersji albo po 1/5/30 min. Przeladowanie domu != 1 bez zadnej dzialajacej konfiguracji tez nie konczy procesu, gdy chodzi inny dom. Dom nieskonfigurowany (brak zrodla DNS, jego sekretu albo urzadzenia, bez kopii) czeka cicho ze stanem `czeka` w panelu i startuje sam po zapisaniu integracji. Kolejka domu != 1 wstrzymana bez trybu kont zglasza alarm instancji (hak Outbox.na_wstrzymanie, logika wstrzymania bez zmian). Dom != 1 nie nadpisuje rejestru aplikacji TV Domu 1. Dom 1 bez zmian zachowania. Test e2e: day.jsonl w Domu 1 rownolegle z telefon_android.jsonl w Domu 2 przez prawdziwego Nadzorce - wyniki jak osobno, bez przeciekow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
) - Alarm domu, ktory nie wstaje: zapasowy, rosnacy odstep w pamieci procesu (1 h, 2 h... do doby), niezalezny od dziennika — gdy zapis wpisu dom.start.alarm padnie albo kanal rzuci po doreczeniu, alarm nie idzie co obieg nadzorcy. Wpis tylko po faktycznej wysylce (bez kanalu — sam log). - Przeladowanie domu != 1, po ktorym nic nie wstaje, nigdy nie konczy procesu przy kolejnych domach (takze gdy Dom 1 czeka w _restarty). - Eskalacja do restartu poda tylko z powodu Domu 1 albo jedynego domu; dom czekajacy na restart liczy sie jako istniejacy. - Jeden alarm „monitoring nie wystartowal” zamiast „dziala dalej na wersji” o domu, ktory nie dziala. - Testy: liczba budow przy bledzie konfiguracji, kolejka pusta po zatrzymaniu domu (bez petli wysylki), Dom 1 w trybie baza i wymuszony yaml razem z Domem 2, Dom 1 w restarcie przy awariach Domu 2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mbeczynski
added a commit
that referenced
this pull request
Oct 23, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Co
kidwatch runuruchamia każdy dom z konfiguracją w bazie (zrodlo_konfiguracji = baza), nie tylko Dom 1. Dotąd domy ≠ 1 były tylko logowane („krok przed E6”).domy.Nadzorca,Przeladowanie.domy/czeka/po_zatrzymaniu/bramka_alarmu): cookres(10 s) porównuje listę domów ≠ 1 w trybiebazaz działającymi. Dom z listy, który nie chodzi, startuje — także dodany przezdom-dodajw trakcie pracy poda. Dom, którego na liście już nie ma, jest zatrzymywany z opróżnieniem kolejki, a panel, komendy i czujka MDM instancji przestają go widzieć.StanyDomow), wpis w dzienniku, alarm instancji przez istniejącą bramkę odstępuRejestrDomow.alarm_startu(która przeżywa restart poda), start na ostatniej dobrej kopii, jeśli taka jest, i ponowienie po zmianiedomy.wersjaalbo po 1/5/30 min przy błędzie przejściowym. Przeładowanie domu ≠ 1, po którym nie wstaje nic (ani nowa wersja, ani poprzednia, ani kopia), też już nie kończy procesu, gdy chodzi inny dom.konfiguracja_domu.czego_brakuje): brak włączonego źródła DNS, brak jego sekretu albo brak urządzenia przy domu, który nigdy nie wstał (nie ma kopii). Taki dom czeka cicho: log info, stanczekaw panelu, bez alarmu. Startuje sam po zapisaniu brakującej integracji. Zła wartość (walidacja, strażnik, sejf) albo brak klucza w domu, który już kiedyś działał, to awaria z alarmem.na_wstrzymaniewysyła alarm instancji, najwyżej raz na 6 h na dom.konfiguracje[dom_id]jest wypełniane przy starcie każdego domu i usuwane po jego zatrzymaniu. Ekran integracji pokazuje „Dom czeka na konfigurację: …”.tv_app.AKTYWNA, który należy do Domu 1.Dlaczego
Bez tego nie da się uruchomić Domu 2 (E6) bez przerywania Domu 1. Dom świeżo dodany, jeszcze bez klucza NextDNS, to normalny stan i nie powinien budzić administratora.
Dom 1 działa tak samo jak dotąd: start, kod 2 bez kopii,
KIDWATCH_DOM_1_ZRODLO=yaml, a Dom 1 z config.yaml dalej się nie przeładowuje. TrybyamlDomu 1 dostaje teraz obiekt przeładowania, ale wersja Domu 1 jest w nim zawszeNone.Testy
tests/test_domy_start.pyużywa prawdziwegoNadzorca,przeladowanie_domow,build_home_runtimei sejfu. Atrapy są tylko na brzegach: zdarzenia płyną z pliku, notki trafiają do kolektora, a tik dostaje czas ostatniego zdarzenia.day.jsonlw Domu 1 i równolegletelefon_android.jsonlw Domu 2. Notki każdego domu zgadzają się pole w pole z odtworzeniem osobno.dom_idnotek jest zgodny z domem, a tabelaeventskażdej bazy zawiera tylko jego źródła.kidwatch runw trzech wariantach: działa, rzuca, nieskonfigurowany.Kanarki: 11 mutacji poprawki, każda daje czerwony test. Między innymi:
kolejne_domy=Falsewrun, błąd startu ustawiający_awaria, „czeka” wyłączone, brak sprawdzania listy w pętli, wspólna baza domów (przeciek), brak zatrzymania znikającego domu, brak haka wstrzymania, alarm bez odstępu.uv run pytest -qjest cały zielony,uv run ruff checkczysty.Pomiar pamięci (macOS, skrypt poza repo, 10 domów z NextDNS i telefonem, bez otwartych strumieni SSE): około 1,4 MiB RSS na dom, z czego sterta Pythona to około 0,07 MiB.
Wdrożenie i wycofanie
dom-dodajpojawi się w panelu jako „czeka na konfigurację”. Bramka bez polaodbiorca= alarm „powiadomienia wstrzymane” i notki czekające w kolejce domu, co jest zamierzone (§8 p. 1).dom.start.alarmw dzienniku domów ≠ 1 stary obraz ignoruje.🤖 Generated with Claude Code