@mcptoolshop/style-dataset-lab 3.3.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 (119) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.es.md +117 -55
  3. package/README.fr.md +125 -65
  4. package/README.hi.md +117 -68
  5. package/README.it.md +119 -58
  6. package/README.ja.md +124 -74
  7. package/README.md +73 -7
  8. package/README.pt-BR.md +128 -63
  9. package/README.zh.md +116 -65
  10. package/bin/sdlab.js +100 -4
  11. package/lib/adapters/ai-toolkit.js +224 -35
  12. package/lib/adapters/comfyui-runner.js +79 -26
  13. package/lib/adapters/comfyui-workflows.js +94 -11
  14. package/lib/adapters/diffusers-lora.js +37 -5
  15. package/lib/adapters/generic-image-caption.js +43 -5
  16. package/lib/args.js +16 -1
  17. package/lib/asset-ingest.js +575 -0
  18. package/lib/asset-masks.js +323 -0
  19. package/lib/asset-source.js +1176 -0
  20. package/lib/batch-modes.js +29 -8
  21. package/lib/batch-runs.js +29 -1
  22. package/lib/batch-sheet-render.js +13 -3
  23. package/lib/brief-compiler.js +19 -0
  24. package/lib/candidate-sheet.js +327 -0
  25. package/lib/canon-author.js +350 -0
  26. package/lib/canon-build/build.js +146 -93
  27. package/lib/canon-review-gate.js +205 -0
  28. package/lib/captions.js +57 -0
  29. package/lib/card.js +74 -2
  30. package/lib/colab-launcher-guards.js +285 -0
  31. package/lib/comfyui.js +116 -18
  32. package/lib/config.js +116 -12
  33. package/lib/critique-engine.js +36 -2
  34. package/lib/eligibility.js +121 -9
  35. package/lib/eval-pack.js +14 -14
  36. package/lib/eval-runs.js +33 -0
  37. package/lib/export.js +122 -34
  38. package/lib/freeze-gate.js +16 -3
  39. package/lib/freeze-stamp.js +28 -3
  40. package/lib/generated-provenance.js +194 -6
  41. package/lib/implementation-packs.js +95 -17
  42. package/lib/ingest.js +396 -0
  43. package/lib/judgment-provenance.js +220 -0
  44. package/lib/lane1-render.js +668 -0
  45. package/lib/measure.js +422 -0
  46. package/lib/memory-store.js +663 -0
  47. package/lib/model-licences.js +305 -0
  48. package/lib/npy-meta.js +130 -0
  49. package/lib/paths.js +196 -7
  50. package/lib/png-meta.js +512 -0
  51. package/lib/records.js +54 -8
  52. package/lib/reingest-selected.js +113 -17
  53. package/lib/reingest.js +27 -3
  54. package/lib/run-manifest.js +159 -25
  55. package/lib/run-summary.js +12 -6
  56. package/lib/runtime-runs.js +45 -4
  57. package/lib/snapshot.js +114 -15
  58. package/lib/split.js +364 -48
  59. package/lib/train-runs.js +214 -0
  60. package/lib/training-manifests.js +114 -21
  61. package/lib/training-packages.js +147 -15
  62. package/lib/verifier.js +3 -0
  63. package/lib/verify-chain.js +367 -0
  64. package/lib/workflow-profiles.js +24 -3
  65. package/package.json +4 -3
  66. package/runtime/comfyui/txt2img-qwen.json +38 -0
  67. package/runtime/comfyui/txt2img-standard.json +21 -0
  68. package/scripts/_resume.js +62 -0
  69. package/scripts/_shared-args.js +44 -0
  70. package/scripts/asset-ingest.js +160 -0
  71. package/scripts/brief-compile.js +2 -1
  72. package/scripts/brief-show.js +2 -1
  73. package/scripts/canon-bind.js +2 -2
  74. package/scripts/canon-build.js +27 -20
  75. package/scripts/canon-draft.js +82 -0
  76. package/scripts/canon-drift.js +16 -7
  77. package/scripts/canon-freeze-status.js +14 -6
  78. package/scripts/canon-freeze.js +31 -11
  79. package/scripts/canon-unfreeze.js +17 -9
  80. package/scripts/card.js +2 -2
  81. package/scripts/colab/REAL_SERVICE_ASSUMPTIONS.md +14 -0
  82. package/scripts/colab/ai-toolkit-override-py315.txt +45 -0
  83. package/scripts/colab/colab_window.sh +587 -0
  84. package/scripts/colab/lane1_render.py +970 -0
  85. package/scripts/colab/launch_guards.py +564 -0
  86. package/scripts/colab/launch_lane1_stub.sh +309 -0
  87. package/scripts/colab/launch_lane3_stub.sh +366 -0
  88. package/scripts/colab/remote_runner.py +59 -0
  89. package/scripts/compare.js +2 -2
  90. package/scripts/critique.js +16 -1
  91. package/scripts/curate.js +2 -2
  92. package/scripts/doctor.js +182 -55
  93. package/scripts/eligibility.js +42 -2
  94. package/scripts/eval-pack.js +2 -2
  95. package/scripts/eval-run.js +2 -2
  96. package/scripts/export.js +2 -2
  97. package/scripts/generate-controlnet.js +45 -25
  98. package/scripts/generate-identity.js +53 -23
  99. package/scripts/generate-ipadapter.js +44 -23
  100. package/scripts/generate.js +86 -17
  101. package/scripts/implementation-pack.js +2 -2
  102. package/scripts/ingest.js +145 -0
  103. package/scripts/init.js +73 -13
  104. package/scripts/measure.js +170 -0
  105. package/scripts/measure_image.py +458 -0
  106. package/scripts/migrate-records.js +142 -0
  107. package/scripts/painterly-test.js +4 -3
  108. package/scripts/painterly.js +7 -3
  109. package/scripts/qwen_generate.py +138 -20
  110. package/scripts/reingest.js +2 -2
  111. package/scripts/sheet.js +142 -0
  112. package/scripts/snapshot.js +2 -2
  113. package/scripts/split.js +2 -2
  114. package/scripts/training-manifest.js +2 -2
  115. package/scripts/training-package.js +2 -2
  116. package/scripts/training-profile.js +2 -2
  117. package/scripts/verify.js +67 -0
  118. package/scripts/workflow-list.js +2 -1
  119. package/scripts/workflow-show.js +2 -1
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.
@@ -27,8 +27,15 @@ sdlab init my-project --domain character-design
27
27
 
