# Aktualizacje, uzgadnianie stanu, odzyskiwanie

Ta strona pokazuje, co dzieje się pod maską poradnika [Aktualizacja i odzyskiwanie](/pl/docs/guides/updates-and-recovery/): jak przebiega instalacja aktualizacji, które obrazy przebudowują się na nowo i w jaki sposób Speedwave odzyskuje kontenery. Procesy te działają na macOS (Lima VM) oraz Windows (WSL2), ale nie na Linuksie.

## Aktualizacja, uzgadnianie stanu, przebudowa

`install_update_and_reconcile(expectedVersion)` zapamiętuje działające projekty, zatrzymuje ich kontenery, instaluje zatwierdzoną wersję i uruchamia aplikację ponownie. Jeśli instalacja się nie powiedzie, Speedwave przywraca zatrzymane projekty i nie rusza poprzedniej, wciąż działającej instalacji.

Po ponownym uruchomieniu backend porównuje `bundle_id` zainstalowanej paczki z identyfikatorem użytym ostatnim razem. Różnica uruchamia uzgadnianie stanu, które Speedwave zapisuje jako maszynę stanów, dzięki czemu przerwana aktualizacja podejmuje pracę od miejsca zatrzymania, bez błędów: synchronizuje `claude-resources`, buduje każdy obraz, któremu brakuje tagu z hashem, a na koniec odtwarza (`--force-recreate`) projekty działające przed aktualizacją.

`bundle_id` decyduje wyłącznie o tym, czy zasoby się zsynchronizują i czy projekty wystartują ponownie. Każdy obraz przebudowuje się osobno, według własnego tagu wyliczanego z hasha jego pliku Containerfile i źródeł:

| Wyzwalacz | Efekt |
| --- | --- |
| Brakujący tag z hashem | Przebudowuje tylko ten jeden obraz |
| Zmiana we współdzielonym serwerze MCP | Przebudowuje każdego zależnego workera |
| Zmiana w `claude-resources` | Nie przebudowuje niczego, ale i tak uruchamia uzgadnianie stanu |
**Note:** Hash obejmuje dane wejściowe budowy, a nie zawartość obrazu: obrazy bazowe takie jak `node:24-*` pozostają zewnętrzne i mogą się zmieniać.

Uzgadnianie stanu i konfiguracja budują obrazy tylko wtedy, gdy są potrzebne, i robią to osobno dla każdego projektu: aktywny projekt dostaje obrazy dla włączonych integracji. Świeża konfiguracja bez aktywnego projektu buduje jedynie `speedwave-claude`, `proxy` oraz `speedwave-mcp-hub`.

## Odzyskiwanie

Speedwave samodzielnie odzyskuje nieaktualne kontenery po uśpieniu i wznowieniu oraz brakujące kontenery po restarcie containerd lub ponownym utworzeniu VM. `ensure_exec_healthy` uruchamia się przed każdą sesją interaktywną i zajmuje się kontenerem Claude danego projektu (zobacz [Topologia kontenerów](/pl/docs/under-the-hood/container-topology/)): sprawdza jego stan testem exec, wymusza odtworzenie w razie błędu nieaktualnego punktu montowania lub brakującego kontenera, a potem sprawdza go jeszcze raz. Jeśli i to nie pomoże, kończy się błędem "Please restart Speedwave".

Na Windowsie czuwa dodatkowo warstwa niższego poziomu, która pilnuje samej dystrybucji WSL2: Speedwave sprawdza containerd i buildkitd przed startem sesji i uruchamia je automatycznie, z ograniczoną liczbą prób. Gdy to nie zadziała, kolejne kroki restartują obie usługi, a w ostateczności resetują dystrybucję (najpierw ją kończą, potem wyrejestrowują). To ten sam reset, który wykonuje akcja Factory Reset w ustawieniach Desktop.

## Ścieżka aktualizacji w CLI

`speedwave update` ([Polecenia CLI](/pl/docs/reference/cli-commands/)) naprawia uprawnienia systemu plików, przeprowadza [obowiązkową kontrolę bezpieczeństwa](/pl/docs/security/securitycheck/) (dopóki jej nie przejdzie, nic nie zostaje zapisane), buduje wyłącznie brakujące obrazy, odtwarza kontenery i sprawdza, czy wstały, a jeśli nie wstanie żaden, kończy się wyraźnym błędem. Na koniec usuwa nieaktualne tagi obrazów, ale nigdy pamięci podręcznej budowy.

Kiedy aktualizacja zawiedzie już po rozłożeniu kontenerów, Speedwave przywraca stan sprzed aktualizacji. Najpierw próbuje sięgnąć po dokładny zapisany stan, ale gdy jest on starszy niż nowsza reguła bezpieczeństwa, renderuje compose od nowa. Dopiero gdy zawiodą oba sposoby, wycofanie przerywa się i wypisuje naruszenia. Miejsce na dysku zwalnia się dopiero po pełnym, udanym przywróceniu. Więcej o podpisywaniu kodu przeczytasz na stronie [Autentyczność plików binarnych](/pl/docs/security/binary-authenticity/).