Skip to content

v0.33.0 - Krok 23 etap 3: Testy segmenty

Choose a tag to compare

@mtsle mtsle released this 28 Jul 21:00
· 100 commits to main since this release

v0.33.0 - Krok 23 etap 3 "Testy segmenty": 11 segmentow, 157 nowych asercji, 1 fix produkcyjny

Kompleksowe testowanie calego projektu wedlug zlecenia usera "przetestuj caly plugin
WordPress oraz caly projekt, sam zaprojektuj segmenty testowe z analizy architektury,
nie z gory narzucone". Metoda: agent tokenizator (Faza A, 5 wykonawcow read-only)
zaprojektowal plan 11 segmentow z analizy architektury i 49 istniejacych testow;
glowna sesja wykonala segmenty S1-S11 sekwencyjnie (analiza -> implementacja ->
uruchomienie -> naprawa realnych bugow -> raport), bez dalszych subagentow.
Pelny raport: plany/KROK23-ETAP3-TEST-REPORT.md.

Zero P0 nowych. Jeden realny bug produkcyjny znaleziony i naprawiony.

Jedyny bug produkcyjny: GeneratorService nie przycinal par generatora

GeneratorService::generate() (POST /admin/generate-faq) nie przycinal par Q&A
swiezo wygenerowanych przez model - w odroznieniu od sciezki publikacji (naprawionej
juz w K23 etap 1), pytanie/odpowiedz z modelu lecialy NIEOGRANICZONE zarowno do bazy
(wp_aifaq_generations.pairs_json), jak i w odpowiedzi REST do przegladarki.
Naprawa: $pairs przechodzi teraz przez Exporter::normalize() przed zapisem i
zwroceniem - ta sama regula co reszta produktu. Regresja: 17 asercji (segment S6).

Najwazniejsze domkniecie luki testowej

Plugin::on_knowledge_post_removed() - fix na NAJPOWAZNIEJSZE znalezisko calego
audytu K23 etap 1 (kosz/usuniecie wpisu musi wyczyscic baze wiedzy RAG, inaczej gosc
dostaje dezinformacje z linkiem do 404) mial dotad WYLACZNIE testy statyczne
(method_exists, pozycje stringow w zrodle) - zero dowodu ze metoda faktycznie
DZIALA. Teraz ma pelny test behawioralny (usuniecie fragmentow + czyszczenie cache,
brak fragmentow -> cache nietkniety, wyjatek bazy -> zlapany bez propagacji).

11 segmentow (S1-S11) - wszystkie PASS

S1 rdzen czysty (34 asercje) - S2 dostawca API/GeminiProvider (20) - S3 RAG
end-to-end/sufit dobowy wlasciciela (9) - S4 indeksowanie+crawl (8, w tym powyzsze
domkniecie) - S5 persystencja/Migrator (20, + znalezisko martwego kodu) - S6
generator FAQ (17, + fix produkcyjny) - S7 eksporty+JSON-LD (15) - S8 REST/uprawnienia
(22) - S9 podstrony+CSP (0 nowych - oba flagowane braki juz pokryte, zweryfikowane) -
S10 front JS<->REST kontrakt (12) - S11 regresja przekrojowa (naprawy, nie nowe testy).

Razem: 157 nowych asercji w 9 nowych plikach tests/krok23-etap3-s{1,2,3,4,5,6,7,8,10}-*.php.

Martwy kod znaleziony (udokumentowany, NIE usuniety)

src/Data/FaqRepository.php (tabela wp_aifaq_faq) nie jest wolane z zadnego
miejsca w src/ ani tests/ - sprawdzone grepem calego repo. FAQ trafia do opcji
aifaq_public_faq przez PublicFaq, nie przez to repozytorium. Decyzja o usunieciu
kodu produkcyjnego zostaje userowi - poza zakresem tego wydania.

Runner napraniony: 43/49 -> 58/58

Szesc plikow istnialo w tests/ ale nigdy nie bylo wpietych do zasoby/run-tests.sh
(2x bezpieczenstwo K21, 4x K23 etap 1) - dopiete, wszystkie przechodza. Plus 9 nowych
plikow segmentow S1-S8,S10 (S9 nie wyprodukowal nowego pliku).

7 slabych asercji ilosciowych dokrecone do === N

Po zweryfikowaniu pelnego determinizmu atrap (krok10-history-test.php,
krok4-knowledge-repo-test.php, krok5-indexer-test.php x2, krok17-crawl-test.php,
krok7-audit-fixes-test.php x2) zamiast >0/!empty(). Pozostale 9 z 16 flagowanych
w audycie zostawione swiadomie - sprawdzone i uznane za poprawne uzycie (tresc
nieokreslona co do liczby: komunikaty i18n/nonce, albo jawny warunek wstepny).

Flagowane w audycie luki ktore okazaly sie falszywymi alarmami

Sprawdzone czytaniem kodu, NIE zgadywaniem: GuestIdentity::ip_hash() juz testowane
posrednio przez wrapper RestController; macierz uprawnien w krok20-capy-test.php
juz uwzglednia zawezenie publikacji do Redaktora z K23 etap 1; CSP inline guard i
fallback nonce przy pustym tokenie juz maja adekwatne pokrycie w innym pliku.

Odbior

runner 58/58 plikow tests/*.php - 0 niezaliczonych (byl 43/49 przed tym wydaniem)
php -l czysto na wszystkich 15 zmienionych/nowych plikow
budzet API: 0 - caly etap statyczny/z atrapami, zero prawdziwych zadan do Gemini
zero zmian schematu bazy (DB_VERSION bez zmian, '5')

READY FOR RELEASE: TAK

Zero P0, jeden realny bug P1 naprawiony bez zmiany architektury (jedno wywolanie
Exporter::normalize() w istniejacym miejscu). Runner kompletny po raz pierwszy
od dawna (58/58 zamiast deklarowanych, ale niezweryfikowanych "45/45"/"49/49").

NASTEPNY KROK: Krok 23 etap 4 - Testy obciazeniowe (skala 400 wpisow).