# diario.md - Diario di Lavoro per Tesi ## Differenza tra diario.md e appunti.txt | File | Scopo | Stile | |------|-------|-------| | **appunti.txt** | Note operative rapide. Bullet point su fix, comandi, errori. Aggiornato durante il lavoro. | Conciso, tecnico, no narrativa | | **diario.md** | Registro giornaliero per tesi. Documenta decisioni, rationale, risultati. Aggiornato dopo richiesta lunga (>30 parole). | Strutturato, explain "why", thesis-ready | **Regola pratica**: - Scopri un bug? → appunti.txt (subito) - Finisci richiesta lunga (>30 parole)? → diario.md (riassunto ragionato) --- ## Template Entry ```markdown ## YYYY-MM-DD ### Obiettivo della sessione [Cosa si intende ottenere in questa sessione] ### Stato iniziale - Branch: `main` | `feature/xxx` - Ultimo commit: `abc1234` - Input usato: `prompts/xxx.txt` oppure N/A ### Azioni eseguite 1. [Azione 1] 2. [Azione 2] 3. ... ### Decisioni chiave e rationale - **Decisione**: [cosa] **Perché**: [motivazione tecnica o di design] ### Osservazioni e risultati - [Metrica o output concreto, es. "tank_level oscilla tra 200-800"] - [Screenshot/log rilevante se disponibile] ### Comandi di validazione + esito ```bash # Comando eseguito python3 validate_fix.py # Esito: ✅ PASS / ❌ FAIL / ⚠️ non verificato ``` ### Artefatti prodotti - `outputs/scenario_run/configuration.json` - `outputs/scenario_run/logic/plc1.py` - [altri path] ### Issue aperti - [ ] [Problema non risolto] - [ ] [Prossimo step necessario] ### Prossimo micro-step [Azione concreta per la prossima sessione] ``` --- ## Entries --- ## 2026-01-30 ### Obiettivo della sessione Implementare ControlPlan v0.1: un artefatto dichiarativo per specificare la logica HIL senza codice Python free-form. Permette all'LLM di generare spec strutturate che vengono compilate deterministicamente. ### Stato iniziale - Branch: `main` - Ultimo commit: `c9bc37b` - Input usato: Specifica di design nel prompt utente ### Azioni eseguite 1. Ricerca architettura esistente (IR, compile_ir.py, process_spec) 2. Progettazione schema ControlPlan v0.1 con Pydantic 3. Implementazione safe_eval.py per espressioni sicure (AST whitelist) 4. Implementazione compile_control_plan.py (compiler) 5. Creazione test fixtures (bottle, electrical, IED) 6. Integrazione con build_scenario.py (Step 2c) 7. Scrittura test suite (24 test) ### Decisioni chiave e rationale - **Decisione**: Usare AST parsing per validare espressioni **Perché**: Sicurezza: blocca import, attribute access, subscript. L'LLM non può generare codice malevolo. - **Decisione**: Threading automatico per >1 task **Perché**: Semplifica lo schema - l'utente non deve pensare a threading. Il compiler lo aggiunge se servono task paralleli. - **Decisione**: Separare init e params nel schema **Perché**: init sono variabili di stato (modificabili), params sono costanti (documentazione + validazione). - **Decisione**: Supportare profili (Gaussian, ramp, step) come tipo di task separato **Perché**: Pattern comune: generare segnali di test, disturbi, setpoint variabili nel tempo. ### Osservazioni e risultati - Schema flessibile: supporta loop con condizionali, playback con profili - Compiler genera codice valido Python (verificato con compile()) - 24 test passano tutti - Auto-detect di outputs/control_plan.json in build_scenario.py ### Comandi di validazione + esito ```bash python3 -m pytest tests/test_compile_control_plan.py -v # ✅ 24 passed python3 -m tools.compile_control_plan \ --control-plan tests/fixtures/control_plan_bottle_like.json \ --out /tmp/test_cp_bottle --overwrite # ✅ Compiled 1 HIL logic file(s) ``` ### Artefatti prodotti - `models/control_plan.py` - Schema Pydantic - `tools/safe_eval.py` - Parser espressioni sicuro - `tools/compile_control_plan.py` - Compiler - `tests/fixtures/control_plan_bottle_like.json` - `tests/fixtures/control_plan_electrical_like.json` - `tests/fixtures/control_plan_ied_like.json` - `tests/test_compile_control_plan.py` ### Issue aperti - [ ] PLC control_plan non ancora implementato (solo HIL per ora) - [ ] Test end-to-end con ICS-SimLab non eseguito - [ ] Manca generazione LLM di control_plan.json ### Prossimo micro-step Test end-to-end: copiare fixture bottle_like come outputs/control_plan.json e eseguire build_scenario + ICS-SimLab. ---