Files
cyber-tesi/CLAUDE.md
T

132 lines
15 KiB
Markdown
Raw Normal View History

# CLAUDE.md — Schema della LLM Wiki
Schema: struttura, convenzioni, workflow. Leggilo all'inizio di ogni sessione. Utente e LLM lo fanno evolvere insieme; ogni modifica va registrata in `log.md`.
## Ruoli
- **Utente**: sceglie cosa ingerire, pone le domande, decide cosa conta.
- **LLM**: scrive e mantiene la wiki (pagine, link, indice, log, coerenza). L'utente non modifica `wiki/` a mano.
- Lingua: **italiano**. Titoli di fonti e termini tecnici restano nella lingua originale (l'Abstract della tesi è in inglese).
## Dominio
Tesi magistrale in Chimica Industriale (Università di Bologna, Dipartimento "Toso Montanari"), a.a. 2025-2026: **"Sintesi e caratterizzazione di copolimeri bottle brush foto-elettro attivi"**. Candidata: Aurora Luzi. Relatore: Dr. Stefano Scurti.
- **Tema:** semiconduttori polimerici emissivi π-coniugati con architettura bottle brush: scheletro DPP-3HT (polimerizzazione ossidativa con Fe(III)) e catene laterali di PCL ottenute per ROP dell'ε-caprolattone da gruppi OH pendenti.
- **Research question** (dall'Abstract e dal cap. 2): una architettura bottle brush può superare l'ACQ (Aggregation-Caused Quenching) allo stato solido, mantenendo l'integrità elettrochimica del core DPP?
- Risultati dichiarati nell'Abstract: il PCL agisce da spaziatore sterico e mantiene emissione nel rosso allo stato solido; l'Abstract riporta una correlazione tra % di DPP e allargamento del bandgap elettrochimico (le Conclusioni e §4.4.3 parlano di dipendenza non lineare con plateau; r.1228 dice «lineare»: vedi `difetti-dati`).
## Fonti (`raw/`, SOLA LETTURA — mai modificare, rinominare o cancellare, salvo riallineamento richiesto dall'utente)
| Percorso | Contenuto |
|---|---|
| `raw/tesi.docx` | Versione Word da cui `tesi.md` è stato riallineato il 2026-10-15 |
| `raw/tesi.md` | Sorgente canonico (1446 righe). Cap. 1 Introduzione (r.66), 2 Scopo (r.543), 3 Procedure sperimentali (r.560), 4 Discussione dei risultati (r.709), 5 Conclusioni (r.1306); bibliografia (Bibliografia, r.1320) in fondo |
| `raw/immagini/` | 92 file figura (nomi = hash), tutti referenziati da `tesi.md` o dal riassunto |
| `raw/immagini.json` | Catalogo di 80 figure logiche (76 numerate + 4 schemi di §3.2 senza numero): pannelli, didascalia stampata e generata, testo visibile, composti, concetti, contesto, qualità. La chiave `riassunto` cataloga le 11 figure del riassunto (`ris-fig-NN`): non entra in `stats`, ma `gen_figures.py` ne genera le note |
| `raw/riassunto_tesi.docx`, `raw/riassunto_tesi.md` | Riassunto di tesi, ingerito il 2026-10-20 (`wiki/riassunto-tesi.md`); il docx è la versione dell'utente, il md ne è l'allineamento. Le sue 11 figure (12 file, uno in comune con la tesi: fig-076) sono in `raw/immagini/` e catalogate in `immagini.json` (chiave `riassunto`) |
| `raw/bibliografia.json` | 63 riferimenti parsati con righe e sezioni di citazione; `text` è la fonte di verità, gli altri campi sono euristici |
| `raw/fonti/NN-cognome-anno.md` | Una scheda per riferimento (citazione verificata, DOI, abstract, frasi della tesi in cui è citato) |
I numeri di riga (`md_line`, `cited_in_md_lines`…) riferiscono `raw/tesi.md` e sono stabili finché `raw/` non viene riallineato a una nuova versione della tesi: sono il localizzatore standard. Dopo ogni riallineamento vanno rimappati insieme a numeri di figura, tabella e riferimento (vedi «Riallineamento a una nuova versione»).
Convenzioni di `tesi.md`: decimali con la virgola nelle tabelle e in gran parte del testo, ma con il punto in vari passi della versione del 2026-10-15 (dati NMR, concentrazioni, condizioni CV: si copia come sta); codici composto con il punto (`3.1b`); formule in `$...$`; citazioni `<sup>[N](#ref-N)</sup>`; apici/pedici in HTML. Anchor `#ref-N` e `#_TocNNN` non funzionano in Obsidian: nella wiki si traducono in wikilink.
## Architettura
```
CLAUDE.md index.md log.md
raw/ immutabile (vedi sopra)
scripts/gen_figures.py genera wiki/figures/ e wiki/figure-indice.md da raw/immagini.json
scripts/gen_bibliografia.py genera wiki/bibliografia.md da raw/bibliografia.json
scripts/lint.py controlli meccanici (link, orfane, frontmatter, numeri non in tesi.md)
wiki/
overview.md sintesi evolutiva, research question, risultati
tesi.md mappa capitolo/sezione → pagine wiki (unica pagina "source" della tesi)
riassunto-tesi.md mappa del riassunto di tesi (seconda fonte) → pagine wiki, figure e bibliografia
dati.md indice «grandezza → pagina» con intervalli di valori
campioni.md matrice campioni × tecniche (solo rimandi, nessun valore)
percorso-sintetico.md i quattro passi di sintesi con schemi, pagine e concetti
glossario.md sigle e simboli con rimando alla pagina pertinente
tabelle-indice.md le 15 tabelle e 12 equazioni → pagina dove stanno
figure-indice.md le figure per sezione (GENERATA dallo script)
bibliografia.md i 63 riferimenti (GENERATA dallo script), con link alle schede raw/fonti/
concepts/ meccanismi e concetti (ROP, grafting-from, ACQ, aggregati H/J, band gap, irreversibilità EC, P3HT, fluorescenza…)
compounds/ un file per composto numerato o polimero/campione, spezzato per argomento (dpp-2, dpp-2-voltammetria, copolimeri-*, bottle-brush-*)
techniques/ NMR, FT-IR, GPC, UV-Vis, fluorescenza, DSC, CV (hub + cv-teoria, cv-analisi-onset, cv-risultati)
figures/ note GENERATE dallo script (una per figura, non modificare a mano)
analyses/ query salvate; difetti-noti (hub) e sottopagine difetti-*; verifica-citazioni, riassunto-vs-tesi
```
Niente pagine `source` per capitolo (duplicherebbero la tesi) e niente `entities/` generica. Le pagine **hub** (es. `copolimeri-3a-3b-3c`, `fluorescenza`) hanno una sezione `## Struttura` con le **sottopagine**, che iniziano con «_Parte di [[hub]]_» e hanno un proprio `tesi_loc`. Le pagine di navigazione (`campioni`, `percorso-sintetico`, `glossario`, indici) contengono rimandi, non dati.
## Convenzioni pagine
- File `kebab-case.md`. Composti: `composto-32.md` con `aliases` (nome, codice come `3.1b`). Figure: `fig-026.md`.
- Link: wikilink `[[nome-file]]`, `[[nome|testo]]` per alias. Riferimenti bibliografici: `[[01-bao-2020|1]]` (link alla scheda in `raw/fonti/`; usare il numero della tesi).
- Frontmatter YAML:
```yaml
---
title: Titolo leggibile
type: concept | compound | technique | analysis | overview | figure
tags: [tag1, tag2]
created: YYYY-MM-DD
updated: YYYY-MM-DD
tesi_loc: "§4.2 r.812-840" # dove la tesi sostiene il contenuto
refs: [3, 12] # numeri della bibliografia citati (opzionale)
figures: ["fig-026"] # opzionale
status: draft | stable
---
```
- **Ogni affermazione non banale cita la posizione**: `(§4.2, Fig. 27, r.812)` e, se serve, il riferimento `[[01-bao-2020|1]]`. Niente affermazioni non riconducibili a `raw/`.
- Inferenze dell'LLM marcate _(inferenza)_. Se non sai, dillo; non inventare fonti o dati.
- Ogni pagina termina con `## Collegamenti`. Nessuna pagina orfana. Crea una pagina concetto solo se serve a ≥2 sezioni/figure o è centrale.
## Regole sui dati scientifici
- **Copia alla lettera**: valori, unità, condizioni (T, P, solvente, tempo, carico, resa/conversione), formule LaTeX, formule chimiche, nomi di composti e sigle (DPP, 3HT, ROP, PCL, ACQ, CV, GPC…) restano come nella tesi. Non tradurre, riassumere, convertire o arrotondare dati sperimentali. Decimali con la virgola come in `tesi.md`; eccezioni: Abstract, dati NMR, liste, DOI.
- **Procedure sperimentali (cap. 3):** non riscriverle; la wiki rimanda al paragrafo (`tesi_loc`) e riporta solo i dati necessari alla pagina.
- **Sospetti errori di estrazione** (formula, tabella, valore): confronta con la fonte originale se disponibile, **segnala e non correggere**. Valori da condizioni diverse non vanno confrontati senza dirlo.
- **Sicurezza:** niente procedure di sintesi pericolose oltre quanto riporta la tesi; riporta i pericoli noti dei reagenti se citati.
## Figure
- `wiki/figures/*.md`, `wiki/figure-indice.md` e `wiki/bibliografia.md` sono **derivate**: `python scripts/gen_figures.py` (figure e indice) e `python scripts/gen_bibliografia.py` le rigenerano da `raw/immagini.json`, riportando ogni campo (didascalie, descrizioni e testo visibile per pannello, composti, concetti, contesto, righe di citazione, note di revisione) e, in fondo a ogni nota, le pagine che la usano (link o embed) senza riassumere. Eccezione alla regola "solo l'LLM scrive in `wiki/`"; non modificarle a mano, correggi `raw/immagini.json` solo se l'utente lo chiede e poi rigenera.
- **Attendibilità:** solo `caption_printed` è testo della tesi. Descrizioni, `visible_text` e didascalia generata derivano dall'immagine e non sono verificati: valori letti da grafici o schemi (rese, picchi, potenziali) vanno confermati sull'immagine/tesi prima di riusarli.
- Le pagine concept/compound/technique richiamano le figure con `[[fig-026]]` o con l'embed `![[immagini/<file>]]` (da `panels[].embed`). Le figure con `flags` o `review_notes` (Figure 26, 27, 29, 58, 66, 67, 69 hanno discrepanze didascalia/testo; anche la 62, la 76, la 52 e lo schema `fig-x-94f3f4` hanno note) vanno citate con l'avvertenza.
- `compounds` nel catalogo sono numeri della tesi; `concepts` sono slug candidati, non nomi definitivi: crea la pagina solo se la regola dei ≥2 usi è soddisfatta.
## Regole di organizzazione dei dati
- Pagine sopra ~1.500 parole vanno spezzate per argomento in hub + sottopagine (es. `ciclovoltammetria` = procedura, `cv-teoria`, `cv-analisi-onset`; i risultati in `cv-risultati`); i link in entrata puntano alla sottopagina che contiene la tabella o l'equazione.
- Una tabella o un dato sta in **una sola pagina**: quella dove la tesi lo discute (per es. Tab. 5 in `dpp-2`, Tab. 14-15 in `cv-risultati`). Le altre pagine rimandano con wikilink; fanno eccezione i riepiloghi comparativi (es. in `uv-vis-fluorescenza`), che citano la tabella di origine.
- Le pagine riorganizzano per argomento, non per capitolo, senza eliminare informazioni: procedure con quantità in tabella, condizioni, assegnazioni e ragionamenti della tesi restano, con `tesi_loc` e righe.
- Composti sperimentali: `dpp-1`, `dpp-2`, `copolimeri-3a-3b-3c`, `bottle-brush-3-x`. La numerazione dei composti del cap. 1 (1-48) è un'altra: non confonderle.
## Difetti noti della tesi
Raccolti in `wiki/analyses/difetti-noti.md` (hub) e nelle sottopagine `difetti-bibliografia`, `difetti-figure`, `difetti-dati` (le altre pagine rimandano all'hub o alla sottopagina): bibliografia con voce 44 duplicata della 1; voci 20, 22, 36, 54 incomplete o con testo spurio; voce 55 in formato RIS grezzo (e citata per dati del P3HT); DOI errati nelle voci 47, 48 (corretto 10.1080/15583720802231833) e 49; voci 47, 49, 54 non identificabili; PDI di 3b (Tab. 9) incoerente con Mw/Mn; % DPP di 3c (35 vs 36); bandgap delle Conclusioni (3,42-4,30 eV) incoerente con Tab. 14; tre riferimenti incrociati rotti in §3.3; discrepanze figura/testo (anche Fig. 62, 76). Il segnaposto «paragrafo XX (XX)» e altri difetti della versione precedente non risultano più presenti.
## Workflow
### Ingest (per capitolo, non per fonte)
Ordine: Abstract/Introduzione/Scopo (concepts, research question) → Procedure sperimentali (compounds, techniques) → Discussione (dati, overview) → Conclusioni → bibliografia.
1. Leggi per intero il capitolo/sezione in `raw/tesi.md` e le figure collegate (`sections[].figure_ids`).
2. Dopo il primo capitolo, discuti 3–5 takeaway e chiedi cosa enfatizzare; poi procedi a blocchi senza chiedere ogni volta.
3. Crea/aggiorna `concepts/`, `compounds/`, `techniques/`; segnala discrepanze in `analyses/difetti-noti.md`.
4. Aggiorna `wiki/tesi.md` (mappa), `overview.md` se la sintesi cambia, `bibliografia.md` se tocchi riferimenti.
5. Rigenera le figure se `raw/immagini.json` è cambiato.
6. Aggiorna `index.md` e appendi a `log.md`.
### Riallineamento a una nuova versione della tesi
Su richiesta dell'utente, quando `raw/` riceve una nuova versione (docx):
1. Converti il docx in `raw/tesi.md` con le stesse convenzioni (anchor `_Toc`, citazioni `<sup>[N](#ref-N)</sup>`, tabelle pipe, immagini `immagini/<hash>`), riusando il markup esistente dove il testo è invariato. Le figure vettoriali del docx si rendono (es. LibreOffice) e si confrontano con i file esistenti: i file invariati restano, solo i nuovi si aggiungono, con nome = hash del file.
1b. Verifica le immagini contro il docx, non solo il testo: converti il docx in PDF (LibreOffice), estrai le figure e confrontale con `raw/immagini/`; per i grafici Excel/Word nativi confronta i dati di `word/charts/chartN.xml` con quelli dell'immagine (una figura può restare vecchia anche se testo e tabelle sono aggiornati: caso Fig. 72-74, 46, 54, 63).
2. Aggiorna `raw/immagini.json` (numerazione, righe, nuove figure con descrizioni non verificate), `raw/bibliografia.json` e le schede in `raw/fonti/` (rinomina `NN-…`, righe di citazione; nuove voci da Crossref); rigenera `wiki/figures/` e `wiki/bibliografia.md`.
3. Rimappa nella wiki righe, numeri di figura, tabella e riferimento, poi rivedi pagina per pagina i contenuti cambiati (valori, tabelle, formule) e aggiorna `difetti-noti`, `dati.md`, `tesi.md`, `index.md`, `log.md`. Pagine derivate obsolete si cancellano solo con conferma.
### Query
Leggi `index.md` e le pagine rilevanti (non rileggere `raw/` se la wiki basta); rispondi in italiano con citazioni `[[...]]` e `tesi_loc`; proponi di salvare in `analyses/` le risposte durevoli; log `query`.
### Lint (su richiesta o ogni ~10 ingest)
Esegui `python scripts/lint.py` (link rotti, pagine orfane, frontmatter, coerenza `figures`/`refs` con il corpo, figure citate per numero senza link né embed, figure senza pagina tematica, numeri non presenti in `raw/tesi.md`, slug concetto candidati). Poi controlli semantici a mano: contraddizioni, valori che non tornano con `raw/tesi.md`, pagine oltre ~1.500 parole da spezzare. Riporta; le correzioni meccaniche (spaziatura, frontmatter) si applicano subito, il resto dopo conferma. Log `lint`.
## index.md e log.md
- `index.md`: catalogo per categoria (Overview e navigazione, Tesi e bibliografia, Concetti, Composti, Tecniche, Figure, Analisi), voci `- [[pagina]] — riga di sintesi`; le sottopagine sono annidate sotto il loro hub; conteggi aggiornati. Le figure (80 della tesi e 11 del riassunto) non si elencano una per una: una riga con link alla cartella e il conteggio per tipo.
- `log.md`: append-only, mai riscrivere le voci vecchie. Prefisso `## [YYYY-MM-DD] tipo | titolo` con tipo ∈ `setup, ingest, query, lint, schema`. Parsing: `grep "^## \[" log.md | tail -5`.
## Regole d'oro
- Mai modificare `raw/`. Mai inventare dati, fonti o citazioni.
- Prima di cancellare o rinominare pagine chiedi conferma e aggiorna i link in entrata.
- Cambi allo schema: proponi, attendi ok, poi registra in `log.md` (tipo `schema`).
- Lavoro proporzionato: nessuna pagina "per dopo".