# Warsztat: trzy odrębne terminy

Syntalith, 11 października 2026. Fikcyjne zlecenie, doradca, mechanik i podnośnik. Stałe długości etapów i bufory są założeniami testu. Program nie diagnozuje auta, nie zamawia części, nie akceptuje kosztorysu i nie wysyła wiadomości.

## Odtworzenie

Python 3.9 lub nowszy z biblioteką standardową. Rozpakuj experiment.zip, zachowując dwa katalogi obok siebie. Z katalogu nadrzędnego:

```sh
python3 -B -m unittest discover -s workshop-stages-demo-2026-10-11 -p 'test_*.py' -v
python3 -B workshop-stages-demo-2026-10-11/replay.py --db /tmp/syntalith-warsztat-nowa-proba.sqlite
```

Replay wymaga nowej ścieżki bazy. Wspólny moduł joint.py jest niezmienioną kopią demonstratora przydziału wielu zasobów. Zegary są umownymi znacznikami UTC, bez formularza dat lokalnych.

## Wynik

13 metod testowych sprawdza oddzielenie etapów, kolizję podnośnika, nieaktualną rewizję, prośbę o zmianę, przyjęcie i odrzucenie prośby, anulowanie oraz wycofanie zapisu po wymuszonym błędzie drugiego zasobu. W replay przyjęcie pojazdu nie utworzyło terminu pracy ani odbioru. Próba ustalenia odbioru przed oznaczeniem zakończenia pracy została odrzucona.

Prośba o zmianę zakresu zachowała dotychczasowy grafik do decyzji. Przyjęcie prośby unieważniło plan pracy i odbiór, zachowując przyjęcie. Nowy plan nie przywrócił starego odbioru. Operator osobno oznaczył zakończenie pracy i ustalił nowy odbiór. Osobny proces odczytał stan bazy. Lokalne komunikaty wyraźnie nazywają etap, bez transportu.

## Granice

Oznaczenie zakończenia pracy jest zaufanym oświadczeniem operatora, nie wykryciem rzeczywistej naprawy. Brak autoryzacji, interfejsu doradcy, grafiku godzin pracy, systemu zleceń, części i płatności. Metody niższej warstwy biblioteki mogą ominąć reguły etapów, więc demonstrator nie stanowi granicy uprawnień. Produkcyjne API musi udostępniać tylko uzgodniony przepływ i sprawdzać dostęp.

Przyjęcie zmiany zakresu w tym przykładzie zawsze wymaga nowego planu; warsztat może potrzebować innych reguł. Historia wszystkich dawnych wersji nie jest archiwizowana. Aktualne rekordy i wybrane snapshoty replay nie są pełnym dziennikiem audytowym. Program nie cofa komunikatu skopiowanego poza bazę. Kod i testy przygotował ten sam agent; odczyt nowego procesu nie jest niezależnym audytem. Wynik nie potwierdza wykonania naprawy lub integracji u klienta.
