# Migration Conventions

Questa directory media trasferimenti file cross-version, cross-branch o cross-environment.

Due persone AI operano qui:

- Provider
- Consumer

## Responsabilità umana

L'utente umano fornisce le strutture target esatte.

Le AI non devono indovinare, inventare, normalizzare o estrapolare strutture target.

Quando il layout target differisce dal layout sorgente, fornirlo in `target-structures.md` o direttamente nel prompt utente.

## File di tracking

Il file di tracking è:

```text
touched-files.md
```

Deve restare minimale.

L'avanzamento viene tracciato in blocchi iterazione compatti.

Esempio:

````md
# Iteration 9
- client/update/i18n/labels.it.properties → MERGED
- client/update/i18n/labels.en.properties → MERGED
- client/update/i18n/labels.fr.properties → MERGED
````

## Stati ammessi

- `TO ADD`: il Provider marca un nuovo file che deve essere copiato o creato nel progetto target.
- `TO MERGE`: il Provider marca logica che deve essere fusa in un file target esistente.
- `ADDED`: il Consumer marca un file creato con successo nel progetto target.
- `MERGED`: il Consumer marca logica fusa con successo nel progetto target.

## Regole Provider

Il Provider può appendere nuove iterazioni al file di tracking.

Il Provider assegna solo stati `TO ADD` o `TO MERGE`.

I path devono rispecchiare la struttura target fornita dall'utente.

Per `TO MERGE`, file o frammenti devono contenere solo la logica minima richiesta dalla funzionalità.

## Regole Consumer

Il Consumer non deve creare iterazioni.

Il Consumer legge item pendenti, li integra nel progetto target e aggiorna gli stati inline a `ADDED` o `MERGED`.

Il Consumer non deve eseguire refactor non correlati.

## Regole path

Usa solo path relativi.

Usa `/` come separatore.

Non usare path assoluti.

Non usare segmenti `..`.

Non usare path Windows con drive o path UNC.

Non usare segmenti `.` o segmenti vuoti.

Non usare whitespace iniziale o finale nei path.
