# Legacy Pre-Migration Audit

Playbook read-only per comprendere sistematicamente un sistema legacy prima di una riscrittura o migrazione. Non include implementazione, cutover o modifiche al sistema.

## Obiettivo

Costruire un corpus Markdown verificabile e riutilizzabile per decisioni successive su database, funzionalità, interfaccia documentata, integrazioni, configurazione, deployment, sicurezza e operatività.

## 1. Intake e scoping

Raccogli, quando disponibili:

* tecnologie e framework;
* età o versione approssimativa;
* criticità note;
* obiettivo della migrazione e stack target, se noto;
* perimetro funzionale;
* repository, branch e baseline;
* ambienti e database autorizzati;
* vincoli su segreti, PII e dati cliente;
* domini prioritari.

Registra fonti mancanti e decisioni che richiedono chiarimento; non completarle con assunzioni.

## 2. Pianificazione dei domini

Seleziona solo i domini rilevanti; non sono tutti obbligatori.

| Dominio | Scope | Fonti | Baseline | Output atteso | Stato |
| ------- | ----- | ------ | -------- | ------------- | ----- |
| ... | ... | ... | ... | ... | ... |

Domini possibili: database, funzionalità, interfaccia documentata, integrazioni, configurazione, deployment, sicurezza e operatività.

## 3. Analisi database

Quando l'accesso è autorizzato e necessario, verifica:

* schema, relazioni, vincoli e indici;
* query critiche e accessi dati rilevanti;
* dati e volumi, solo se autorizzati;
* differenze tra ambienti;
* anti-pattern e debito tecnico;
* rischi di migrazione;
* evidenze e limiti.

Non assumere accesso al database: in sua assenza dichiara il limite e le informazioni necessarie.

## 4. Analisi delle funzionalità

Per ogni dominio prioritario verifica:

* entry point;
* flusso end-to-end;
* regole di business e algoritmi non ovvi;
* configurazioni;
* accesso dati;
* dipendenze e integrazioni;
* errori, fallback e side effect;
* problemi osservati ed evidenze.

## 5. Analisi dell'interfaccia documentata

Usa solo fonti statiche o documentali disponibili: template, HTML, CSS, JavaScript, componenti, route, validazioni, documentazione e screenshot o materiali forniti dall'utente.

Non simulare runtime o UI. Per comportamenti dinamici non verificabili, registra il punto aperto, descrivi la validazione necessaria e non dichiararlo verificato.

## 6. Integrazioni, configurazione e deployment

Verifica, dalle fonti disponibili:

* API e servizi esterni;
* protocolli e autenticazione documentata;
* scambio file, code e job;
* variabili e configurazioni;
* build, asset e scheduler;
* procedure operative, dipendenze esterne e vincoli di compatibilità.

## 7. Compilazione del corpus

Il GPT può proporre o produrre un indice generale, un file Markdown per dominio, collegamenti relativi, diagrammi ASCII, matrice delle dipendenze, mappa delle evidenze ed elenco dei punti aperti.

Non scrivere mai file nel repository target. Quando è richiesto un corpus multi-file, produci il contenuto nella risposta o come artefatti separati non applicati al repository, soltanto se gli strumenti disponibili lo consentono, senza modificare file, branch o commit. Attribuisci ogni affermazione a una fonte e redigi dati sensibili.

## 8. Gap analysis finale

Verifica:

* parti non documentate;
* dipendenze interdominio non spiegate;
* assunzioni non confermate;
* ambienti non verificati;
* dati non accessibili;
* integrazioni non verificabili;
* decisioni necessarie prima della modernizzazione;
* test di parità necessari.

## 9. Quality gate

Prima della consegna applica il quality gate definito in `analysis-workflow.md`.

## Output minimo

```md
# Legacy audit — [sistema]

## Scope e baseline
## Fonti consultate
## Domini analizzati
## Evidenze osservate
## Inferenze tecniche
## Rischi
## Punti aperti
## Gap analysis
## Handoff e validazioni necessarie
```

## Criteri di successo

* Ogni dominio prioritario ha fonti verificabili.
* Inferenze e gap sono espliciti.
* I rischi sono collegati a evidenze.
* Il corpus è utilizzabile per decisioni successive.
* Nessuna modifica è stata applicata al sistema.
* I comportamenti non verificabili sono chiaramente dichiarati.
