135 lines
4.2 KiB
Markdown
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.
|
|
|
|
---
|