Ligase 2.4.8 — multi-agent production audit + 14 critical fixes
Pełny audyt 4 agentów (settings / type classes / AJAX security / core pipeline) — 35+ findings, 14 najważniejszych naprawionych.
Pełne raporty w docs/audit-2025-06-01-*.md na repo.
Top fixes
Score-killer typos (DLATEGO score 0/100 wszędzie!)
Ligase_Score czytał 4 nieistniejące klucze opcji:
organization_name(powinno byćorg_name)organization_logo(org_logo)organization_knows_about(knows_about)organization_same_as(agreguj zsocial_*)
Plus 3 ghost-key reads (use_graph, enable_breadcrumb, enable_search_action) — te options nie istnieją, features są always-on. Naprawione: hardkod true.
Score brakowało 30+ pkt na każdej stronie od v1. Po 2.4.8 makumi.eu zobaczy realne score 60-80 zamiast 0.
Output correctness (Google może odrzucić)
- WebSite SearchAction —
home_url()enkodowało{search_term_string}→%7B...%7D. Sitelinks Search Box zepsuty na każdej stronie. Naprawione: budowa URLa przez konkatenację. - Organization employee[] —
has_published_posts => truedeprecated od WP 6.4. Naprawione + cap 20 entries (zamiast 500-entry payload bloat). - JobPosting addressCountry —
strtoupper(substr('Poland', 0, 2))produkowało'PO'. Naprawione: walidacja ISO 3166-1 alpha-2. - VideoObject — emitował puste stringi
thumbnailUrl/embedUrl/descriptiongdy meta brak. Google flag = invalid + spam signal. Teraz gate'uje required + drop node jeśli brak. - WC unknown stock — defaultował do
InStockdla 'preorder'/'discontinued'. Manual-action risk. Teraz null = pole pominięte.
Security
- Settings export leak —
ner_api_key+gsc_service_account_jsonszły w plaintext w pobranym JSONie. Każdy "backup" wyciekał klucze OpenAI/Anthropic. Naprawione: redakcja__REDACTED__.
Fatal guards
- Generator with_post_globals — fatal gdy
$wp_querynie jest WP_Query (AMP / REST / page builders). Naprawione: instanceof guard. - Duplicate
case 'blog_listing':w switch — unreachable, linter rejected. Naprawione. - Suppressor static state leak —
private static bool $is_activemógł przeciekać między requestami w FPM workers. Naprawione: czytanie opcji bezpośrednio.
Settings persistence
default_schema_typedropdown — ghost field (nie zapisywał). Naprawione.health_report_enabledcheckbox — turn-OFF nie zapisywał. Naprawione.
Author @id integrity
author_ref_id()zwraca#orgzamiast#author-0dla orphaned posts.- 7 typów schema (Review, QAPage, ClaimReview, ItemList, Generator profile_page + about/mainEntity) używa teraz scentralizowanego
author_ref_id().
Polish number formatting
"1 299,90 zł"cast'owało do1.0(1300× cena!). Teraz:1299.9. Strips currency/spaces, normalizuje ostatnią,lub.jako separator dziesiętny.
Compatibility
Drop-in z 2.4.7. Bez migracji.
SPRAWDŹ SCORE PO UPDATE — powinno skoczyć z 0 do 60-80 dla większości postów (zwłaszcza tych z wypełnioną Organization name + logo + knows_about w Ustawieniach).