@mcptoolshop/style-dataset-lab 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.es.md +111 -59
  3. package/README.fr.md +117 -67
  4. package/README.hi.md +109 -70
  5. package/README.it.md +111 -60
  6. package/README.ja.md +116 -76
  7. package/README.md +58 -2
  8. package/README.pt-BR.md +119 -64
  9. package/README.zh.md +108 -67
  10. package/bin/sdlab.js +50 -1
  11. package/lib/adapters/ai-toolkit.js +187 -30
  12. package/lib/adapters/comfyui-workflows.js +84 -9
  13. package/lib/asset-ingest.js +575 -0
  14. package/lib/asset-masks.js +323 -0
  15. package/lib/asset-source.js +1176 -0
  16. package/lib/canon-author.js +350 -0
  17. package/lib/canon-review-gate.js +205 -0
  18. package/lib/colab-launcher-guards.js +285 -0
  19. package/lib/export.js +1 -1
  20. package/lib/freeze-gate.js +3 -0
  21. package/lib/generated-provenance.js +178 -5
  22. package/lib/lane1-render.js +668 -0
  23. package/lib/memory-store.js +663 -0
  24. package/lib/model-licences.js +305 -0
  25. package/lib/npy-meta.js +130 -0
  26. package/lib/png-meta.js +512 -0
  27. package/lib/records.js +54 -8
  28. package/lib/reingest-selected.js +15 -1
  29. package/lib/reingest.js +27 -3
  30. package/lib/run-manifest.js +59 -11
  31. package/lib/train-runs.js +214 -0
  32. package/lib/verifier.js +3 -0
  33. package/lib/verify-chain.js +367 -0
  34. package/package.json +2 -2
  35. package/scripts/asset-ingest.js +160 -0
  36. package/scripts/canon-draft.js +82 -0
  37. package/scripts/canon-freeze.js +4 -0
  38. package/scripts/colab/REAL_SERVICE_ASSUMPTIONS.md +14 -0
  39. package/scripts/colab/ai-toolkit-override-py315.txt +45 -0
  40. package/scripts/colab/colab_window.sh +587 -0
  41. package/scripts/colab/lane1_render.py +970 -0
  42. package/scripts/colab/launch_guards.py +564 -0
  43. package/scripts/colab/launch_lane1_stub.sh +309 -0
  44. package/scripts/colab/launch_lane3_stub.sh +366 -0
  45. package/scripts/colab/remote_runner.py +59 -0
  46. package/scripts/doctor.js +1 -0
  47. package/scripts/generate.js +38 -12
  48. package/scripts/verify.js +67 -0
package/README.it.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</a> | <a href="README.pt-BR.md">Português (BR)</a>
2
+ <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.md">English</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -13,13 +13,13 @@
13
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
14
14
  </p>
15
15
 
16
- Scrivi le tue regole visive. Genera immagini. Valuta ogni immagine in base a tali regole. Pubblica i risultati come dati di addestramento verificabili e versionati, quindi utilizza i modelli addestrati in flussi di lavoro di produzione reali e reintroduci gli output migliori nel tuo corpus.
16
+ Scrivi le tue regole visive. Genera immagini. Valuta ogni immagine in base a tali regole. Pubblica i risultati come dati di addestramento versionati e verificabili, quindi metti a disposizione i modelli addestrati per l'utilizzo in flussi di lavoro di produzione reali e reintroduci gli output migliori nel tuo corpus.
17
17
 
18
- Style Dataset Lab collega le indicazioni che hai fornito sullo stile artistico al set di dati da cui effettivamente esegui l'addestramento, quindi completa il ciclo fino alla fase di produzione. Definisci una serie di regole: regole sulla silhouette, vincoli sulla palette, linguaggio dei materiali o qualsiasi altro elemento rilevante per il tuo progetto. Il flusso di lavoro genera candidati, li valuta in base alle regole e raggruppa gli elementi approvati in set di dati riproducibili, dove ogni record spiega perché è stato incluso.
18
+ Style Dataset Lab collega le informazioni che hai scritto sullo stile artistico al set di dati da cui effettivamente esegui l'addestramento, quindi completa il ciclo fino alla produzione. Definisci una serie di regole: regole sulla silhouette, vincoli sulla palette, linguaggio dei materiali, tutto ciò che è importante per il tuo progetto. La pipeline genera candidati, li valuta in base a tali regole e raggruppa il lavoro approvato in set di dati riproducibili, in cui ogni record spiega perché è stato incluso.
19
19
 
20
- Successivamente, l'ambiente di lavoro di produzione prende il sopravvento: compila le specifiche per la generazione a partire dai dati del progetto, eseguile tramite ComfyUI, valuta gli output, genera in batch fogli di espressione e schede ambientali, seleziona i risultati migliori e reintroducili come nuovi candidati. Il ciclo si chiude: produci, seleziona, rivedi, rafforza.
20
+ Quindi, la workstation di produzione prende il controllo: compila le specifiche di generazione a partire dai dati di riferimento del progetto, le esegue tramite ComfyUI, valuta gli output, produce in batch le schede di espressione e le tavole di ambientazione, seleziona i risultati migliori e li reintroduce come nuovi candidati. Il ciclo si chiude: produci, seleziona, rivedi, rafforza.
21
21
 
