# Ponowny przegląd — wersja 0.5.1

28.10.2026. Sprawdzono ponownie dokładnie pliki wyodrębnione z przekazanego archiwum 0.5; ich sumy SHA-256 były zgodne. Pierwotne 58 kontroli przeszło ponownie. Dodatkowe testy wykryły błędy w przypadkach granicznych API; poprawki są zawarte w tym wydaniu.

## Znalezione i naprawione

**Odpinanie powiązań przez API.** Jawne JSON `null` było traktowane jak pominięcie pola. Serwer zwracał sukces, ale pozostawiał wykonawcę lub powiązanie pisma. Teraz `null` usuwa opcjonalne powiązanie, a przy wymaganej wspólnocie lub prowadzącym zwraca błąd. Standardowe formularze wcześniej wysyłały pusty tekst i nie były objęte tym konkretnym błędem. Testy sprawdzają zapisany stan, nie sam kod odpowiedzi.

**Powód kolejnego otwarcia.** W API kolejne ponowne otwarcie mogło wykorzystać powód pozostały z poprzedniego otwarcia. Teraz każda taka operacja wymaga podania powodu w aktualnym żądaniu. Poprzednie powody pozostają w historii. Formularz wysyłał już nowe pole; poprawka ujednolica zabezpieczenie po stronie serwera.

**Cofnięcie dostępu w trakcie zapisu.** Sesja była sprawdzana przed oczekiwaniem na transakcję. Żądanie oczekujące na blokadę mogło więc zapisać dane po unieważnieniu sesji. Po uzyskaniu blokady serwer ponownie sprawdza sesję, aktywność konta, rolę i wymóg zmiany hasła. Zmiana hasła ponownie weryfikuje stare hasło pod blokadą. Test odtwarza prawdziwe oczekiwanie zapisu na blokadę MySQL, unieważnia sesję przed zwolnieniem blokady i potwierdza odmowę zapisu oraz niezmienioną wersję wpisu.

## Wynik

- 76 kontroli integracyjnych HTTP na PHP 8.3.6 / MySQL 8.0.46: wszystkie OK. Obejmują także dodatkowe formaty XLSX/PNG, hasła Unicode i nowe regresje. Wyniki: `tests/ostatni_wynik.txt`.
- Cały zestaw 76 kontroli powtórzono na osobnym użytkowniku MySQL z uprawnieniami ograniczonymi do testowej bazy (SELECT, INSERT, UPDATE, DELETE, CREATE, REFERENCES, INDEX): wszystkie OK. Aplikacja nie wymaga konta root.
- Ponowne sprawdzenie składni PHP i JavaScript: OK.
- Próbny dump MySQL i odtworzenie w oddzielnej bazie: wszystkie rekordy 11 tabel zgodne. Kopie wszystkich załączników powiązanych w bazie mają identyczne sumy SHA-256 i rozmiary. To test procedury, nie wdrożony harmonogram kopii na serwerze Nowego Domu.
- Dane początkowe nie były edytowane: nadal 107 awarii, 205 wspólnot i baza wykonawców. Dane testowe, hasła testowe i testowe serwery nie wchodzą do paczki.
- Instalacja przez formularz WWW i praca API w podkatalogu są objęte testami HTTP. Odbiór dotyczy kodu aplikacji, nie konfiguracji docelowego hostingu.

## Granice weryfikacji

Nie udało się uruchomić pełnego testu interfejsu PHP w dostępnej przeglądarce: środowisko podglądu nie uruchamiało wymaganych natywnych procesów PHP/MySQL. Nie jest to wynik negatywnego testu formularzy, ale brak takiej weryfikacji w tym środowisku. Wydanie nie zmienia kodu formularzy ani kolorystyki; poprawki dotyczą API i testów.

Informatycy nadal muszą wykonać odbiór na właściwym serwerze, w rzeczywistych przeglądarkach pracowników, z HTTPS, prawami plików, konfiguracją Apache/Nginx/FPM i pełną kopią. Nie można zagwarantować braku wszystkich błędów na nieznanej konfiguracji serwera. Lista odbioru znajduje się w `ODBIOR_IT.md`. Nie przetestowano obciążenia dużej organizacji ani wieloletniego wzrostu bazy.

Wydanie 0.5.1 nie wymaga migracji schematu MySQL. Dla już działającej instalacji zachować konfigurację, dopasowany paths.php i załączniki; wymienić kod zgodnie z README. Nie reinstalować bazy.
