# Boundary Client, Client/Core e Patch

Usa questa reference quando devi decidere dove collocare una modifica CFML o come preparare una patch cliente.

## Routing rapido

- `core`: sviluppo standard Platform, da preferire quando il rilascio puo seguire la roadmap.
- `client/core`: sviluppo standard anticipato su progetto cliente, ma indipendente dalle personalizzazioni client.
- `client patch`: correzione locale su una specifica versione Platform cliente.
- `cliente deploy` legacy pre-Platform: non trattarlo come standard Platform; usa il routing legacy della skill.

## `client/core`

- Creare sotto il progetto cliente una cartella `core` con la stessa alberatura del core Platform.
- Creare sotto `client/cflib` una cartella `core` con la stessa alberatura delle cflib core.
- I `cfg` di sviluppo high value restano sotto `client/cfg`.
- I CFC di `client/core` devono estendere i corrispondenti CFC core e ridefinire solo i metodi necessari.
- Le personalizzazioni client pure devono estendere `client/core` se esiste, altrimenti il core.
- Le pagine high value vanno comunque aggiunte al perimetro per facilitare il porting.

## Override lato client

- Usa anche `core-client-override-pattern.md`.
- Il namespace del componente si ricava dal path reale del file core.
- Se il componente e' risolto da factory, allinea la stessa chiave nella catena di factory client corretta.
- Il file client da solo non basta: senza mapping factory il runtime continua a risolvere il core.

## `client patch`

- Salvare i file sotto `client/patches/{platform-version}` usando il tag esatto della versione.
- Dentro la patch sono ammessi solo `core/` e `cflib/`, mantenendo la struttura originale.
- Se aggiungi un nuovo file o riporti una funzione core nel client, fai prima un commit con la versione originale del tag.
- Nel commit originale usare `[ci skip]`.
- Fare poi un secondo commit con la modifica vera.
- Non usare merge squash, altrimenti perdi la distinzione originale+modifica.

## JS e CSS nelle patch

- Non modificare manualmente JS o CSS minificati come patch cliente.
- In questi casi va coinvolto il Product Team.

## Sviluppo vs deploy

- In sviluppo 7.1+ i file patch vanno copiati, non spostati.
- In QA/Produzione seguire il workflow di installazione patch del cliente.

## Esempio locale incluso nella skill

Per un esempio concreto di `client/core`, usa il materiale locale in `../templates/client-core/zeroquattro/`.

## Verifiche minime

- collocazione coerente: `core`, `client/core`, `client patch` o legacy;
- chain di factory coerente;
- per patch: due commit distinti e struttura cartelle corretta;
- per high value: perimetro e porting considerati fin dall'inizio.