22
- ## Il flusso di lavoro
22
+ ## La pipeline
23
23
 
24
24
  ```bash
25
25
  # Write your canon. Scaffold the project.
@@ -63,11 +63,57 @@ sdlab select --run run_2026-04-16_001 --approve 001.png,003.png
63
63
  sdlab reingest selected --selection selection_2026-04-16_001
64
64
  ```
65
65
 
66
- Quest'ultimo comando è il punto cruciale. Gli output selezionati vengono reintrodotti nello stesso processo di revisione insieme a tutti gli altri elementi. Il corpus si espande e le regole rimangono valide.
66
+ Quest'ultimo comando è il punto cruciale. Gli output selezionati vengono sottoposti allo stesso processo di revisione di tutti gli altri. Il corpus cresce e le regole rimangono valide.
67
67
 
68
- ## Definizione del canone
68
+ ## Il flusso di asset: esportazioni 3D come dati di addestramento
69
69
 
70
- Before the dataset pipeline runs, the `sdlab canon *` namespace turns your project's canon entity store into the three projections training and production actually consume — and locks the entries that must not drift.
70
+ `sdlab ingest` accetta le immagini grezze senza riserve. `sdlab asset ingest` richiede un **contratto**.
71
+
72
+ Quando un asset 3D supera la fase di accettazione, il rendering da N angolazioni diverse ti fornisce una vista coerente *per costruzione*, una proprietà che la diffusione per ogni vista non può garantire. Il flusso di asset accetta queste esportazioni come dati di addestramento che contengono informazioni sulla provenienza:
73
+
74
+ ```bash
75
+ # Validate an export's manifest end to end, run the gates, write nothing
76
+ sdlab asset ingest ~/exports/dragon_dense --project my-project --dry-run
77
+
78
+ # Register it: records, candidates, masks, channels, receipt
79
+ sdlab asset ingest ~/exports/dragon_dense --project my-project
80
+ ```
81
+
82
+ La directory di esportazione contiene un manifesto `asset-source.json` (schema **1.3.0**) che dichiara
83
+ i suoi canali, le bande della palette, le soglie, il verdetto di accettazione, il registro dello stile, come
84
+ i rendering sono stati creati e la loro provenienza. sdlab verifica ogni dichiarazione
85
+ con i byte effettivi e rifiuta l'intero caricamento in caso di violazione: nulla viene registrato
86
+ se il manifesto non è valido.
87
+
88
+ **Il punto di connessione:** sdlab fornisce il meccanismo, l'asset fornisce la semantica. sdlab non esegue mai il ray tracing,
89
+ non esegue mai il rendering e non impara mai che un canale chiamato "provenienza" è speciale. Verifica,
90
+ misura, registra e raggruppa. Il significato dei numeri rimane con l'asset.
91
+
92
+ Cosa garantisce il contratto:
93
+
94
+ | fase | cosa viene verificato |
95
+ |---|---|
96
+ | **schema** | forma, ID, bande della palette ben formate e un verdetto di accettazione che è letteralmente `"accepted"` |
97
+ | **containment** | ogni percorso di riferimento si risolve *all'interno* della directory di esportazione (è un input non attendibile) ed esiste |
98
+ | **encoding** | l'intestazione PNG corrisponde alla codifica dichiarata; un'intestazione NPY corrisponde al dtype e alla forma dichiarati. Un manifesto che "sembra corretto" ma non corrisponde ai suoi byte è la classe di errore che questo flusso esiste per evitare |
99
+ | **categorical** | le immagini PNG indicizzate dimostrano che PLTE ⊆ palette dichiarata; i canali filtrati con `nearest` ottengono una decodifica dei pixel *esaustiva*; le immagini NPY categoriche ottengono una scansione esaustiva dei valori |
100
+ | **gates** | il controllo della palette viene eseguito per ogni rendering, utilizzando le bande e le soglie del manifesto: un rendering non valido viene rifiutato in modo evidente e segnalato, non accettato silenziosamente |
101
+
102
+ I record vengono caricati **senza curatela** (`judgment: null`) con `provenance.source: "asset"`, contenendo
103
+ il blocco di accettazione letteralmente, gli hash per file, la posizione e l'orientamento della telecamera, le misurazioni, il registro dello stile dichiarato e il fotogramma di generazione e il seme per immagine. Quindi,
104
+ vengono sottoposti alla stessa curatela di tutti gli altri record.
105
+
106
+ Il caricamento segnala anche ciò che un manifesto *non* dichiara: un registro di stile sconosciuto, una
107
+ mancanza di `identity.subject_name`, l'assenza di informazioni sulla provenienza della generazione, come **avvisi** piuttosto che
108
+ come errori. Questi vengono inclusi nella ricevuta e stampati sulla CLI. Una lacuna di cui nessuno è a conoscenza è una lacuna
109
+ che nessuno può colmare; e poiché un manifesto può *dichiarare* che i suoi rendering sono derivazioni deterministiche senza un seme proprio, il flusso non segnala mai una lacuna per un'esportazione che è corretta.
110
+
111
+ Contratto completo, la scala di convalida e la motivazione di ogni campo:
112
+ [docs/asset-lane-design.md](docs/asset-lane-design.md).
113
+
114
+ ## Creazione del canone
115
+
116
+ Prima che la pipeline del set di dati venga eseguita, lo spazio dei nomi `sdlab canon *` trasforma l'archivio di entità del canone del tuo progetto nelle tre proiezioni che l'addestramento e la produzione effettivamente utilizzano, e blocca le voci che non devono cambiare.
71
117
 
