Skip to content

v0.32.0 - RWA pre-release audit + 5 P1 fixes

Choose a tag to compare

@mtsle mtsle released this 28 Jul 19:03
· 101 commits to main since this release

v0.32.0 - RWA (Real-World Analysis) pre-release + 5 naprawionych P1

Pelny audyt pre-release przed v1.0.0 wedlug zlecenia usera "RWA (Real-World
Analysis)": wydajnosc/pamiec, koszt/liczba wywolan Gemini, embeddingi/
reindeksowanie, chunking/retrieval, jakosc odpowiedzi, topic boundary/
halucynacje, prompt injection, bezpieczenstwo WP, separacja Guest/Owner,
FAQ Generator + wszystkie eksporty, JSON-LD/SEO, historia generowan,
obsluga bledow API, cache, duplikacja, skala, kompatybilnosc WP. Metoda:
agent tokenizator, 4 wykonawcy read-only w tle na rozlacznych obszarach.
Pelny raport: plany/KROK23-ETAP2-RWA-REALWORLD-AUDYT.md.

Zero P0. Piec P1 naprawionych, osiem P2 udokumentowanych jako swiadomy
backlog (zadne nie blokuje wydania).

Piec naprawionych P1

  1. Generator FAQ nie liczyl sie do dobowego budzetu witryny.
    /admin/generate-faq mial tylko limit godzinowy per-uzytkownik - Autor/
    Redaktor generujacy FAQ mogl wyczerpac wspolna, darmowa pule Gemini i
    zablokowac /ask gosciom do konca doby. Nowa bramka
    RagService::site_budget_allows()/site_budget_hit() (statyczna, dzieli
    licznik z /ask).

  2. description generatora nie byl przycinany PRZED zapisem do bazy.
    FaqGenerator przycinal opis tylko wewnatrz promptu do modelu - surowa
    (nieograniczona) wersja leciala do wp_aifaq_generations.extra_desc
    (longtext). Teraz przycinany serwerowo w GeneratorService::read_params()
    PRZED zapisem.

  3. Publikacja FAQ sanityzowala cala nadeslana tablice par przed cappingiem.
    PairsInput::from_request_for_publish() nie mial wczesnego break przy
    MAX_PAIRS (w odroznieniu od from_request()) - nieograniczone CPU per
    zadanie. Dopisany ten sam wzorzec.

  4. Reindeksowanie moglo dac fatal error zamiast czytelnego bledu.
    IndexController::run_reindex() nie lapal wyjatkow wokol Indexer::run()

    • blad w kaskadzie zrodel/filtrze balastu propagowal sie bez przechwycenia.
      Dopisany try/catch -> ustrukturyzowany blad 500.
  5. Brak DONOTCACHEPAGE na trasie standalone /faqgenerator.
    Trasa niesie nonce KAZDEGO zalogowanego uzytkownika, a mial tylko
    nocache_headers() - agresywne wtyczki cache (WP Super Cache/W3TC)
    ignoruja ten naglowek i patrza na te stala. Dopisana, ten sam wzorzec co
    Shortcode::maybe_nocache().

Osiem P2 - swiadomy backlog (nie wdrozone teraz)

Panel wlasciciela z shortcode'u spoza post_content bez nocache,
AppShell::config() bez samoobrony (isOwner bezwarunkowe), publikacja
FAQ przyjmuje dowolne id jako metadana bez weryfikacji istnienia,
GenerationRepository::page() robi SELECT * zamiast listy kolumn,
domyslna retencja qa_log/generations bez limitu (swiadoma decyzja z
wczesniejszych Krokow), Retriever bez ANN (znane, odlozone), brakujace
asercje anty-XSS w tescie eksportera, niezweryfikowane zachowanie na
Cloudflare "Cache Everything". Pelne uzasadnienie kazdego w raporcie.

Odbior

runner 49/49 plikow tests/*.php - 8 znanych fails srodowiskowych (mbstring
  nie laduje sie w tej sesji, identyczne jak w poprzednim audycie tej samej
  sesji, zero zwiazku z ta zmiana) + 1 regresja zlapana i naprawiona
  (brakujacy require RagService.php/Exporter.php w krok12-rest-generate-test.php)
php -l czysto na wszystkich zmienionych plikach
budzet API: 0 - caly audyt i wszystkie testy statyczne/z atrapami
zero zmian schematu bazy (DB_VERSION bez zmian, '5')

READY FOR RELEASE: TAK

Zero P0, wszystkie P1 naprawione bez zmiany architektury (nowe statyczne
bramki, jeden try/catch, jeden wczesny break, jedna stala cache). Osiem P2
ma jasna sciezke naprawy na przyszlosc, zadne nie blokuje wydania.

NASTEPNY KROK: Krok 23 etap 3 - Testy obciazeniowe (w tym skala 400
wpisow).