28
28
  # Generate candidates via ComfyUI, then review them
29
29
  sdlab generate inputs/prompts/wave1.json --project my-project
30
+ sdlab sheet outputs/candidates --project my-project # HTML contact sheet to triage
30
31
  sdlab curate <id> approved "Strong silhouette, correct faction palette"
31
32
 
33
+ # Already have images? Bring them in without generating anything
34
+ sdlab ingest ~/renders/wave1 --project my-project
35
+
36
+ # Measure what the pixels actually are — palette and texture, as numbers
37
+ sdlab measure outputs/candidates --project my-project
38
+
32
39
  # Bind approved work to constitution rules
33
40
  # (`sdlab bind` is a shorter alias for `canon-bind`)
34
41
  sdlab canon-bind --project my-project
@@ -56,11 +63,57 @@ sdlab select --run run_2026-04-16_001 --approve 001.png,003.png
56
63
  sdlab reingest selected --selection selection_2026-04-16_001
57
64
  ```
58
65
 
59
- 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
+
68
+ ## Il flusso di asset: esportazioni 3D come dati di addestramento
69
+
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.
60
105
 
61
- ## Definizione del canone
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.
62
110
 
63
- Prima che il flusso di lavoro del set di dati venga eseguito, lo spazio dei nomi `sdlab canon *` trasforma l'archivio delle entità del canone del tuo progetto nelle tre proiezioni utilizzate effettivamente per l'addestramento e la produzione, e blocca le voci che non devono subire modifiche.
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.
64
117
 
65
118
  ```bash
66
119
  # Build three projections from the canon entity store:
@@ -76,63 +129,65 @@ sdlab canon freeze kael_maren --project my-project --reason "prologue portrait l
76
129
  sdlab canon drift --project my-project
77
130
  ```
78
131
 
79
- `canon build` è basato sull'indirizzamento dei contenuti: il suo output è identificato da un codice `canon_sha` ed è memorizzato nella cache, quindi una ricostruzione del canone invariata viene eseguita istantaneamente. `canon freeze` registra ogni "congelamento" rispetto a una versione specifica e lo aggiunge a una traccia di controllo in `freeze-events.jsonl`: le voci "congelate" rifiutano esplicitamente la rigenerazione, mentre le voci "soft-advisory" rifiutano per impostazione predefinita (è possibile ignorare l'impostazione con `--i-know`). `canon drift` ricalcola l'hash di ogni voce monitorata e segnala eventuali modifiche rispetto all'ultima versione 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.
80
133
 
81
- 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/).
82
137
 
83
138
  ## Cosa produce
84
139
 
85
- 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.
86
141
 
87
142
  | Artefatto | Cos'è |
88
143
  |----------|-----------|
89
144
  | **Snapshot** | Selezione di record congelati con impronta di configurazione. Ogni inclusione ha una motivazione esplicita. |
90
- | **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. |
91
146
  | **Export package** | Set di dati autonomo: manifesto, metadati, immagini, suddivisioni, scheda del set di dati, checksum. |
92
- | **Eval pack** | Attività di test consapevoli del canone: copertura delle corsie, divieto di modifiche, ancoraggio/oro, continuità dei soggetti. |
93
- | **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`). Stessi dati, formato diverso. |
94
- | **Eval scorecard** | Valutazione per attività con esito positivo/negativo basata sulla valutazione degli output generati rispetto ai pacchetti di valutazione. |
95
- | **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. |
96
151
 