72
118
  ```bash
73
119
  # Build three projections from the canon entity store:
@@ -83,63 +129,65 @@ sdlab canon freeze kael_maren --project my-project --reason "prologue portrait l
83
129
  sdlab canon drift --project my-project
84
130
  ```
85
131
 
86
- `canon build` è basato sull'indirizzamento dei contenuti: il suo output è identificato da un `canon_sha` e memorizzato nella cache, quindi una versione invariata del set di dati viene ricostruita istantaneamente. `canon freeze` registra ogni "freeze" rispetto a una specifica build e lo aggiunge a un registro di controllo `freeze-events.jsonl`: le voci `frozen` rifiutano esplicitamente la rigenerazione, le voci `soft-advisory` rifiutano per impostazione predefinita (è possibile aggirare questa limitazione con `--i-know`). `canon drift` ricalcola l'hash di ogni voce monitorata e segnala qualsiasi elemento che è stato modificato rispetto all'ultima build pulita.
132
+ Un modello locale può anche creare il canone, ma non può decidere in merito. `sdlab canon draft <class_id> --endpoint <url> --brief "<text>" --out <path>` richiede a un server compatibile con OpenAI e con loopback esclusivo una voce del canone e dei suggerimenti, e le scrive con `status: "draft"`, `judgment: null` e il modello di creazione stampato su ogni output. Una bozza non può essere congelata finché una persona non la approva: la fase di congelamento rifiuta qualsiasi voce creata da un modello senza un'approvazione umana, una motivazione e l'hash della bozza esatta che è stata approvata.
87
133
 
88
- Flusso di lavoro completo nel manuale: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/) e [Two-LoRA stacking](handbook/two-lora-stacking/).
134
+ `canon build` è indirizzabile in base al contenuto: il suo output è identificato da un `canon_sha` e memorizzato nella cache, quindi una ricostruzione del canone non modificato viene eseguita istantaneamente. `canon freeze` testimonia ogni congelamento rispetto a una build specifica e aggiunge una traccia di controllo `freeze-events.jsonl`: le voci `frozen` rifiutano esplicitamente la rigenerazione, le voci `soft-advisory` rifiutano per impostazione predefinita (bypass con `--i-know`). `canon drift` ricalcola l'hash di ogni voce monitorata e segnala qualsiasi cosa che si sia spostata dall'ultima build pulita.
135
+
136
+ Flusso di lavoro completo nel manuale: [Creazione del canone](handbook/canon-build/), [Congelamento del canone](handbook/canon-freeze/) e [Stacking a due livelli di LoRA](handbook/two-lora-stacking/).
89
137
 
90
138
  ## Cosa produce
91
139
 
92
- Sette artefatti del set di dati e un ambiente di lavoro di produzione completo. Ogni artefatto è collegato ai suoi predecessori, in modo da poter risalire a qualsiasi record di addestramento fino alla regola che lo ha approvato.
140
+ Sette artefatti del set di dati e una workstation di produzione completa. Ogni artefatto è collegato ai suoi predecessori, in modo da poter risalire a qualsiasi record di addestramento fino alla regola che lo ha approvato.
93
141
 
94
142
  | Artefatto | Cos'è |
95
143
  |----------|-----------|
96
144
  | **Snapshot** | Selezione di record congelati con impronta di configurazione. Ogni inclusione ha una motivazione esplicita. |
97
- | **Split** | Partizione train/val/test in cui le famiglie di soggetti non superano i confini. |
145
+ | **Split** | Partizione di addestramento/validazione/test in cui le famiglie di soggetti non attraversano mai i confini. |
98
146
  | **Export package** | Set di dati autonomo: manifesto, metadati, immagini, suddivisioni, scheda del set di dati, checksum. |
