Il push era rimasto bloccato e la riga delle fonti diceva ancora "non in prod". Ora e' vero il contrario, ma "in produzione" da solo sarebbe fuorviante: i cinque moduli sono deployati e nessuna route li chiama. La riga dice entrambe le cose, perche' confondere *deployato* con *funzionante* e' il modo piu' rapido per credere di avere una feature che non esiste. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.7 KiB
gsd_state_version, milestone, milestone_name, status, stopped_at, last_updated, last_activity, progress
| gsd_state_version | milestone | milestone_name | status | stopped_at | last_updated | last_activity | progress | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.0 | v2.5 | Audit | executing | Phase 27 a metà: schema in prod, fonti scritte e provate sul campo. Prossimo: src/lib/audit/schema.ts + agents/. | 2026-08-19T13:20:00.000Z | 2026-08-19 -- v2.5 pushata su main e deployata (8000d56); motore ancora non richiamato da nessuna route |
|
Project State
Digest breve, per orientarsi. Narrativa e lezioni →
STATUS.md(root); requisiti →REQUIREMENTS.md; tutte le fasi →ROADMAP.md. Questo file resta sotto le 100 righe: lo impone il template GSD.
Project Reference
See: .planning/PROJECT.md · Core value: il cliente apre il link e vede a che punto è
il suo progetto, senza scrivere email. · Current focus: milestone v2.5 "Audit" —
il servizio di analisi sito diventa un documento privato su /audit/[slug].
Current Position
Phase: 27 of 30 — Motore di analisi
Plan: schema e fonti fatti; agent, sintetizzatore e pipeline da scrivere
Status: nessun bloccante — prossimo passo src/lib/audit/schema.ts + agents/
Last activity: 2026-08-18 — src/lib/audit/sources/ scritto e provato su giojello.com
Progress: [███░░░░░░░] 25%
Dove sta cosa
| Cosa | Dove | Stato |
|---|---|---|
| Schema audit (7 tabelle) | src/db/migrations/0017_audits.sql + src/db/schema.ts |
in produzione |
| Rubrica del motore, 264 voci | tabella checklist_items, sorgente scripts/data/checklist.json |
in produzione |
| Fonti del motore (5 moduli) | src/lib/audit/sources/ |
in produzione ma inerte: deployato, nessuna route lo chiama |
| Agent, sintetizzatore, pipeline | src/lib/audit/{schema,agents,pipeline}.ts |
da scrivere |
| Editor admin e pagina pubblica | src/app/admin/audit/, src/app/audit/[slug]/ |
da scrivere |
| L'unico audit prodotto finora | spike-audit-giojello.com.json (root, gitignorato) |
spike del 2026-08-16, zero rilevazioni |
| I due piani della milestone | ~/.claude/plans/ — …woolly-puddle.md (documento) + …radiant-valley.md (motore) |
fuori dal repo |
Come funziona il motore
Si incolla un URL. Nessun browser headless da nessuna parte.
- Raccolta in parallelo (
sources/, nessun LLM): PageSpeed, CrUX, Wayback, RDAP, robots/sitemap/JSON-LD, header. Ogni fonte fallisce in modo non fatale e dice perché. - Quattro sub-agent in parallelo (
agents/): checklist, visivo, storico, tecnico. Producono osservazioni, non finding. - Sintetizzatore che le incrocia: quattro osservazioni deboli su temi diversi diventano un finding solo con quattro evidenze indipendenti. Massimo 10, per impatto.
- Editor admin per rifinire, poi consegna su
/audit/[slug].
Vincolo che regge tutto: un numero entra solo se misurato, e dev'essere rintracciabile in audit_runs.raw.
Performance Metrics
Velocity: 21 plans completati (v2.1–v2.4). Phase 27: spike ~1h, schema ~1h, fonti ~2h.
Accumulated Context
Decisions
Log completo in PROJECT.md. Vive per il lavoro corrente:
- [2026-08-18] Il documento usa il design system dell'area admin — token semantici, Plus Jakarta Sans, Geist Mono per metriche e date,
StatusBadgeper gli impatti. Sostituisce la deroga tipografica del piano; i font sono già self-hostati danext/font/google, quindi la CSP è soddisfatta senza lavoro. - [2026-08-18] Nessun renderer headless — PageSpeed dà 153 audit sul DOM renderizzato, cioè le osservazioni visive che prima richiedevano screenshot a mano.
- [2026-08-18] Laboratorio ≠ campo, e la differenza è il risultato — Lighthouse dà 7 ms di risposta server, CrUX dà TTFB p75 3.553 ms. Da qui il nome
risposta_server_ms: con lo stesso nome il sintetizzatore li tratterebbe come un numero solo. - [2026-08-17] Il VPS non regge Chromium — RAM, non disco. È la ragione per cui l'opzione headless non torna.
- [2026-08-16] La checklist alimenta il MOTORE, non il documento — se diventa il rendering della checklist, torna a sembrare un audit automatico gratuito.
- [2026-08-16] Immagini — le due del redesign le carica l'utente, le due dello stato di fatto le scrive la pipeline. Emenda LOCKED #5 solo per gli asset di audit.
Pending Todos — nessuno (.planning/todos/ non esiste)
Blockers/Concerns
- Il copy fisso del template v1 non ha una fonte nel repo — il prototipo Giojello non c'è. Lo stile ora viene dal design system, ma testi e gerarchia dei blocchi vanno recuperati prima di Phase 30.
- Il caso "zero dati CrUX" non è ancora stato visto su un sito vero (test 5 del piano).
- Il 52% della checklist non è verificabile da HTML statico — quanto ne recuperino gli audit Lighthouse non è ancora misurato (test 3 del piano).
- Whitelist portale vuota per 3 clienti su 4 — si popola da
/admin/clients/<id>. .env.localpunta al DB di PRODUZIONE, non allineato a Coolify perADMIN_PASSWORD/NEXTAUTH_SECRET.- Ogni fase con schema: migration applicata a prod prima del push del codice.
- Debito design (DEBT-01) — ~40 file, ~450 occorrenze. Dettaglio in
STATUS.md.
Deferred Items
Vedi REQUIREMENTS.md § Backlog e § Rinviati esplicitamente da v2.5.
Session Continuity
Last session: 2026-08-18
Stopped at: src/lib/audit/sources/ (5 moduli) scritto e provato sul campo su giojello.com — giro completo 73 s, tutte le fonti hanno risposto. Build e lint puliti.
Next: (1) src/lib/audit/schema.ts + agents/ con validazione Zod dura; (2) pipeline.ts con heartbeat su audit_runs; (3) volume Coolify prima del deploy; (4) editor e pagina.
Resume file: None