97
152
  L'ambiente di lavoro di produzione aggiunge:
98
153
 
99
154
  | Superficie | Cosa fa |
100
155
  |---------|-------------|
101
- | **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. |
102
157
  | **Run** | Artefatto di esecuzione congelato: breve descrizione + seed + output ComfyUI + manifesto. |
103
- | **Critique** | Valutazione strutturata multidimensionale degli output rispetto al canone. |
104
- | **Batch** | Produzione coordinata multi-slot (fogli di espressione, schede ambientali, pacchetti di silhouette). |
105
- | **Selection** | Artefatto decisionale creativo: quali output sono stati scelti, perché e da dove provengono. |
106
- | **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. |
107
162
 
108
163
  ## Perché esiste
109
164
 
110
- 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.
111
166
 
112
- 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.
113
168
 
114
- 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.
115
170
 
116
- ## Testato in produzione
171
+ ## Dimostrato in produzione
117
172
 
118
- Non si tratta di una pipeline dimostrativa. Due modelli LoRA reali sono stati elaborati integralmente attraverso questa pipeline: 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.
119
174
 
120
- - **[Tallow Fen](handbook/case-study-tallow-fen/)** (progettazione di creature): un canone di bestiario creato da zero, con circa il **34% di approvazioni** su 293 record curati (169 rifiutati: la fase di selezione è rigorosa). È stato distribuito `tallow_fen_style_v3.safetensors` a 1.5 su `qwen-image`.
121
- - **[Rustline](handbook/case-study-rustline/)** (progettazione concettuale): un canone denso e predefinito, con circa il **96% di approvazioni** su 180 record. È stato distribuito `rustline_v3ckpt_1500.safetensors` a 1.0 su `qwen-image`, ed è stato riutilizzato in 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.
122
177
 
123
- La stessa pipeline, due profili di produzione: la fase di curatela è reale (rifiuta rigorosamente i contenuti inappropriati) e un canone ben definito produce alti tassi 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.
124
179
 
125
180
  ## Cinque domini, regole reali
126
181
 
127
- 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.
128
183
 
129
184
  | Dominio | Corsie | Cosa viene valutato |
130
185
  |--------|-------|-----------------|
131
- | **game-art** | personaggio, ambiente, oggetto di scena, interfaccia utente, nave, interno, attrezzatura | Silhouette su scala di gioco, identificazione della fazione, usura e invecchiamento |
132
- | **character-design** | ritratto, figura intera, rotazione a 360 gradi, foglio di espressioni, posa d'azione | Proporzioni, logica del costume, personalità, chiarezza dei gesti |
133
- | **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 |
134
189
  | **architecture** | esterno, interno, paesaggio urbano, dettaglio strutturale, rovina, paesaggio | Struttura, coerenza dei materiali, prospettiva, coerenza dell'epoca |
135
- | **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 |
136
191
 
137
192
  ## Struttura del progetto
138
193
 
@@ -160,19 +215,23 @@ projects/my-project/
160
215
 
161
216
  ## Proprietà di affidabilità
162
217
 
163
- Queste non sono semplici aspirazioni. Sono applicate rigorosamente.
218
+ Queste non sono aspirazionali. Sono applicate.
164
219
 
165
- - **Gli snapshot sono immutabili.** L'impronta della configurazione (SHA-256) dimostra che nulla è stato modificato.
166
- - **Le suddivisioni prevengono la dispersione dei dati.** Le famiglie di soggetti (per identità, discendenza o suffisso ID) non superano mai i confini delle partizioni.
167
- - **I manifest sono contratti vincolanti.** Esportazione dell'hash + impronta della configurazione. Se qualcosa cambia, crearne uno nuovo.
168
- - **Le esecuzioni fissano il loro grafo esatto.** Ogni generazione registra `comfy_workflow_sha` + hash del contenuto del modello/LoRA + politica dei seed, in modo che un ciclo possa essere riprodotto byte per byte: identico sia nell'ambiente JS che Python. L'hashing del modello è opzionale (`--hash-models`) e non viene mai falsificato.
169
- - **Nessun modello verifica il proprio output.** Le valutazioni registrano `judged_by_model` e `generator_model`; se questi valori sono mai uguali, viene visualizzato un avviso.
170
- - **Gli adattatori non possono alterare la verità.** Layout diverso, stessi record. Nessuna aggiunta, nessuna rimozione, nessuna riclassificazione.
171
- - **Gli output generati vengono reintrodotti attraverso la revisione.** Nessun bypass. Curatela e collegamento come per tutti gli altri elementi.
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.
228
+ - **Gli adattatori non possono modificare la verità.** Layout diverso, stessi record. Nessuna aggiunta, nessuna rimozione, nessuna riclassificazione.
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.
172
231
 