99
- | **Eval pack** | Attività di test consapevoli del canone: copertura delle corsie, divieto di modifiche, ancoraggio/oro, continuità dei soggetti. |
100
- | **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`). La stessa base, formato diverso. |
101
- | **Eval scorecard** | Valutazione per attività con esito positivo/negativo basata sulla valutazione degli output generati rispetto ai pacchetti di valutazione. |
102
- | **Implementation pack** | Esempi di prompt, errori noti, test di continuità e indicazioni per la reintroduzione. |
147
+ | **Eval pack** | Attività di test che tengono conto del canone: copertura delle corsie, deriva proibita, riferimento/modello, continuità del soggetto. |
148
+ | **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`). La stessa verità, formato diverso. |
149
+ | **Eval scorecard** | Valutazione per ogni attività: approvazione/rifiuto in base al punteggio degli output generati rispetto ai pacchetti di valutazione. |
150
+ | **Implementation pack** | Esempi di prompt, errori noti, test di continuità e indicazioni per il re-inserimento dei dati. |
103
151
 
104
152
  L'ambiente di lavoro di produzione aggiunge:
105
153
 
106
154
  | Superficie | Cosa fa |
107
155
  |---------|-------------|
108
- | **Compiled brief** | Istruzioni di generazione deterministiche dal profilo del flusso di lavoro + dati del progetto. |
156
+ | **Compiled brief** | Istruzione di generazione deterministica dal profilo del flusso di lavoro + verità del progetto. |
109
157
  | **Run** | Artefatto di esecuzione congelato: breve descrizione + seed + output ComfyUI + manifesto. |
110
- | **Critique** | Valutazione strutturata multidimensionale degli output rispetto al canone. |
111
- | **Batch** | Produzione coordinata multi-slot (fogli di espressione, schede ambientali, pacchetti di silhouette). |
112
- | **Selection** | Artefatto decisionale creativo: quali output sono stati scelti, perché e da dove provengono. |
113
- | **Re-ingest** | Gli output selezionati vengono reintrodotti come record candidati con la cronologia completa della generazione. |
158
+ | **Critique** | Valutazione strutturata multidimensionale degli output di esecuzione rispetto al canone. |
159
+ | **Batch** | Produzione coordinata multi-slot (schede di espressione, pannelli ambientali, pacchetti di silhouette). |
160
+ | **Selection** | Artefatto di decisione creativa: quali output sono stati scelti, perché e da dove provengono. |
161
+ | **Re-ingest** | Gli output selezionati vengono restituiti come record candidati con la completa provenienza della generazione. |
114
162
 
115
163
  ## Perché esiste
116
164
 
117
- I dati di addestramento sono l'artefatto più importante in qualsiasi flusso di lavoro di intelligenza artificiale visiva. Ma la maggior parte dei dati di addestramento è una cartella di immagini senza cronologia, senza traccia delle valutazioni e senza collegamento con le regole di stile che avrebbero dovuto seguire.
165
+ I dati di addestramento sono l'artefatto più importante in qualsiasi pipeline di intelligenza artificiale visiva. Ma la maggior parte dei dati di addestramento è una cartella di immagini senza cronologia, senza una traccia di valutazione e senza un collegamento alle regole di stile che avrebbe dovuto seguire.
118
166
 
119
- Style Dataset Lab rende esplicita questa connessione. La tua costituzione definisce le regole. La tua rubrica definisce le dimensioni della valutazione. I tuoi record di curatela registrano la valutazione. Il tuo legame con il canone dimostra la connessione. E il tuo set di dati conserva tutto questo come informazioni strutturate, ricercabili e riproducibili.
167
+ Style Dataset Lab rende esplicita la connessione. La tua costituzione definisce le regole. La tua rubrica definisce le dimensioni del punteggio. Le tue registrazioni di curatela documentano la valutazione. Il tuo vincolo di canone dimostra la connessione. E il tuo set di dati porta tutto questo avanti come verità strutturata, ricercabile e riproducibile.
120
168
 
121
- Il risultato pratico: quando il tuo LoRA subisce modifiche indesiderate, puoi chiedere *perché*. Quando il tuo prossimo ciclo di addestramento richiede dati migliori, sai esattamente quali record sono quasi corretti e quale singola regola hanno violato. Quando un nuovo membro del team chiede qual è il linguaggio visivo del progetto, la risposta non è una bacheca Figma, ma una costituzione ricercabile con 1.182 esempi valutati.
169
+ Il risultato pratico: quando il tuo LoRA devia, puoi chiedere *perché*. Quando la tua prossima sessione di addestramento necessita di dati migliori, sai esattamente quali record sono quasi fallimenti e quale singola regola hanno violato. Quando un nuovo membro del team chiede qual è il linguaggio visivo del progetto, la risposta non è una bacheca Figma, ma una costituzione ricercabile con 1.182 esempi valutati.
122
170
 
123
- ## Testato in produzione
171
+ ## Dimostrato in produzione
124
172
 
