@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.
- package/CHANGELOG.md +60 -0
- package/README.es.md +117 -55
- package/README.fr.md +125 -65
- package/README.hi.md +117 -68
- package/README.it.md +119 -58
- package/README.ja.md +124 -74
- package/README.md +73 -7
- package/README.pt-BR.md +128 -63
- package/README.zh.md +116 -65
- package/bin/sdlab.js +100 -4
- package/lib/adapters/ai-toolkit.js +224 -35
- package/lib/adapters/comfyui-runner.js +79 -26
- package/lib/adapters/comfyui-workflows.js +94 -11
- package/lib/adapters/diffusers-lora.js +37 -5
- package/lib/adapters/generic-image-caption.js +43 -5
- package/lib/args.js +16 -1
- package/lib/asset-ingest.js +575 -0
- package/lib/asset-masks.js +323 -0
- package/lib/asset-source.js +1176 -0
- package/lib/batch-modes.js +29 -8
- package/lib/batch-runs.js +29 -1
- package/lib/batch-sheet-render.js +13 -3
- package/lib/brief-compiler.js +19 -0
- package/lib/candidate-sheet.js +327 -0
- package/lib/canon-author.js +350 -0
- package/lib/canon-build/build.js +146 -93
- package/lib/canon-review-gate.js +205 -0
- package/lib/captions.js +57 -0
- package/lib/card.js +74 -2
- package/lib/colab-launcher-guards.js +285 -0
- package/lib/comfyui.js +116 -18
- package/lib/config.js +116 -12
- package/lib/critique-engine.js +36 -2
- package/lib/eligibility.js +121 -9
- package/lib/eval-pack.js +14 -14
- package/lib/eval-runs.js +33 -0
- package/lib/export.js +122 -34
- package/lib/freeze-gate.js +16 -3
- package/lib/freeze-stamp.js +28 -3
- package/lib/generated-provenance.js +194 -6
- package/lib/implementation-packs.js +95 -17
- package/lib/ingest.js +396 -0
- package/lib/judgment-provenance.js +220 -0
- package/lib/lane1-render.js +668 -0
- package/lib/measure.js +422 -0
- package/lib/memory-store.js +663 -0
- package/lib/model-licences.js +305 -0
- package/lib/npy-meta.js +130 -0
- package/lib/paths.js +196 -7
- package/lib/png-meta.js +512 -0
- package/lib/records.js +54 -8
- package/lib/reingest-selected.js +113 -17
- package/lib/reingest.js +27 -3
- package/lib/run-manifest.js +159 -25
- package/lib/run-summary.js +12 -6
- package/lib/runtime-runs.js +45 -4
- package/lib/snapshot.js +114 -15
- package/lib/split.js +364 -48
- package/lib/train-runs.js +214 -0
- package/lib/training-manifests.js +114 -21
- package/lib/training-packages.js +147 -15
- package/lib/verifier.js +3 -0
- package/lib/verify-chain.js +367 -0
- package/lib/workflow-profiles.js +24 -3
- package/package.json +4 -3
- package/runtime/comfyui/txt2img-qwen.json +38 -0
- package/runtime/comfyui/txt2img-standard.json +21 -0
- package/scripts/_resume.js +62 -0
- package/scripts/_shared-args.js +44 -0
- package/scripts/asset-ingest.js +160 -0
- package/scripts/brief-compile.js +2 -1
- package/scripts/brief-show.js +2 -1
- package/scripts/canon-bind.js +2 -2
- package/scripts/canon-build.js +27 -20
- package/scripts/canon-draft.js +82 -0
- package/scripts/canon-drift.js +16 -7
- package/scripts/canon-freeze-status.js +14 -6
- package/scripts/canon-freeze.js +31 -11
- package/scripts/canon-unfreeze.js +17 -9
- package/scripts/card.js +2 -2
- package/scripts/colab/REAL_SERVICE_ASSUMPTIONS.md +14 -0
- package/scripts/colab/ai-toolkit-override-py315.txt +45 -0
- package/scripts/colab/colab_window.sh +587 -0
- package/scripts/colab/lane1_render.py +970 -0
- package/scripts/colab/launch_guards.py +564 -0
- package/scripts/colab/launch_lane1_stub.sh +309 -0
- package/scripts/colab/launch_lane3_stub.sh +366 -0
- package/scripts/colab/remote_runner.py +59 -0
- package/scripts/compare.js +2 -2
- package/scripts/critique.js +16 -1
- package/scripts/curate.js +2 -2
- package/scripts/doctor.js +182 -55
- package/scripts/eligibility.js +42 -2
- package/scripts/eval-pack.js +2 -2
- package/scripts/eval-run.js +2 -2
- package/scripts/export.js +2 -2
- package/scripts/generate-controlnet.js +45 -25
- package/scripts/generate-identity.js +53 -23
- package/scripts/generate-ipadapter.js +44 -23
- package/scripts/generate.js +86 -17
- package/scripts/implementation-pack.js +2 -2
- package/scripts/ingest.js +145 -0
- package/scripts/init.js +73 -13
- package/scripts/measure.js +170 -0
- package/scripts/measure_image.py +458 -0
- package/scripts/migrate-records.js +142 -0
- package/scripts/painterly-test.js +4 -3
- package/scripts/painterly.js +7 -3
- package/scripts/qwen_generate.py +138 -20
- package/scripts/reingest.js +2 -2
- package/scripts/sheet.js +142 -0
- package/scripts/snapshot.js +2 -2
- package/scripts/split.js +2 -2
- package/scripts/training-manifest.js +2 -2
- package/scripts/training-package.js +2 -2
- package/scripts/training-profile.js +2 -2
- package/scripts/verify.js +67 -0
- package/scripts/workflow-list.js +2 -1
- 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.
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
93
|
-
| **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`).
|
|
94
|
-
| **Eval scorecard** | Valutazione per
|
|
95
|
-
| **Implementation pack** | Esempi di prompt, errori noti, test di continuità e indicazioni per
|
|
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** |
|
|
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 (
|
|
105
|
-
| **Selection** | Artefatto
|
|
106
|
-
| **Re-ingest** | Gli output selezionati vengono
|
|
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
|
|
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
|
|
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
|
|
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
|
-
##
|
|
171
|
+
## Dimostrato in produzione
|
|
117
172
|
|
|
118
|
-
|
|
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)
|
|
121
|
-
- **[Rustline](handbook/case-study-rustline/)** (progettazione
|
|
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:
|
|
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
|
|
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,
|
|
132
|
-
| **character-design** | ritratto, figura intera, rotazione
|
|
133
|
-
| **creature-design** |
|
|
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,
|
|
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
|
|
218
|
+
Queste non sono aspirazionali. Sono applicate.
|
|
164
219
|
|
|
165
|
-
- **Gli snapshot sono immutabili.** L'impronta
|
|
166
|
-
- **Le suddivisioni prevengono
|
|
167
|
-
- **I manifest sono contratti vincolanti.**
|
|
168
|
-
- **Le esecuzioni
|
|
169
|
-
- **Nessun modello verifica il proprio output.**
|
|
170
|
-
- **
|
|
171
|
-
- **
|
|
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
|
|
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`
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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`
|
|
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
|
|
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
|
|
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
|
|
246
|
-
- `E_RECORD_DRIFT`: l'impronta
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|