173
232
  ## Star Freight
174
233
 
175
- 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.
176
235
 
177
236
  ```bash
178
237
  git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
@@ -184,7 +243,7 @@ sdlab split build --project star-freight # zero subject leakage
184
243
 
185
244
  ## Formati downstream
186
245
 
187
- `sdlab` è il proprietario del 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.
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.
188
247
 
189
248
  ## Installazione
190
249
 
@@ -196,7 +255,7 @@ Richiede Node.js 20+ e [ComfyUI](https://github.com/comfyanonymous/ComfyUI) su l
196
255
 
197
256
  ### Prova senza ComfyUI
198
257
 
199
- È 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.
200
259
 
201
260
  ```bash
202
261
  # Scaffold a fresh project (no ComfyUI needed)
@@ -209,13 +268,13 @@ sdlab project doctor --project test
209
268
  sdlab snapshot create --dry-run --project star-freight
210
269
  ```
211
270
 
212
- `sdlab project doctor` convalida la configurazione di ogni 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.
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.
213
272
 
214
- Se si dimentica `--project`, la CLI torna al primo progetto che trova nella cartella `projects/` e stampa un avviso; passare `--project` esplicitamente per disattivare l'avviso.
273
+ Se si dimentica `--project`, la CLI torna al primo progetto che trova in `projects/` e stampa un avviso: passare `--project` esplicitamente per disattivarlo.
215
274
 
216
275
  ### Ripresa di un'esecuzione interrotta
217
276
 
218
- 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:
219
278
 
220
279
  ```bash
221
280
  # Skip subjects whose record + image are already on disk.
@@ -227,36 +286,38 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
227
286
  sdlab batch generate --resume batch_2026-04-22_001 --project my-project
228
287
  ```
229
288
 
230
- 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.
231
290
 
232
291
  ## Risoluzione dei problemi
233
292
 
234
293
  Modalità di errore comuni e soluzioni:
235
294
 
236
- **`ECONNREFUSED 127.0.0.1:8188` in qualsiasi `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
295
+ **`ECONNREFUSED 127.0.0.1:8188` su qualsiasi `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
237
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`.
238
297
 
239
298
  **`missing checkpoint` / `LoRA weight not found`**
240
- 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 che si ha già. 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.
241
300
 
242
- **Errori di `sdlab project doctor`**
301
+ **Errori `sdlab project doctor`**
243
302
  Doctor restituisce codici di errore strutturati. Alcuni comuni:
244
303
  - `E_PROJECT_NOT_FOUND`: la directory del progetto non esiste in `projects/`. Controllare l'ortografia.
245
- - `E_CONFIG_INVALID`: uno dei cinque file di configurazione JSON ha fallito la convalida dello schema. Il campo `hint` indica il file e il campo problematici.
246
- - `E_RECORD_DRIFT`: l'impronta della configurazione di un record non corrisponde più alla sua origine. Rielaborare o ricollegare come suggerisce l'indicazione.
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.
247
306
 
248
307
  **`No --project specified, falling back to <name>`**
249
- Un avviso lieve. Passare `--project <name>` esplicitamente per selezionare il progetto corretto e disattivare l'avviso.
308
+ Un avviso leggero. Passare `--project <name>` esplicitamente per selezionare il progetto corretto e disattivare l'avviso.
250
309
 
251
310
  **Problemi di memoria VRAM / "Painterly"**
252
- Consultare `docs/internal/HANDOFF.md` per le note sulla regolazione del denoising "painterly". In breve: ridurre la forza del denoising, diminuire la dimensione del batch o passare a un checkpoint più piccolo nel profilo del flusso di lavoro.
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.
253
312
 
254
313
  **Segnalazione di bug**
255
- Aprire una segnalazione 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 strutturato dell'errore. Un modello per la segnalazione di bug precompila i campi.
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.
256
315
 
257
316
  ## Sicurezza
258
317
 
259
- 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.
260
321
 
261
322
  ## Licenza
262
323