# Tecnica di generazione del piano CTE (Agent View Generation) Adattata dallo step CTE di AV-SQL. I CTE catturano incrementalmente l'informazione necessaria a rispondere alla domanda riscritta, SENZA rispondere alla domanda finale (quella e' la fase successiva). Regole (dalla disciplina AV-SQL, valgono alla lettera): 1. Copia ESATTAMENTE i nomi di tabelle e colonne dal contesto schema fornito (`tht schema render --format mschema-text --table ...`). Mai inventare oggetti non presenti. 2. Tieni sempre le chiavi (PK e colonne di join) nei CTE: serviranno dopo. 3. Meglio una colonna in piu' che una in meno: se non sei sicuro, includila. 4. Un CTE = un sottoinsieme informativo con uno scopo chiaro (es. "ricoveri con ablazione nel 2025"), nominato in snake_case parlante. 5. I CTE possono referenziarsi in catena; l'ultimo del file e' quello che `tht cte test` interroghera'. 6. Ogni file in sessions//ctes/.sql contiene SOLO il blocco `WITH ... AS (...)` (anche multi-CTE), SENZA SELECT finale. Una riga `SELECT ...` dopo il blocco WITH causa un errore in `tht cte test`: non aggiungerla mai. I CTE vengono testati **e approvati (decisione `cte_approved`) nell'ordine del piano**: il CTE successivo è testabile SOLO dopo che il precedente è stato approvato con `kind:"cte_result"`. La CLI rifiuta i CTE fuori ordine (exit 5). 7. Filtri: usa i valori di campo verificati con `tht search` (match LSH sui valori reali), non valori immaginati. Presentazione al reviewer, per ogni CTE del piano: > **** — scopo: > Tabelle usate: (tutte dal perimetro promosso) > ```sql > WITH AS (...) > ``` Dopo la conferma (o per revisione diretta del reviewer) scrivi il file e testa: `tht cte test --session `. Su errore o warning rilevanti, discuti la correzione col reviewer prima di riscrivere il file. Se il reviewer modifica il file a mano, RILEGGILO prima di ritestare.