125
- Questo non è un ambiente di test. Due reali modelli LoRA sono stati utilizzati per intero: lo stesso ciclo canonico → curatela → addestramento → distribuzione, agli estremi opposti dello spettro della curatela.
173
+ Questa non è una pipeline di dimostrazione. Due veri e propri style-LoRA sono stati implementati completamente — lo stesso ciclo canone → curatela → addestramento → implementazione, alle estremità opposte dello spettro della curatela.
126
174
 
127
- - **[Tallow Fen](handbook/case-study-tallow-fen/)** (progettazione di creature): un set di dati canonico creato da zero, con circa il 34% di approvazioni su 293 record curati (169 rifiutati: il filtro è rigoroso). Distribuito `tallow_fen_style_v3.safetensors` @ 1.5 su `qwen-image`.
128
- - **[Rustline](handbook/case-study-rustline/)** (progettazione concettuale): un set di dati canonico denso e preformato, con circa il 96% di approvazioni su 180 record. Distribuito `rustline_v3ckpt_1500.safetensors` @ 1.0 su `qwen-image`, riutilizzato a valle da un secondo progetto.
175
+ - **[Tallow Fen](handbook/case-study-tallow-fen/)** (progettazione di creature) — un canone di bestiario creato da zero, **~34% di approvazione** su 293 record curati (169 rifiutati — il filtro rifiuta in modo rigoroso). Implementato `tallow_fen_style_v3.safetensors` @ 1.5 su `qwen-image`.
176
+ - **[Rustline](handbook/case-study-rustline/)** (progettazione di concept) — canone denso e preformato, **~96% di approvazione** su 180 record. Implementato `rustline_v3ckpt_1500.safetensors` @ 1.0 su `qwen-image`, riutilizzato a valle da un secondo progetto.
129
177
 
130
- Lo stesso flusso di lavoro, due profili di produzione: il filtro di curatela è reale (rifiuta in modo rigoroso gli argomenti controversi) e un set di dati canonico ben definito produce un'elevata percentuale di accettazione.
178
+ La stessa pipeline, due profili di produzione: il filtro di curatela è reale (rifiuta in modo rigoroso su soggetti aperti) e un canone disciplinato produce un'alta accettazione.
131
179
 
132
180
  ## Cinque domini, regole reali
133
181
 
134
- Non semplici modelli di esempio. Ogni dominio viene fornito con regole della costituzione adatte alla produzione, definizioni delle corsie, rubriche di valutazione e vocabolario di gruppo.
182
+ Non modelli di esempio. Ogni dominio viene fornito con regole di costituzione di livello di produzione, definizioni di corsie, rubriche di valutazione e vocabolario di gruppo.
135
183
 
136
184
  | Dominio | Corsie | Cosa viene valutato |
137
185
  |--------|-------|-----------------|
138
- | **game-art** | personaggio, ambiente, oggetto di scena, interfaccia utente, nave, interno, attrezzatura | Silhouette su scala di gioco, identificazione della fazione, usura e invecchiamento |
139
- | **character-design** | ritratto, figura intera, rotazione a 360 gradi, foglio di espressioni, posa d'azione | Proporzioni, logica del costume, personalità, chiarezza dei gesti |
140
- | **creature-design** | concetto, ortografico, studio dettagliato, azione, riferimento alla scala, habitat | Anatomia, logica evolutiva, distinzione della silhouette |
186
+ | **game-art** | personaggio, ambiente, oggetto di scena, interfaccia utente, nave, interno, attrezzatura | Silhouette su scala di gioco, leggibilità della fazione, usura e invecchiamento |
187
+ | **character-design** | ritratto, figura intera, rotazione, scheda di espressioni, posa d'azione | Proporzioni, logica del costume, personalità, chiarezza della gestualità |
188
+ | **creature-design** | concept, ortografico, studio dei dettagli, azione, riferimento di scala, habitat | Anatomia, logica evolutiva, distinzione della silhouette |
141
189
  | **architecture** | esterno, interno, paesaggio urbano, dettaglio strutturale, rovina, paesaggio | Struttura, coerenza dei materiali, prospettiva, coerenza dell'epoca |
142
- | **vehicle-mech** | esterno, cabina di pilotaggio, componente, schema, foglio di silhouette, variante danneggiata | Logica meccanica, linguaggio del design, punti di accesso, narrazione dei danni |
190
+ | **vehicle-mech** | esterno, cabina di pilotaggio, componente, schema, scheda di silhouette, variante di danno | Logica meccanica, linguaggio del design, punti di accesso, narrazione del danno |
143
191
 
144
192
  ## Struttura del progetto
145
193
 
@@ -167,22 +215,23 @@ projects/my-project/
167
215
 
168
216
  ## Proprietà di affidabilità
169
217
 
170
- Queste non sono semplici aspirazioni. Sono applicate rigorosamente.
218
+ Queste non sono aspirazionali. Sono applicate.
171
219
 
