docs(spec): renaming prodotto tht come Onda -1 isolata
Renaming richiesto in user review: Thoth (tht) e' il prodotto, PSD e' il cliente.
Nessun riferimento al contesto clinico nel codice.
Decisioni 8-10:
8. Rinomine: nsp->tht (comando+package+46 import), nsp-sessione->tht-sessione,
nsp-gate.js->tht-gate.js, chirone.*->tht.{example,test}.yaml (generici; il deploy
cliente crea il suo psd.yaml non-committato), THOTH_*->THT_* env.
9. Neutralizzazione riferimenti chirone/psd/policlinico/sandonato nei commenti/
docstring (resi generici o rimossi). Il contesto cliente vive SOLO nei file di
config reali (.env gitignored, workspace cliente non-committato).
10. Onda -1 isolata PRIMA del porting CLI: pytest resta 109 passed (rename verificato
da solo), poi il porting avviene col nome nuovo (niente doppio lavoro).
Ordine esecuzione aggiornato a 7 step (Onda -1 prima di tutto). Self-review:
corretti i residui incoerenti di nsp/chirone nello spec (righe che usavano ancora
i nomi vecchi dove dovevano essere tht). Residui rimasti sono legittimi (descrivono
il renaming o il path sorgente one-shot della copia evidence).
This commit is contained in:
@@ -13,12 +13,21 @@
|
||||
5. **Registro memory: locale per-workstation.** `registry.jsonl` vive in `harness/artifacts/memory/` su ciascuna workstation (NON condiviso). La F2 (applicazione) legge dal vectordb condiviso e, grazie all'arricchimento metadata (decisione 6), ricostruisce la decisione senza lookup nel registro. Il registro resta necessario solo per la F5 (promozione: scrive localmente + indicizza sul vectordb condiviso). Multi-workstation OK: le memorie si condividono via vectordb.
|
||||
6. **Arricchimento metadata memory vectordb**: `subject`/`detail`/`rationale` nel jsonb (vedi Sezione 3 punto 2). Correzione del gap ereditato da ChironeWp3. Reso possibile dal fatto che la tabella memory è vuota al momento del porting.
|
||||
7. **Evidence: dentro ThothII.** La cartella evidence (contenuto statico curato, 229 markdown) si sposta in `harness/evidence/`. ThothII diventa self-contained (vedi Onda 0b).
|
||||
8. **Renaming prodotto `tht` (Thoth = prodotto, PSD = cliente).** Il codice non porta traccia del contesto clinico. Rinomine: comando `nsp`→**`tht`**, package `nsp/`→**`tht/`** (46 file import), skill `nsp-sessione`→**`tht-sessione`**, gate `nsp-gate.js`→**`tht-gate.js`**, workspace `chirone.*`→**`tht.example.yaml`/`tht-test.yaml`** (generici-prodotto; un deploy cliente crea il suo `psd.yaml` non-committato). Variabili env `THOTH_*`→**`THT_*`** (uniformate al comando).
|
||||
9. **Neutralizzazione riferimenti cliente nel codice.** Commenti/docstring che menzionano "ChironeWp3", "PsdWp3", "DWH Chirone", "policlinico", "sandonato" vengono resi generici ("the reference implementation", "the DWH") o rimossi. Il contesto cliente (endpoint `supabase-...policlinicosandonato.it`, nomi schema `datawarehouse`) vive SOLO nei file di configurazione reali (`.env` gitignored, workspace cliente non-committato) — mai nel codice versionato né nei template.
|
||||
10. **Renaming come Onda -1 (isolata, prima del porting CLI).** Si fa come passo separato e verificato: dopo il rename, `pytest` deve restare **109 passed** (verifica che il renaming non ha rotto nulla). Poi il porting CLI (Onde 0-4) avviene già col nome nuovo `tht` — niente doppio lavoro. Isolare il renaming dal porting permette di debuggare l'uno indipendentemente dall'altro.
|
||||
|
||||
## Sezione 1 — Architettura e strategia di porting
|
||||
|
||||
Porting fedele con riscritture chirurgiche del drift, in ordine topologico (dipendenze radice prima), così ogni passo ha un'app che carica. Cinque onde:
|
||||
Porting fedele con riscritture chirurgiche del drift, in ordine topologico (dipendenze radice prima), così ogni passo ha un'app che carica. Sei onde:
|
||||
|
||||
```
|
||||
Onda -1 — renaming prodotto tht (ISOLATA, prima di tutto)
|
||||
nsp->tht (comando+package+46 import), nsp-sessione->tht-sessione,
|
||||
nsp-gate.js->tht-gate.js, chirone.*->tht.* workspace, THOTH_*->THT_* env.
|
||||
Neutralizzazione riferimenti chirone/psd/policlinico nei commenti/docstring.
|
||||
Verification: pytest resta 109 passed (rename non rompe nulla).
|
||||
|
||||
Onda 0 — backend mancanti (foglie)
|
||||
vendor/thoth_lsh, lshindex/, sqlcheck/, execute/, rest/execute.py,
|
||||
rest/explain.py, ctetest.py, report.py, datamart.py(stub)
|
||||
@@ -34,7 +43,7 @@ Onda 2 — vector layer
|
||||
|
||||
Onda 3 — cmd foglia (usano radici + vector)
|
||||
memory_cmd, search_cmd, evidence_cmd, db_cmd, decision_cmd
|
||||
+ arricchimento metadata memory (subject/detail/rationale in nsp/memory.py:
|
||||
+ arricchimento metadata memory (subject/detail/rationale in tht/memory.py:
|
||||
memory_vector_records) — correzione gap ereditato, vedi Sezione 3 punto 2
|
||||
|
||||
Onda 4 — cmd SQL/CTE (cluster sql_cmd)
|
||||
@@ -42,12 +51,12 @@ Onda 4 — cmd SQL/CTE (cluster sql_cmd)
|
||||
cte_cmd, datamart_cmd(stub), lsh_cmd (usa lshindex Onda 0)
|
||||
|
||||
Onda 0b — setup pre-sessione (dopo Onda 0 + Onda 4, prima della sessione L2)
|
||||
Cabla evidence nel workspace + .env, builda indice LSH sul workspace chirone-test.
|
||||
Cabla evidence nel workspace + .env, builda indice LSH sul workspace tht-test.
|
||||
NECESSARIO: senza di questo i claim D14/evidence della sessione L2 sono falsi
|
||||
(la F4 gira degradata, solo segnali vettoriali).
|
||||
```
|
||||
|
||||
Dopo ogni onda: `pytest` verde (109, nessuna regressione) + import smoke (`nsp <sub> --help` esce 0 per ogni nuovo sottocomando).
|
||||
Dopo ogni onda: `pytest` verde (109, nessuna regressione) + import smoke (`tht <sub> --help` esce 0 per ogni nuovo sottocomando).
|
||||
|
||||
## Sezione 2 — Porting CLI e drift (dettaglio)
|
||||
|
||||
@@ -57,23 +66,23 @@ Perché la sessione L2 validi davvero D14 (value-grounding) e F4 evidence-based
|
||||
|
||||
**Evidence:**
|
||||
- La cartella evidence è **contenuto statico curato a mano** (229 markdown, 11M, nessuno script generatore ETL). Verificato: è documentazione clinica/db, non output di un processo. Per il deploy multi-workstation self-contained, **si sposta dentro ThothII** in `harness/evidence/` (non più dipendenza dal path esterno `/Users/mp/Chirone/chirone/etl/docs`).
|
||||
- Operazione: `cp -r /Users/mp/Chirone/chirone/etl/docs harness/evidence` + aggiornare il default di `THOTH_DOCS_ROOT` a `harness/evidence` + blocco `evidence` nel `chirone-test.yaml`:
|
||||
- Operazione: `cp -r /Users/mp/Chirone/chirone/etl/docs harness/evidence` (path sorgente — l'unico riferimento al repo chirone, puro one-shot di copia) + aggiornare il default di `THT_DOCS_ROOT` a `harness/evidence` + blocco `evidence` nel `tht-test.yaml`:
|
||||
```yaml
|
||||
evidence:
|
||||
source_root: ${THOTH_DOCS_ROOT}
|
||||
evidence_dir: evidence
|
||||
```
|
||||
- **Nota sicurezza:** la cartella va revisionata per contenuto sensibile (dati paziente?) prima di committare nel repo. Se contiene PII, va nel `.gitignore` e distribuita fuori banda, non nel repo pubblico. Da verificare prima del commit.
|
||||
- Verifica: `nsp search --kind evidence "<termine>"` ritorna risultati non vuoti su un termine noto.
|
||||
- Verifica: `tht search --kind evidence "<termine>"` ritorna risultati non vuoti su un termine noto.
|
||||
|
||||
**LSH index (value-grounding D14a):**
|
||||
- Dipende da `nsp.lshindex` (portato in Onda 0) + `nsp lsh build` (lsh_cmd, portato in Onda 4).
|
||||
- Build sul workspace chirone-test (UNA volta, prima della sessione):
|
||||
- Dipende da `tht.lshindex` (portato in Onda 0) + `tht lsh build` (lsh_cmd, portato in Onda 4).
|
||||
- Build sul workspace tht-test (UNA volta, prima della sessione):
|
||||
```bash
|
||||
nsp lsh build --workspace workspaces/chirone-test.yaml
|
||||
tht lsh build --workspace workspaces/tht-test.yaml
|
||||
```
|
||||
Questo campiona i valori distinti delle colonne di testo dal DWH via REST (`db.sampling.unique_values_for_lsh_rest`), costruisce i MinHash + LSH, e li serializza in `indexes/` (path del workspace).
|
||||
- Verifica: `nsp search "<valore noto>"` ritorna match multi-colonna (es. "ablazione" su più colonne) e `test_value_grounding_real` (L2) smette di skip-piare.
|
||||
- Verifica: `tht search "<valore noto>"` ritorna match multi-colonna (es. "ablazione" su più colonne) e `test_value_grounding_real` (L2) smette di skip-piare.
|
||||
- Prerequisito: la build richiede il DWH raggiungibile (VPN) + embeddings (Ollama attivo). È un'operazione one-shot, non a ogni sessione.
|
||||
|
||||
**Ordine:** Onda 0b si esegue DOPO Onda 0 (lshindex) e Onda 4 (lsh_cmd), e PRIMA della sessione L2. È un'operazione dell'operatore (build indice), non codice nuovo — ma va nel piano come step esplicito con la sua verifica.
|
||||
@@ -247,12 +256,13 @@ Verifica sullo schema reale: entrambi i concetti hanno fact table dedicate (`fac
|
||||
|
||||
### Ordine di esecuzione e definition of done
|
||||
|
||||
1. Onda 0 (backend) → `pytest` verde + import smoke
|
||||
2. Onda 1 (radici CLI + require_phase_or_exit + phase advance/reopen/show) → `pytest` verde + `nsp phase advance --help` esce 0
|
||||
3. Onda 2-4 (cmd foglia + SQL/CTE) → `pytest` verde + `nsp --help` mostra tutti i sottocomandi
|
||||
4. Skill riscritta → script di coerenza (no PsdWp3, cmd citati = cmd registrati)
|
||||
5. Onda 0b (setup pre-sessione) → cablare evidence + `nsp lsh build` su chirone-test; verifica `nsp search` ritorna LSH + evidence
|
||||
6. Sessione L2 (manuale, con l'operatore) → criteri 1-6 sopra
|
||||
1. Onda -1 (renaming tht) → `pytest` verde 109 passed + `tht --help` funziona + `grep -rw nsp` = 0 nel codice
|
||||
2. Onda 0 (backend) → `pytest` verde + import smoke
|
||||
3. Onda 1 (radici CLI + require_phase_or_exit + phase advance/reopen/show) → `pytest` verde + `tht phase advance --help` esce 0
|
||||
4. Onda 2-4 (cmd foglia + SQL/CTE) → `pytest` verde + `tht --help` mostra tutti i sottocomandi
|
||||
5. Skill riscritta (`tht-sessione`) → script di coerenza (no PsdWp3/chirone, cmd citati = cmd registrati)
|
||||
6. Onda 0b (setup pre-sessione) → copiare evidence in `harness/evidence/` + `tht lsh build` su tht-test; verifica `tht search` ritorna LSH + evidence
|
||||
7. Sessione L2 (manuale, con l'operatore) → criteri 1-6 sopra
|
||||
|
||||
**Definition of done**: Onde 0-4 + skill completate con `pytest` verde + sessione L2 che soddisfa i criteri 1-4 (avvio, gate, persistenza, avanzamento). I criteri 5-6 (anti-bypass, artefatti finali) sono verification aggiuntiva nella stessa sessione.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user