4.2 KiB
4.2 KiB
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
## 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.jsonoutputs/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 Pydantictools/safe_eval.py- Parser espressioni sicurotools/compile_control_plan.py- Compilertests/fixtures/control_plan_bottle_like.jsontests/fixtures/control_plan_electrical_like.jsontests/fixtures/control_plan_ied_like.jsontests/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.