# Sala hotelowa: opcja, przygotowanie i zmiana terminu

Syntalith, 11 października 2026. Jedna fikcyjna sala, ręcznie podane bufory i zegar testowy. Brak danych gości, noclegów, portali, płatności, modelu AI i wysyłki.

## Odtworzenie

Python 3.9 lub nowszy z biblioteką standardową i bazą IANA Europe/Warsaw. Rozpakuj experiment.zip i zachowaj oba katalogi obok siebie. Z katalogu nadrzędnego:

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

Replay wymaga nowej ścieżki bazy i nie nadpisuje istniejącej. Jeżeli system nie ma stref IANA, Python zoneinfo wymaga osobnego pakietu tzdata. Dołączony adapter local_time.py jest kopią wcześniejszego demonstratora lokalnego czasu, bez zmian.

## Wynik

14 metod testowych sprawdza wygaśnięcie opcji, bufory, konkurujące zapisy, rewizje i ponowne otwarcie bazy. Próby lokalnego czasu odrzucają nieistniejącą godzinę, wymagają wskazania jesiennego wystąpienia i zapisują dwa odrębne zdarzenia o tej samej godzinie lokalnej.

W replay wydłużenie wydarzenia zostało odrzucone, ponieważ czas sprzątania kolidował z przygotowaniem następnej opcji. Poprzedni zapis pozostał bez zmian. Na dokładnej granicy wygaśnięcia opcji jej potwierdzenie zostało odrzucone. Wydłużenie pierwszego wydarzenia było już możliwe; spóźnione potwierdzenie nie przywróciło wygasłej opcji. Nowy proces odczytał stan bazy.

## Granice

Przygotowanie i sprzątanie zajmują salę, lecz program nie rezerwuje personelu ani sprzętu. Bufory oznaczają czas rzeczywisty w sekundach wokół dat przeliczonych na UTC. Nie ma godzin pracy, interfejsu recepcji, cyklicznych spotkań, integracji PMS ani transportu. Zegar jest zaufanym wejściem próby; produkcyjne źródło czasu wymaga osobnego projektu. Udane operacje nie mogą cofać zapisanego zegara.

W bazie wygasła opcja zachowuje stan HOLD oraz expires. Dostępność i potwierdzenie sprawdzają expires przy operacji; replay pokazuje dodatkowo stan efektywny w podanym momencie. Nie ma zadania sprzątającego opcje ani powiadamiania gościa o wygaśnięciu. Biblioteka nie zapewnia autoryzacji ani ochrony przed administratorem bazy. Kod i testy napisał ten sam agent; osobny odczyt nie jest niezależnym audytem.
