--- name: audit description: Far girare le fonti di rilevazione dell'audit sito di ClientHub su un URL e capire cosa e' stato misurato e cosa no. Da usare quando si lavora al motore audit v2.5, quando serve una rilevazione su un sito reale, quando si vuole sapere se una fonte risponde, o prima di scrivere qualsiasi pezzo del documento di audit. --- # Audit — le rilevazioni, e cosa vale come misura Il motore v2.5 **non e' scritto**. Quello che esiste, e che questa skill mette in moto, sono le fonti di rilevazione: nessun LLM, nessun database, nessun browser headless. ## Due attrezzi, due domande diverse | Comando | Cosa fa | Quando | |---|---|---| | `npx tsx scripts/audit-fonti.ts ` | Le **cinque fonti** di `src/lib/audit/sources/` — pagine, CrUX, PageSpeed, storico Wayback, segnali. Puramente meccanico | «Cosa si riesce a misurare su questo sito?» | | `npx tsx scripts/spike-audit.ts ` | Verifica le **264 voci di checklist** con Sonnet 5, poi sintetizza con Opus 5. Volutamente **isolato** da `src/`: non importa nulla, non tocca il DB | «Cosa c'e' che non va, in parole?» | Opzioni comuni: `--profilo=servizi|ecommerce`, `--no-psi` (salta PageSpeed, che da solo vale meta' del tempo). Riferimento misurato il 2026-08-26 su `giojello.com`: cinque fonti su cinque, **42,7 s** in tutto, PageSpeed 34,2 s. Se una fonte tace, **quella e' la notizia** — va riportata, non aggirata. `PAGESPEED_API_KEY` viene letta dall'ambiente o da `.env.local`. Senza, PageSpeed e CrUX rispondono a vuoto **senza errore**: lo script lo dice in testa, leggerlo. Il grezzo finisce in `audit-fonti-.json` (gitignorato). E' li' che ogni numero del documento dovra' essere rintracciabile. ## Le tre regole che il motore erediterà Non sono preferenze. Sono gia' costate, e stanno per esteso in `STATUS.md` § Lezioni operative. 1. **Un numero entra solo se e' stato misurato.** Rintracciabile nel grezzo, e nel motore in `audit_runs.raw`. Nessun numero dedotto, arrotondato o ricordato. 2. **Laboratorio e campo non si fondono — la differenza *e'* il risultato.** Su giojello.com Lighthouse dava `server-response-time` **7 ms** e CrUX TTFB p75 **3.553 ms con l'1% nel verde**: il server risponde in fretta al datacenter Google e lento a tutti gli altri. Due numeri con lo stesso nome verrebbero fusi in uno solo — per questo il campo si chiama `risposta_server_ms` e non `ttfb_ms`. 3. **Un punteggio va sempre con la sua data.** Performance mobile 52, poi 64 sullo stesso sito mezz'ora dopo. Mai presentato come una costante del sito. E una regola di metodo che vale per ogni fonte nuova: **ogni estrazione da un'API di terzi va vista funzionare, non dedotta dai docs.** Scrivendo `sources/`, due estrazioni prese dalla documentazione hanno restituito valori vuoti *senza errore* — `largest-contentful-paint-element` non esiste piu' e `configSettings.screenEmulation` non esiste affatto nelle risposte pubbliche. Trovate solo perche' le fonti sono state fatte girare su un sito vero. ## Perche' niente browser headless Misurato il 2026-08-17 sul VPS: **1,5 GB di RAM liberi su 3,8**, Chromium ne prende 500 MB–1 GB → OOM kill sui servizi con dati reali. Verificato il 2026-08-18 che non serve comunque: 153 voci si verificano sul DOM renderizzato che PageSpeed restituisce, e lo screenshot buono e' `final-screenshot`, non `fullPageScreenshot`. ## Lo stato di v2.5, per non ripartire dal posto sbagliato **In pausa dal 2026-08-19** per scelta: prima le modifiche all'hub, poi il motore. | Pezzo | Dove | Stato | |---|---|---| | Schema, 7 tabelle + rubrica 264 voci | `0017_audits.sql`, `checklist_items` | in produzione | | Le cinque fonti | `src/lib/audit/sources/` | **in prod ma inerti**: nessuna route le chiama | | Agent, sintetizzatore, pipeline, editor, pagina | `src/lib/audit/`, `src/app/{admin/audit,audit}` | **da scrivere** | I piani stanno in [`../../plans/`](../../plans/): `v2.5-audit-documento.md` (i tre livelli Radiografia / Prima-Dopo / Rotta come configurazioni di **un unico** documento) e `v2.5-audit-motore.md` (raccolta in parallelo → quattro sub-agent → sintetizzatore che **incrocia** le osservazioni in massimo 10 finding). ## L'agente, quando lo progetteremo Va in `.claude/agents/audit-*.md`, non qui. Non esiste ancora e non va abbozzato: il design dei quattro sub-agent cambiera' scrivendo il motore. Quando nascera' eredita le tre regole qui sopra — sono il perimetro, non il contorno.