172
- - **Gli snapshot sono immutabili.** L'impronta della configurazione (SHA-256) dimostra che nulla è stato modificato. Gli ID vengono assegnati in modo atomico, quindi due esecuzioni simultanee non possono sovrapporsi nella stessa directory.
173
- - **Le suddivisioni impediscono la dispersione e il controllo che lo verifica è indipendente.** Le famiglie di soggetti (per identità, discendenza o radice ID normalizzata) non attraversano mai i confini delle partizioni e un secondo controllo deriva nuovamente l'identità del soggetto da zero anziché rileggere la mappa utilizzata dalla suddivisione stessa. Una scheda del set di dati afferma solo "dispersione: nessuna (verificata)" quando entrambi i controlli sono stati eseguiti correttamente; una suddivisione precedente al secondo controllo indica esattamente questo.
174
- - **I manifest sono contratti congelati.** Hash dell'esportazione + impronta della configurazione e `validate` ricalcola l'hash di ogni file elencato in `checksums.txt`: quindi, la sostituzione di un'immagine all'interno di un'esportazione completata viene rilevata, anche per i manifest creati prima che questo controllo esistesse.
175
- - **Le esecuzioni definiscono il loro grafo esatto.** Ogni generazione registra `comfy_workflow_sha` + hash del contenuto del modello/LoRA + policy dei seed, quindi una serie può essere riprodotta byte per byte. Gli script JS e Python sono vincolati a un hash identico tramite un test che li avvia entrambi. L'hashing del modello è facoltativo (`--hash-models`) e non viene mai fabbricato: un file irrisolvibile registra `sha256: null` con una nota.
176
- - **Nessun modello verifica il proprio output.** I giudizi registrano `judged_by_model` e `generator_model`; se questi sono sempre lo stesso modello, viene visualizzato un avviso.
177
- - **Un giudizio indica chi l'ha creato.** `eligibility audit` distingue i giudizi scritti da una persona dai giudizi generati da uno script di massa, quindi una motivazione che descrive una categoria anziché un'immagine non può essere considerata come curatela.
178
- - **La misurazione non è una valutazione.** `sdlab measure` associa numeri a un record. Non imposta mai un giudizio, un adattamento o un'approvazione e, quando una misura non è definita per un'immagine, registra `null` anziché un numero plausibile.
220
+ - **Gli snapshot sono immutabili.** L'impronta di configurazione (SHA-256) dimostra che non sono state apportate modifiche. Gli ID vengono acquisiti in modo atomico, quindi due esecuzioni concorrenti non possono sovrapporsi in una singola directory.
221
+ - **Le suddivisioni prevengono perdite di dati e il controllo che lo attesta è indipendente.** Le famiglie di soggetti (per identità, discendenza o ID normalizzato) non attraversano mai i confini delle partizioni e un secondo controllo deriva nuovamente l'identità del soggetto da zero anziché rileggere la mappa utilizzata dalla suddivisione stessa. Una scheda del set di dati afferma solo che non ci sono "perdite di dati" quando entrambi i controlli vengono eseguiti e superati; una suddivisione precedente al secondo controllo afferma esattamente questo.
222
+ - **I manifest sono contratti vincolanti.** Hash di esportazione + impronta di configurazione e `validate` ricalcola l'hash di ogni file elencato da `checksums.txt`, quindi la sostituzione di un'immagine all'interno di un'esportazione completata viene rilevata, anche per i manifest creati prima dell'esistenza di tale controllo.
223
+ - **Le esecuzioni definiscono il loro grafo esatto.** Ogni generazione registra `comfy_workflow_sha` + hash del contenuto del modello/LoRA + policy di seed, quindi un ciclo può essere riprodotto byte per byte. Gli esecutori JS e Python sono vincolati a un hash identico a livello di byte da un test che li avvia entrambi. L'hashing del modello è opzionale (`--hash-models`) e non viene mai falsificato: un file irrisolvibile registra `sha256: null` con una nota.
224
+ - **Nessun modello verifica il proprio output.** I giudizi registrano `judged_by_model` e `generator_model`; viene generato un avviso se sono sempre lo stesso modello.
225
+ - **Un giudizio indica chi lo ha creato.** `eligibility audit` distingue i giudizi scritti da una persona dai giudizi generati da uno script di massa, quindi una motivazione che descrive una categoria anziché un'immagine non può essere considerata una curatela.
226
+ - **La misurazione non è una sentenza.** `sdlab measure` associa numeri a un record. Non stabilisce mai un giudizio, un adattamento o un'approvazione e, quando una misurazione non è definita per un'immagine, registra `null` anziché un numero plausibile.
227
+ - **Un rilascio può dimostrare da dove proviene ogni immagine.** `sdlab verify --project <name>` esamina la catena offline per ogni record: il proprietario e la licenza nel record, la voce del canone a cui era vincolato (tramite hash), la licenza di ogni modello e LoRA che lo ha creato (ID SPDX, URL della licenza, la data in cui è stato letto e l'hash del file) e l'hash del flusso di lavoro nel manifest dell'esecuzione. Un collegamento mancante fa fallire il controllo anziché superarlo.
179
228
  - **Gli adattatori non possono modificare la verità.** Layout diverso, stessi record. Nessuna aggiunta, nessuna rimozione, nessuna riclassificazione.
180
- - **Gli output generati vengono reinseriti attraverso la revisione.** Nessun bypass. Curatela e associazione come per tutto il resto. Le immagini generate esternamente entrano nello stesso modo tramite `sdlab ingest`, senza curatela preliminare.
181
- - **I fallimenti sono visibili.** Un record mancante, un'immagine che non può essere posizionata o una didascalia che non può essere creata interrompe un pacchetto di esportazione o addestramento anziché ridurlo silenziosamente.
229
+ - **Gli output generati vengono reintrodotti tramite la revisione.** Nessun bypass. Curare e vincolare come tutto il resto. Le immagini generate esternamente entrano nello stesso modo tramite `sdlab ingest`, senza curatela.
230
+ - **I fallimenti sono visibili.** Un record mancante, un'immagine non collocabile o una didascalia che non può essere creata interrompe un'esportazione o un pacchetto di addestramento anziché ridurlo silenziosamente.
182
231
 
183
232
  ## Star Freight
184
233
 
185
- Il repository include un esempio completo funzionante: 1.182 record, 5 fazioni, 7 percorsi, 24 regole costitutive, 892 risorse approvate, 2 profili di addestramento. Un canone visivo di fantascienza RPG, completamente curato.
234
+ Il repository include un esempio completo e funzionante: 1.182 record, 5 fazioni, 7 percorsi, 24 regole costitutive, 892 risorse approvate, 2 profili di addestramento. Un canone visivo di un RPG fantascientifico, completamente curato.
186
235
 
187
236
  ```bash
188
237
  git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
@@ -194,7 +243,7 @@ sdlab split build --project star-freight # zero subject leakage
194
243
 
195
244
  ## Formati downstream
196
245
 
197
- `sdlab` possiede il set di dati. La conversione del formato è gestita da [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e altro ancora. `repo-dataset` esegue il rendering; non decide mai l'inclusione.
246
+ `sdlab` possiede il set di dati. La conversione del formato è gestita da [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e altro. `repo-dataset` esegue il rendering; non decide mai l'inclusione.
198
247
 
199
248
  ## Installazione
200
249
 
@@ -206,7 +255,7 @@ Richiede Node.js 20+ e [ComfyUI](https://github.com/comfyanonymous/ComfyUI) su l
206
255
 
207
256
  ### Prova senza ComfyUI
208
257
 
209
- È possibile esplorare l'intera interfaccia non di generazione (ispezione, curatela, snapshot, suddivisione, esportazione) utilizzando il progetto Star Freight incluso, senza installare ComfyUI o scaricare alcun peso SDXL.
258
+ È possibile esplorare l'intera superficie non di generazione (ispezione, curatela, snapshot, suddivisione, esportazione) utilizzando il progetto Star Freight incluso senza installare ComfyUI o scaricare alcun peso SDXL.
210
259
 
211
260
  ```bash
212
261
  # Scaffold a fresh project (no ComfyUI needed)
@@ -219,13 +268,13 @@ sdlab project doctor --project test
219
268
  sdlab snapshot create --dry-run --project star-freight
220
269
  ```
221
270
 
222
- `sdlab project doctor` validates every project config (constitution, lanes, rubric, terminology) and reports eligibility without touching the GPU. Any command that mutates generated state accepts `--dry-run` to preview the effect first.
271
+ `sdlab project doctor` convalida ogni configurazione del progetto (costituzione, percorsi, rubrica, terminologia) e segnala l'idoneità senza toccare la GPU. Qualsiasi comando che modifica lo stato generato accetta `--dry-run` per visualizzare in anteprima l'effetto.
223
272
 
224
273
  Se si dimentica `--project`, la CLI torna al primo progetto che trova in `projects/` e stampa un avviso: passare `--project` esplicitamente per disattivarlo.
225
274
 
226
275
  ### Ripresa di un'esecuzione interrotta
227
276
 
228
- Le lunghe esecuzioni di generazione possono essere riprese senza ripetere il lavoro completato:
277
+ Le lunghe esecuzioni possono essere riprese senza ripetere il lavoro completato:
229
278
 
230
279
  ```bash
231
280
  # Skip subjects whose record + image are already on disk.
@@ -237,7 +286,7 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
237
286
  sdlab batch generate --resume batch_2026-04-22_001 --project my-project
238
287
  ```
239
288
 
240
- Entrambi i comandi funzionano perché ogni slot scrive la sua voce del manifest in modo atomico al termine; un arresto anomalo durante l'esecuzione non corrompe mai lo stato parziale.
289
+ Entrambi i comandi funzionano perché ogni slot scrive la voce del manifest in modo atomico al termine: un arresto anomalo a metà esecuzione non corrompe mai lo stato parziale.
241
290
 
242
291
  ## Risoluzione dei problemi
243
292
 
@@ -247,26 +296,28 @@ Modalità di errore comuni e soluzioni:
247
296
  ComfyUI non è in esecuzione. Avviare ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) e confermare con `curl http://127.0.0.1:8188/system_stats`. Per puntare a un host/porta diverso, impostare `COMFY_URL=http://host:port`.
248
297
 
249
298
  **`missing checkpoint` / `LoRA weight not found`**
250
- Il profilo del flusso di lavoro fa riferimento a un file modello che non si trova nelle cartelle `models/checkpoints/` o `models/loras/` di ComfyUI. Aprire `projects/<project>/workflows/profiles/<profile>.json`, individuare il campo `checkpoint` o `lora` e scaricare il peso di riferimento oppure sostituirlo con uno già disponibile. Rieseguire `sdlab project doctor --project <project>` per confermare la correzione.
299
+ Il profilo del flusso di lavoro fa riferimento a un file di modello che non si trova nella cartella `models/checkpoints/` o `models/loras/` di ComfyUI. Aprire `projects/<project>/workflows/profiles/<profile>.json`, individuare il campo `checkpoint` o `lora` e scaricare il peso di riferimento oppure sostituirlo con uno che si ha già. Rieseguire `sdlab project doctor --project <project>` per confermare la correzione.
251
300
 
252
301
  **Errori `sdlab project doctor`**
253
302
  Doctor restituisce codici di errore strutturati. Alcuni comuni:
254
303
  - `E_PROJECT_NOT_FOUND`: la directory del progetto non esiste in `projects/`. Controllare l'ortografia.
255
- - `E_CONFIG_INVALID`: uno dei cinque file di configurazione JSON non ha superato la convalida dello schema. Il campo `hint` indica il file e il campo problematici.
256
- - `E_RECORD_DRIFT`: l'impronta della configurazione di un record non corrisponde più alla sua origine. Curare o riassociare come suggerito.
304
+ - `E_CONFIG_INVALID`: uno dei cinque file di configurazione JSON non ha superato la convalida dello schema. Il campo `hint` indica il file e il campo errati.
305
+ - `E_RECORD_DRIFT`: l'impronta di configurazione di un record non corrisponde più alla sua origine. Curare o vincolare nuovamente come suggerito.
257
306
 
258
- **Avviso `No --project specified, falling back to <name>`**
259
- Un avviso lieve. Passare `--project <name>` esplicitamente per selezionare il progetto corretto e disattivare l'avviso.
307
+ **`No --project specified, falling back to <name>`**
308
+ Un avviso leggero. Passare `--project <name>` esplicitamente per selezionare il progetto corretto e disattivare l'avviso.
260
309
 
261
- **Painterly / VRAM out-of-memory issues**
262
- See `docs/internal/HANDOFF.md` for the painterly denoise tuning notes. In short: lower the denoise strength, reduce batch size, or switch to a smaller checkpoint in your workflow profile.
310
+ **Problemi di memoria VRAM / "Painterly"**
311
+ Consultare `docs/internal/HANDOFF.md` per le note sulla regolazione del denoise "painterly". In breve: ridurre la forza del denoise, ridurre la dimensione del batch o passare a un checkpoint più piccolo nel profilo del flusso di lavoro.
263
312
 
264
- **Reporting bugs**
265
- File an issue at https://github.com/mcp-tool-shop-org/style-dataset-lab/issues with your sdlab version (`sdlab --version`), Node version (`node -v`), the full command, and the structured error output. A bug-report template prefills the fields.
313
+ **Segnalazione di bug**
314
+ Aprire un problema su https://github.com/mcp-tool-shop-org/style-dataset-lab/issues con la versione di sdlab (`sdlab --version`), la versione di Node (`node -v`), il comando completo e l'output di errore strutturato. Un modello di segnalazione di bug precompila i campi.
266
315
 
267
316
  ## Sicurezza
268
317
 
269
- Solo locale. Nessun telemetria, nessuna analisi, nessuna richiesta esterna. Le immagini rimangono sulla GPU e sul file system.
318
+ Locale per impostazione predefinita. Nessun telemetria, nessuna analisi e nessuna richiesta esterna dalla CLI `sdlab`: le immagini rimangono sulla GPU e sul file system e `canon draft` rifiuta qualsiasi endpoint che non sia loopback.
319
+
320
+ L’unica eccezione è l’opzione di consenso esplicito. `scripts/colab/` contiene i kit di avvio per eseguire un rendering o un passaggio di addestramento LoRA sul proprio account Google Colab. Caricano solo i file che vengono specificati, vengono eseguiti entro un limite di spesa definito dal saldo attuale del proprio account Colab e interrompono la propria sessione all’uscita. Questi kit sono **sperimentali**: non hanno ancora completato un ciclo di test completo.
270
321
 
271
322
  ## Licenza
272
323