# Metodo del GoodScroll Privacy Browser Observer v4.0.1

## Scopo

La versione 4 è un osservatore tecnico riproducibile del solo stato pubblico del
browser. Non assegna punteggi, non certifica il GDPR e non converte l'assenza di
un'evidenza in prova di assenza assoluta.

Una singola esecuzione apre una URL HTTP(S) in un profilo Chrome/Chromium nuovo,
non compila moduli, non effettua accessi e non accetta consensi. Dopo un'attesa
determinata raccoglie:

- richieste di rete ridotte a schema, host, porta, percorso redatto, metodo,
  tipo di risorsa e stato HTTP;
- metadati dei cookie, senza il campo `value`;
- chiavi redatte, tipo e dimensione dei valori di Local Storage e Session
  Storage, senza restituire i valori;
- nomi redatti di database e object store IndexedDB;
- nomi redatti delle cache e numero di richieste, senza URL delle richieste;
- scope e URL script redatti dei Service Worker;
- versioni runtime/browser/driver e hash SHA-256 di codice, dipendenze,
  configurazione e contratto metodologico.

## Esiti

Ogni fase usa esclusivamente:

- `observed`: raccolta riuscita con almeno un elemento;
- `not_observed`: raccolta riuscita e vuota;
- `not_tested`: capacità o prerequisito non disponibile;
- `inconclusive`: errore o risultato non interpretabile.

`not_observed` vale soltanto per quella sessione, URL, versione, ora e ambiente.
Non significa «assente» in generale.

## Regola fail-closed

Tutte le fasi elencate in `data/observation_config.json` sono obbligatorie. Se
una manca o termina `not_tested`/`inconclusive`, se la navigazione fallisce o se
l'esecuzione viene interrotta:

1. il processo termina con codice diverso da zero;
2. non vengono creati `report.html` o `report.pdf`;
3. viene salvato soltanto `diagnostic.json`, marcato inconclusivo, e il relativo
   `manifest.json`.

I report neutrali vengono creati solo dopo il completamento tecnico di tutte le
nove fasi. `report.html` e `report.pdf` derivano dallo stesso oggetto di
osservazione strutturato, serializzato in `observation.json`; nessuno dei due
avvia una raccolta ulteriore o applica classificazioni autonome. Se la
generazione di uno dei due formati fallisce, entrambi vengono rimossi e il run
produce soltanto diagnostica e manifest inconclusivo. Anche quando sono
completi, i report non contengono una conclusione legale.

Il PDF è nativo, testuale e in formato A4. Usa margini costanti, numeri di
pagina, testo con accenti italiani e tabelle essenziali in scala di grigi. Non
contiene grafici, immagini, icone, punteggi, indicatori semaforici o proclami.
Riporta il target in forma redatta, la natura locale o di produzione dedotta
dall'URL, gli esiti delle nove fasi, i limiti strutturali, le versioni runtime e
gli hash metodologici. Non include percorsi del filesystem.

## Riduzione e redazione

Il programma non scrive valori di cookie, Web Storage, header, body, email,
UUID o token. Query e fragment delle URL sono sostituiti da indicatori booleani;
email, UUID, JWT e identificatori ad alta entropia nei percorsi o nei nomi sono
redatti prima della serializzazione. Gli errori non includono URL complete o
percorsi Windows locali.

I performance log di Chrome sono interpretati in memoria e non vengono copiati
nei file di output.

## Riproducibilità

Le risorse relative (`data/observation_config.json` e
`data/privacy_contract.json`) sono risolte dalla directory della suite, non
dalla directory corrente. Ogni report registra i loro hash, l'hash del lock
delle dipendenze e un hash deterministico dell'albero sorgente. Prima della
navigazione tutte le versioni installate vengono confrontate con i pin esatti
del lock; una divergenza interrompe il run.

Il driver deve essere fornito con `--driver-path`. Selenium Manager è vietato
per impostazione predefinita e diventa disponibile solo con l'opzione esplicita
`--use-selenium-manager`; questa scelta può comportare una risoluzione o un
download di rete e viene registrata.

Ogni esecuzione usa una directory univoca aperta in modalità esclusiva. I file
esistenti non vengono sovrascritti.

## Limiti strutturali

Un browser non può verificare RLS, ACL, funzioni server, log dei fornitori,
retention, backup, cancellazione completa, esportazione completa, basi
giuridiche o conformità normativa. Non può coprire automaticamente stati
autenticati, interazioni manuali, altri dispositivi o comportamenti futuri.

Questi limiti fanno parte del contratto versionato
`data/privacy_contract.json` e sono ripetuti nel report.
