ics-simlab-config-gen-claude/diario.md

135 lines
4.2 KiB
Markdown

# 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.
---