@mcptoolshop/style-dataset-lab 3.1.0 → 3.2.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 +37 -0
- package/README.es.md +84 -62
- package/README.fr.md +85 -63
- package/README.hi.md +97 -77
- package/README.it.md +86 -64
- package/README.ja.md +94 -72
- package/README.md +22 -0
- package/README.pt-BR.md +83 -61
- package/README.zh.md +88 -66
- package/bin/sdlab.js +71 -0
- package/lib/adapters/ai-toolkit.js +209 -0
- package/lib/adapters/comfyui-workflows.js +133 -2
- package/lib/adapters/diffusers-lora.js +46 -66
- package/lib/adapters/generic-image-caption.js +22 -50
- package/lib/canon-build/build.js +450 -0
- package/lib/canon-build/emitters/base.js +122 -0
- package/lib/canon-build/emitters/character.js +167 -0
- package/lib/canon-build/emitters/deity.js +165 -0
- package/lib/canon-build/emitters/faction.js +161 -0
- package/lib/canon-build/emitters/index.js +38 -0
- package/lib/canon-build/emitters/location.js +153 -0
- package/lib/canon-build/emitters/monster.js +131 -0
- package/lib/canon-build/emitters/relic.js +142 -0
- package/lib/canon-build/emitters/ship.js +154 -0
- package/lib/canon-build/emitters/species.js +165 -0
- package/lib/canon-build/frontmatter.js +76 -0
- package/lib/canon-build/lane-resolve.js +64 -0
- package/lib/canon-build/load-config.js +117 -0
- package/lib/canon-build/load-entry.js +62 -0
- package/lib/canon-build/load-schema.js +46 -0
- package/lib/captions.js +197 -0
- package/lib/config.js +19 -0
- package/lib/freeze-events.js +109 -0
- package/lib/freeze-gate.js +165 -0
- package/lib/freeze-stamp.js +161 -0
- package/lib/rows.js +228 -0
- package/lib/training-adapters.js +5 -0
- package/lib/training-packages.js +24 -18
- package/lib/training-profiles.js +33 -0
- package/package.json +12 -3
- package/scripts/_batch_cut.py +71 -0
- package/scripts/_seam_cutout.py +74 -0
- package/scripts/canon-build.js +88 -0
- package/scripts/canon-drift.js +193 -0
- package/scripts/canon-freeze-status.js +85 -0
- package/scripts/canon-freeze.js +211 -0
- package/scripts/canon-unfreeze.js +137 -0
- package/scripts/curate.js +12 -0
- package/scripts/generate-controlnet.js +12 -0
- package/scripts/generate-identity.js +20 -4
- package/scripts/generate-ipadapter.js +11 -0
- package/scripts/generate.js +238 -102
- package/scripts/qwen_generate.py +124 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
## [3.2.0] - 2026-07-06
|
|
8
|
+
|
|
9
|
+
The **canon authoring** release. A new `sdlab canon *` namespace turns a project's canon entity store into the projections training actually consumes, and wraps a witness-backed freeze spine around entries that must not drift — plus first-class Flux and Qwen-Image training paths.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Canon authoring namespace (`sdlab canon *`)** — the headline of this release:
|
|
14
|
+
- **`sdlab canon build`** (#16) — builds three canonical projections from a project's canon entity store: `dataset.jsonl` (for training adapters), `prompts/<id>.j2` (Jinja2 templates for ComfyUI invocation), and `context/<id>.md` (narrative blocks for Role OS dispatch). Output keyed by `<canon_sha>` with a content-addressable cache under `canon-build/.cache/`. Flags: `--full`, `--no-cache`, `--dry-run`, `--only <ids>`, `--json`, `--quiet`.
|
|
15
|
+
- **`sdlab canon freeze` / `unfreeze` / `freeze-status`** (#17) — witness-chain freeze tooling. `freeze` stamps a freeze block on an entry (witnessed against a canon-build output via `locked_at_build`), writing both the entry frontmatter and an append-only `canon-build/freeze-events.jsonl`. Statuses: `frozen` (regen refused; unfreeze ceremony required) and `soft-advisory` (refused by default, bypassable with `--i-know`). `--reason` is required on freeze/unfreeze — the audit record depends on it. `freeze-status` is a read-only glance at an entry's state.
|
|
16
|
+
- **`sdlab canon drift`** (#19) — for every frozen / on-canon-change entry, recomputes the watch-field hash and compares against the hash stamped in the latest canon-build manifest; reports drifted entries and overrides since a given build.
|
|
17
|
+
- **Canon schema system** (#18) — Star Freight Grounded canon shipped as worked example data (28 entities across 5 entry schemas), demonstrating the entity format `canon build` consumes.
|
|
18
|
+
- **`flux-natural-language` caption strategy** (#11) — natural-language captions for Flux.1-dev LoRA training, alongside the existing SDXL trigger-word strategy.
|
|
19
|
+
- **Two-LoRA stack training contract** (#15) — threads the `is_style_lora` boolean through profiles and adapters (world/style LoRAs → `true`, per-character subject LoRAs → `false`), driving trainer regularization for the two-LoRA stacking pattern.
|
|
20
|
+
- **Flux training targets** — Flux-target training profiles (#12) and Flux-target ComfyUI workflow profiles (#13) for Star Freight, plus the **`ai-toolkit` adapter** for Flux LoRA training (#14): emits `dataset/<partition>/<record_id>.{png,txt}` + `metadata/<partition>.jsonl` + an `ai-toolkit-config.yaml` that Ostris [ai-toolkit](https://github.com/ostris/ai-toolkit) consumes directly. Flux-only — rejects non-Flux profiles with `ADAPTER_TARGET_FAMILY_MISMATCH`; emits `is_style` from the profile's `is_style_lora`. Registered in `ADAPTER_REGISTRY` beside `generic-image-caption` and `diffusers-lora`.
|
|
21
|
+
- **Qwen-Image native generation** (#24) — native non-anime Qwen-Image generation path with a `gpu_model` override.
|
|
22
|
+
- **Qwen DiT LoRA chain** (#25) — DiT LoRA chaining in both Qwen runners, with tallow-fen style-LoRA dataset wiring.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- **Caption prompt bleed** (#9) — routed captions through the shared research-backed builder so prompt fragments no longer bleed across records.
|
|
27
|
+
- **Freeze witness-chain drift** (#19) — the drift CLI reads `.watch_hash` from the rich freeze stamp, and `freeze-status` surfaces resolved `watch_fields`.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- Training adapter registry now exposes three adapters — `generic-image-caption`, `diffusers-lora`, `ai-toolkit`; the handbook reference and README document the `ai-toolkit` Flux-only precondition.
|
|
32
|
+
- `projects/`: rustline and tallow-fen production style datasets added as worked examples (repo-clone content; not shipped in the npm package).
|
|
33
|
+
|
|
34
|
+
### Dependencies
|
|
35
|
+
|
|
36
|
+
- **`yaml@^2.8.3`** added as a runtime dependency for the ai-toolkit YAML config (#14), kept current in the range (#23). CI: `actions/checkout` 6→7 (#30), `codecov/codecov-action` 5→7 (#31).
|
|
37
|
+
|
|
38
|
+
### Tests & coverage
|
|
39
|
+
|
|
40
|
+
- **368 tests, 0 failing.** Coverage: statements **60.36%** / branches **75.5%** / functions **68.35%**.
|
|
41
|
+
|
|
5
42
|
## [3.1.0] - 2026-04-22
|
|
6
43
|
|
|
7
44
|
### Added — `--resume` for `generate` and `batch generate`
|
package/README.es.md
CHANGED
|
@@ -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
|
-
|
|
16
|
+
Escribe tus reglas visuales. Genera arte. Evalúa cada imagen según esas reglas. Entrega los resultados como datos de entrenamiento auditables y versionados, y luego utiliza los modelos entrenados en flujos de trabajo de producción reales, e introduce las mejores salidas nuevamente en tu corpus.
|
|
17
17
|
|
|
18
|
-
Style Dataset Lab conecta lo que
|
|
18
|
+
Style Dataset Lab conecta lo que has definido sobre tu estilo artístico con el conjunto de datos del cual realmente estás entrenando, y luego cierra el ciclo a lo largo de todo el proceso de producción. Defines una constitución: reglas de silueta, restricciones de paleta, lenguaje de materiales, o cualquier cosa que sea importante para tu proyecto. El flujo de trabajo genera candidatos, los evalúa según esas reglas y empaqueta el trabajo aprobado en conjuntos de datos reproducibles donde cada registro explica por qué se incluyó.
|
|
19
19
|
|
|
20
|
-
Luego, el entorno de trabajo de producción toma el control:
|
|
20
|
+
Luego, el entorno de trabajo de producción toma el control: compila resúmenes de generación a partir de la información del proyecto, ejecútalos a través de ComfyUI, evalúa las salidas, produce en lote hojas de expresión y paneles de entorno, selecciona los mejores resultados y vuelve a introducirlos como nuevos candidatos. El ciclo se cierra: producir, seleccionar, revisar, mejorar.
|
|
21
21
|
|
|
22
|
-
## El
|
|
22
|
+
## El flujo de trabajo
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
# Write your canon. Scaffold the project.
|
|
@@ -56,56 +56,78 @@ sdlab select --run run_2026-04-16_001 --approve 001.png,003.png
|
|
|
56
56
|
sdlab reingest selected --selection selection_2026-04-16_001
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
Ese último comando es el punto clave. Las salidas seleccionadas vuelven a pasar por el mismo proceso de revisión que todo lo demás. El corpus crece y las reglas se mantienen.
|
|
60
60
|
|
|
61
|
-
##
|
|
61
|
+
## Creación del canon
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Antes de que se ejecute el flujo de trabajo del conjunto de datos, el espacio de nombres `sdlab canon *` convierte el almacén de entidades del canon de tu proyecto en los tres proyecciones que realmente utiliza el entrenamiento y la producción, y bloquea las entradas que no deben modificarse.
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
```bash
|
|
66
|
+
# Build three projections from the canon entity store:
|
|
67
|
+
# dataset.jsonl → training adapters
|
|
68
|
+
# prompts/*.j2 → ComfyUI workflow invocation
|
|
69
|
+
# context/*.md → Role OS narrative dispatch
|
|
70
|
+
sdlab canon build --project my-project
|
|
71
|
+
|
|
72
|
+
# Freeze an entry so regeneration can't silently change it
|
|
73
|
+
sdlab canon freeze kael_maren --project my-project --reason "prologue portrait locked"
|
|
74
|
+
|
|
75
|
+
# Report drift on frozen entries since the last clean build
|
|
76
|
+
sdlab canon drift --project my-project
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`canon build` es direccionable por contenido: su salida se identifica mediante un `canon_sha` y se almacena en caché, de modo que una reconstrucción del canon sin cambios se realiza instantáneamente. `canon freeze` registra cada congelación frente a una compilación específica y la agrega a un registro de auditoría `freeze-events.jsonl`: las entradas `frozen` rechazan explícitamente la regeneración, las entradas `soft-advisory` la rechazan por defecto (se puede omitir con `--i-know`). `canon drift` vuelve a calcular el hash de cada entrada observada y marca cualquier cosa que haya cambiado desde la última compilación limpia.
|
|
80
|
+
|
|
81
|
+
Flujo de trabajo completo en el manual: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/) y [Two-LoRA stacking](handbook/two-lora-stacking/).
|
|
82
|
+
|
|
83
|
+
## Qué produce
|
|
84
|
+
|
|
85
|
+
Siete artefactos del conjunto de datos y un entorno de trabajo de producción completo. Cada artefacto se vincula a sus predecesores para que puedas rastrear cualquier registro de entrenamiento hasta la regla que lo aprobó.
|
|
86
|
+
|
|
87
|
+
| Artefacto | Qué es |
|
|
66
88
|
|----------|-----------|
|
|
67
|
-
| **Snapshot** | Selección de registros
|
|
68
|
-
| **Split** | Partición de entrenamiento/validación/prueba donde las familias de sujetos nunca cruzan límites. |
|
|
69
|
-
| **Export package** | Conjunto de datos
|
|
70
|
-
| **Eval pack** | Tareas de prueba
|
|
71
|
-
| **Training package** | Diseño listo para el entrenamiento a través de adaptadores (`diffusers-lora`, `generic-image-caption`). La misma información,
|
|
72
|
-
| **Eval scorecard** |
|
|
73
|
-
| **Implementation pack** | Ejemplos de indicaciones,
|
|
89
|
+
| **Snapshot** | Selección de registros congelados con huella digital de configuración. Cada inclusión tiene una razón explícita. |
|
|
90
|
+
| **Split** | Partición de entrenamiento/validación/prueba donde las familias de sujetos nunca cruzan los límites. |
|
|
91
|
+
| **Export package** | Conjunto de datos autónomo: manifiesto, metadatos, imágenes, divisiones, tarjeta del conjunto de datos, sumas de comprobación. |
|
|
92
|
+
| **Eval pack** | Tareas de prueba con conocimiento del canon: cobertura de carriles, desviación prohibida, ancla/oro, continuidad del sujeto. |
|
|
93
|
+
| **Training package** | Diseño listo para el entrenamiento a través de adaptadores (`diffusers-lora`, `generic-image-caption`). La misma información, diferente formato. |
|
|
94
|
+
| **Eval scorecard** | Aprobación/rechazo por tarea basada en la evaluación de las salidas generadas con respecto a los paquetes de evaluación. |
|
|
95
|
+
| **Implementation pack** | Ejemplos de indicaciones, fallas conocidas, pruebas de continuidad y orientación para volver a introducir datos. |
|
|
74
96
|
|
|
75
97
|
El entorno de trabajo de producción agrega:
|
|
76
98
|
|
|
77
99
|
| Superficie | Qué hace |
|
|
78
100
|
|---------|-------------|
|
|
79
|
-
| **Compiled brief** |
|
|
80
|
-
| **Run** | Artefacto de ejecución congelado:
|
|
81
|
-
| **Critique** | Evaluación estructurada
|
|
82
|
-
| **Batch** | Producción coordinada
|
|
83
|
-
| **Selection** | Artefacto de decisión creativa: qué
|
|
84
|
-
| **Re-ingest** |
|
|
101
|
+
| **Compiled brief** | Instrucción de generación determinista a partir del perfil del flujo de trabajo + la información del proyecto. |
|
|
102
|
+
| **Run** | Artefacto de ejecución congelado: resumen + semillas + salidas de ComfyUI + manifiesto. |
|
|
103
|
+
| **Critique** | Evaluación estructurada multidimensional de las salidas de ejecución con respecto al canon. |
|
|
104
|
+
| **Batch** | Producción coordinada en múltiples ranuras (hojas de expresión, paneles de entorno, paquetes de silueta). |
|
|
105
|
+
| **Selection** | Artefacto de decisión creativa: qué salidas se eligieron, por qué y de dónde provienen. |
|
|
106
|
+
| **Re-ingest** | Las salidas seleccionadas se devuelven como registros candidatos con el origen completo de la generación. |
|
|
85
107
|
|
|
86
|
-
## Por qué existe
|
|
108
|
+
## Por qué existe esto
|
|
87
109
|
|
|
88
|
-
Los datos de entrenamiento son el
|
|
110
|
+
Los datos de entrenamiento son el artefacto más importante en cualquier flujo de trabajo de IA visual. Pero la mayoría de los datos de entrenamiento son una carpeta de imágenes sin historial, sin rastro de evaluación y sin conexión con las reglas de estilo que se suponía que debían seguir.
|
|
89
111
|
|
|
90
|
-
Style Dataset Lab hace que
|
|
112
|
+
Style Dataset Lab hace que la conexión sea explícita. Tu constitución define las reglas. Tu rúbrica define las dimensiones de puntuación. Tus registros de curación registran el juicio. El enlace del canon prueba la conexión. Y tu conjunto de datos lleva todo eso adelante como información estructurada, consultable y reproducible.
|
|
91
113
|
|
|
92
|
-
El resultado práctico: cuando
|
|
114
|
+
El resultado práctico: cuando tu LoRA se desvía, puedes preguntar *por qué*. Cuando tu próxima ronda de entrenamiento necesita mejores datos, sabes exactamente qué registros son casi correctos y cuál es la única regla que no cumplieron. Cuando un nuevo miembro del equipo pregunta cuál es el lenguaje visual del proyecto, la respuesta no es un panel de Figma, sino una constitución consultable con 1182 ejemplos calificados.
|
|
93
115
|
|
|
94
116
|
## Cinco dominios, reglas reales
|
|
95
117
|
|
|
96
|
-
No son plantillas genéricas. Cada dominio
|
|
118
|
+
No son plantillas genéricas. Cada dominio se entrega con reglas de constitución de grado de producción, definiciones de carriles, rúbricas de puntuación y vocabulario de grupo.
|
|
97
119
|
|
|
98
|
-
| Dominio
|
|
120
|
+
| Dominio | Carriles | Qué se evalúa |
|
|
99
121
|
|--------|-------|-----------------|
|
|
100
|
-
| **game-art** | personaje, entorno, accesorio, interfaz de usuario, nave, interior, equipo
|
|
101
|
-
| **character-design** | retrato, cuerpo
|
|
102
|
-
| **creature-design** | concepto, ortográfico, estudio de detalles, acción, referencia de escala, hábitat
|
|
103
|
-
| **architecture** | exterior, interior, paisaje urbano, detalle estructural, ruina, paisaje
|
|
104
|
-
| **vehicle-mech** | exterior, cabina, componente, esquema, hoja de silueta, variante de daño
|
|
122
|
+
| **game-art** | personaje, entorno, accesorio, interfaz de usuario, nave, interior, equipo | Silueta a escala de juego, identificación de facción, desgaste y envejecimiento |
|
|
123
|
+
| **character-design** | retrato, cuerpo completo, rotación, hoja de expresión, pose de acción | Proporciones, lógica del disfraz, personalidad, claridad del gesto |
|
|
124
|
+
| **creature-design** | concepto, ortográfico, estudio de detalles, acción, referencia de escala, hábitat | Anatomía, lógica evolutiva, distinción de la silueta |
|
|
125
|
+
| **architecture** | exterior, interior, paisaje urbano, detalle estructural, ruina, paisaje | Estructura, consistencia del material, perspectiva, coherencia de la época |
|
|
126
|
+
| **vehicle-mech** | exterior, cabina, componente, esquema, hoja de silueta, variante de daño | Lógica mecánica, lenguaje de diseño, puntos de acceso, narrativa de daños |
|
|
105
127
|
|
|
106
128
|
## Estructura del proyecto
|
|
107
129
|
|
|
108
|
-
Cada proyecto es independiente. Cinco archivos de configuración JSON definen las reglas; todo lo demás
|
|
130
|
+
Cada proyecto es independiente. Cinco archivos de configuración JSON definen las reglas; todo lo demás son datos.
|
|
109
131
|
|
|
110
132
|
```
|
|
111
133
|
projects/my-project/
|
|
@@ -129,17 +151,17 @@ projects/my-project/
|
|
|
129
151
|
|
|
130
152
|
## Propiedades de confianza
|
|
131
153
|
|
|
132
|
-
Estas no son
|
|
154
|
+
Estas no son aspiracionales. Se aplican rigurosamente.
|
|
133
155
|
|
|
134
156
|
- **Las instantáneas son inmutables.** La huella digital de la configuración (SHA-256) demuestra que nada ha cambiado.
|
|
135
|
-
- **Las divisiones evitan fugas
|
|
136
|
-
- **Los manifiestos son contratos
|
|
137
|
-
- **Los adaptadores no pueden modificar la
|
|
138
|
-
- **Las salidas generadas
|
|
157
|
+
- **Las divisiones evitan fugas.** Las familias de sujetos (por identidad, linaje o sufijo de ID) nunca cruzan los límites de las particiones.
|
|
158
|
+
- **Los manifiestos son contratos congelados.** Hash de exportación + huella digital de la configuración. Si algo cambia, cree uno nuevo.
|
|
159
|
+
- **Los adaptadores no pueden modificar la verdad.** Diseño diferente, mismos registros. Sin adiciones, sin eliminaciones, sin reclasificaciones.
|
|
160
|
+
- **Las salidas generadas vuelven a entrar mediante revisión.** No hay atajos. Curar y vincular como todo lo demás.
|
|
139
161
|
|
|
140
162
|
## Star Freight
|
|
141
163
|
|
|
142
|
-
El repositorio incluye un ejemplo
|
|
164
|
+
El repositorio incluye un ejemplo completo y funcional: 1.182 registros, 5 facciones, 7 rutas, 24 reglas de constitución, 892 activos aprobados, 2 perfiles de entrenamiento. Un canon visual de ciencia ficción con toques ásperos, totalmente curado.
|
|
143
165
|
|
|
144
166
|
```bash
|
|
145
167
|
git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
|
|
@@ -149,9 +171,9 @@ sdlab snapshot create --project star-freight # 839 eligible records
|
|
|
149
171
|
sdlab split build --project star-freight # zero subject leakage
|
|
150
172
|
```
|
|
151
173
|
|
|
152
|
-
## Formatos
|
|
174
|
+
## Formatos posteriores
|
|
153
175
|
|
|
154
|
-
`sdlab` es el propietario del conjunto de datos. La conversión de
|
|
176
|
+
`sdlab` es el propietario del conjunto de datos. La conversión de formato la gestiona [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet y más. `repo-dataset` renderiza; nunca decide qué incluir.
|
|
155
177
|
|
|
156
178
|
## Instalación
|
|
157
179
|
|
|
@@ -161,9 +183,9 @@ npm install -g @mcptoolshop/style-dataset-lab
|
|
|
161
183
|
|
|
162
184
|
Requiere Node.js 20+ y [ComfyUI](https://github.com/comfyanonymous/ComfyUI) en localhost:8188 para la generación.
|
|
163
185
|
|
|
164
|
-
###
|
|
186
|
+
### Pruébalo sin ComfyUI
|
|
165
187
|
|
|
166
|
-
|
|
188
|
+
Puedes explorar toda la funcionalidad que no implica la generación (inspección, curación, instantánea, división, exportación) utilizando el proyecto Star Freight incluido sin instalar ComfyUI ni descargar ningún peso de SDXL.
|
|
167
189
|
|
|
168
190
|
```bash
|
|
169
191
|
# Scaffold a fresh project (no ComfyUI needed)
|
|
@@ -176,13 +198,13 @@ sdlab project doctor --project test
|
|
|
176
198
|
sdlab snapshot create --dry-run --project star-freight
|
|
177
199
|
```
|
|
178
200
|
|
|
179
|
-
`sdlab project doctor` valida cada configuración del proyecto (constitución,
|
|
201
|
+
`sdlab project doctor` valida cada configuración del proyecto (constitución, rutas, rúbrica, terminología) e informa sobre la elegibilidad sin tocar la GPU. Cualquier comando que modifique el estado generado acepta `--dry-run` para previsualizar el efecto primero.
|
|
180
202
|
|
|
181
|
-
Si
|
|
203
|
+
Si olvidas `--project`, la CLI recurre al primer proyecto que encuentra en `projects/` e imprime una advertencia; pasa `--project` explícitamente para silenciarla.
|
|
182
204
|
|
|
183
|
-
###
|
|
205
|
+
### Reanudando una ejecución interrumpida
|
|
184
206
|
|
|
185
|
-
Las
|
|
207
|
+
Las ejecuciones de generación largas se pueden reanudar sin rehacer el trabajo completado:
|
|
186
208
|
|
|
187
209
|
```bash
|
|
188
210
|
# Skip subjects whose record + image are already on disk.
|
|
@@ -194,36 +216,36 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
|
|
|
194
216
|
sdlab batch generate --resume batch_2026-04-22_001 --project my-project
|
|
195
217
|
```
|
|
196
218
|
|
|
197
|
-
Ambos comandos funcionan porque cada ranura escribe su entrada de manifiesto
|
|
219
|
+
Ambos comandos funcionan porque cada ranura escribe su entrada de manifiesto atómicamente al finalizar; un fallo a mitad de la ejecución nunca corrompe el estado parcial.
|
|
198
220
|
|
|
199
221
|
## Solución de problemas
|
|
200
222
|
|
|
201
223
|
Modos de fallo comunes y soluciones:
|
|
202
224
|
|
|
203
225
|
**`ECONNREFUSED 127.0.0.1:8188` en cualquier `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
|
|
204
|
-
ComfyUI no se está ejecutando.
|
|
226
|
+
ComfyUI no se está ejecutando. Inicia ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) y confirma con `curl http://127.0.0.1:8188/system_stats`. Para apuntar a un host/puerto diferente, establece `COMFY_URL=http://host:port`.
|
|
205
227
|
|
|
206
228
|
**`missing checkpoint` / `LoRA weight not found`**
|
|
207
|
-
|
|
229
|
+
El perfil de flujo de trabajo especifica un archivo de modelo que no está en la carpeta `models/checkpoints/` o `models/loras/` de ComfyUI. Abre `projects/<project>/workflows/profiles/<profile>.json`, localiza el campo `checkpoint` o `lora` y, ya sea descarga el peso referenciado o cámbialo por uno que ya tengas. Vuelve a ejecutar `sdlab project doctor --project <project>` para confirmar la solución.
|
|
208
230
|
|
|
209
|
-
|
|
231
|
+
**Errores de `sdlab project doctor`**
|
|
210
232
|
Doctor devuelve códigos de error estructurados. Algunos comunes:
|
|
211
|
-
- `E_PROJECT_NOT_FOUND
|
|
212
|
-
- `E_CONFIG_INVALID
|
|
213
|
-
- `E_RECORD_DRIFT
|
|
233
|
+
- `E_PROJECT_NOT_FOUND`: el directorio del proyecto no existe en `projects/`. Verifica la ortografía.
|
|
234
|
+
- `E_CONFIG_INVALID`: uno de los cinco archivos de configuración JSON falló la validación del esquema. El campo `hint` indica el archivo y el campo incorrectos.
|
|
235
|
+
- `E_RECORD_DRIFT`: la huella digital de la configuración de un registro ya no coincide con su origen. Vuelve a curar o vuelve a vincular según lo que sugiera la pista.
|
|
214
236
|
|
|
215
|
-
**`No
|
|
216
|
-
Una advertencia leve.
|
|
237
|
+
**`No --project specified, falling back to <name>`**
|
|
238
|
+
Una advertencia leve. Pasa `--project <name>` explícitamente para seleccionar el proyecto correcto y silenciar la advertencia.
|
|
217
239
|
|
|
218
|
-
**Problemas de memoria
|
|
219
|
-
|
|
240
|
+
**Problemas de memoria VRAM / "Painterly"**
|
|
241
|
+
Consulta `docs/internal/HANDOFF.md` para obtener las notas sobre el ajuste del ruido "painterly". En resumen: reduce la intensidad del ruido, disminuye el tamaño del lote o cambia a un punto de control más pequeño en tu perfil de flujo de trabajo.
|
|
220
242
|
|
|
221
|
-
**Informar
|
|
222
|
-
|
|
243
|
+
**Informar errores**
|
|
244
|
+
Crea un problema en https://github.com/mcp-tool-shop-org/style-dataset-lab/issues con tu versión de sdlab (`sdlab --version`), la versión de Node (`node -v`), el comando completo y la salida de error estructurada. Una plantilla de informe de errores rellena previamente los campos.
|
|
223
245
|
|
|
224
246
|
## Seguridad
|
|
225
247
|
|
|
226
|
-
Solo
|
|
248
|
+
Solo local. Sin telemetría, sin análisis, sin solicitudes externas. Las imágenes permanecen en tu GPU y sistema de archivos.
|
|
227
249
|
|
|
228
250
|
## Licencia
|
|
229
251
|
|
|
@@ -231,4 +253,4 @@ MIT
|
|
|
231
253
|
|
|
232
254
|
---
|
|
233
255
|
|
|
234
|
-
Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a
|
|
256
|
+
Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
package/README.fr.md
CHANGED
|
@@ -13,11 +13,11 @@
|
|
|
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
|
-
|
|
16
|
+
Écrivez vos règles visuelles. Générez des œuvres d’art. Évaluez chaque image en fonction de ces règles. Diffusez les résultats sous forme de données d’entraînement versionnées et auditables, puis mettez à profit les modèles entraînés dans des flux de travail de production réels et renvoyez les meilleurs résultats dans votre corpus.
|
|
17
17
|
|
|
18
|
-
Style Dataset Lab relie
|
|
18
|
+
Style Dataset Lab relie ce que vous avez écrit concernant votre style artistique au jeu de données à partir duquel vous effectuez réellement l’entraînement, puis boucle le processus jusqu’à la production. Vous définissez une constitution : règles de silhouette, contraintes de palette, langage des matériaux, tout ce qui compte pour votre projet. Le pipeline génère des candidats, les évalue en fonction de ces règles et regroupe les éléments approuvés dans des jeux de données reproductibles où chaque enregistrement explique pourquoi il a été inclus.
|
|
19
19
|
|
|
20
|
-
Ensuite,
|
|
20
|
+
Ensuite, l’environnement de travail de production prend le relais : compilez des briefs de génération à partir des données du projet, exécutez-les via ComfyUI, évaluez les résultats, produisez en série des feuilles d’expression et des planches d’ambiance, sélectionnez les meilleurs résultats et réintégrez-les en tant que nouveaux candidats. La boucle se ferme : produire, sélectionner, examiner, améliorer.
|
|
21
21
|
|
|
22
22
|
## Le pipeline
|
|
23
23
|
|
|
@@ -56,56 +56,78 @@ sdlab select --run run_2026-04-16_001 --approve 001.png,003.png
|
|
|
56
56
|
sdlab reingest selected --selection selection_2026-04-16_001
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
Cette dernière commande est essentielle. Les
|
|
59
|
+
Cette dernière commande est essentielle. Les éléments sélectionnés repassent par le même processus d’évaluation que tous les autres. Le corpus s’enrichit et les règles sont respectées.
|
|
60
60
|
|
|
61
|
-
##
|
|
61
|
+
## Création du canon
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Avant l’exécution du pipeline de jeu de données, l’espace de noms `sdlab canon *` transforme le référentiel d’entités canoniques de votre projet en les trois projections que l’entraînement et la production utilisent réellement, et verrouille les entrées qui ne doivent pas être modifiées.
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
```bash
|
|
66
|
+
# Build three projections from the canon entity store:
|
|
67
|
+
# dataset.jsonl → training adapters
|
|
68
|
+
# prompts/*.j2 → ComfyUI workflow invocation
|
|
69
|
+
# context/*.md → Role OS narrative dispatch
|
|
70
|
+
sdlab canon build --project my-project
|
|
71
|
+
|
|
72
|
+
# Freeze an entry so regeneration can't silently change it
|
|
73
|
+
sdlab canon freeze kael_maren --project my-project --reason "prologue portrait locked"
|
|
74
|
+
|
|
75
|
+
# Report drift on frozen entries since the last clean build
|
|
76
|
+
sdlab canon drift --project my-project
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`canon build` est adressable par contenu : sa sortie est indexée par un `canon_sha` et mise en cache, de sorte qu’une reconstruction du canon non modifié se fait instantanément. `canon freeze` atteste de chaque blocage par rapport à une version spécifique et l’ajoute à un journal d’audit `freeze-events.jsonl` : les entrées `frozen` refusent purement et simplement la régénération, les entrées `soft-advisory` refusent par défaut (contournement avec `--i-know`). `canon drift` recalcule le hachage de chaque entrée surveillée et signale tout ce qui a changé depuis la dernière reconstruction propre.
|
|
80
|
+
|
|
81
|
+
Flux de travail complet dans le manuel : [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/) et [Two-LoRA stacking](handbook/two-lora-stacking/).
|
|
82
|
+
|
|
83
|
+
## Ce que cela produit
|
|
84
|
+
|
|
85
|
+
Sept artefacts de jeu de données et un environnement de travail de production complet. Chaque artefact est lié à ses prédécesseurs, ce qui vous permet de retracer tout enregistrement d’entraînement jusqu’à la règle qui l’a approuvé.
|
|
86
|
+
|
|
87
|
+
| Artefact | Ce que c’est |
|
|
66
88
|
|----------|-----------|
|
|
67
|
-
| **Snapshot** | Sélection
|
|
68
|
-
| **Split** | Partitionnement entraînement/validation/test où les familles de sujets ne
|
|
69
|
-
| **Export package** |
|
|
70
|
-
| **Eval pack** | Tâches de
|
|
71
|
-
| **Training package** | Disposition prête pour l
|
|
72
|
-
| **Eval scorecard** |
|
|
73
|
-
| **Implementation pack** | Exemples
|
|
89
|
+
| **Snapshot** | Sélection des enregistrements figés avec empreinte de configuration. Chaque inclusion a une raison explicite. |
|
|
90
|
+
| **Split** | Partitionnement entraînement/validation/test où les familles de sujets ne franchissent jamais les frontières. |
|
|
91
|
+
| **Export package** | Jeu de données autonome : manifeste, métadonnées, images, partitions, fiche d’informations du jeu de données, sommes de contrôle. |
|
|
92
|
+
| **Eval pack** | Tâches de test tenant compte du canon : couverture des voies, dérive interdite, ancrage/or, continuité des sujets. |
|
|
93
|
+
| **Training package** | Disposition prête pour l’entraîneur via des adaptateurs (`diffusers-lora`, `generic-image-caption`). Même vérité, format différent. |
|
|
94
|
+
| **Eval scorecard** | Résultat de réussite/échec par tâche à partir de l’évaluation des résultats générés par rapport aux ensembles d’évaluation. |
|
|
95
|
+
| **Implementation pack** | Exemples d’invites, échecs connus, tests de continuité et directives de réintégration. |
|
|
74
96
|
|
|
75
|
-
|
|
97
|
+
L’environnement de travail de production ajoute :
|
|
76
98
|
|
|
77
99
|
| Surface | Ce que cela fait |
|
|
78
100
|
|---------|-------------|
|
|
79
|
-
| **Compiled brief** |
|
|
80
|
-
| **Run** | Artefact d
|
|
81
|
-
| **Critique** | Évaluation structurée
|
|
82
|
-
| **Batch** | Production coordonnée
|
|
83
|
-
| **Selection** | Artefact de décision créative : quels
|
|
84
|
-
| **Re-ingest** | Les
|
|
101
|
+
| **Compiled brief** | Instruction de génération déterministe à partir du profil de flux de travail + des données du projet. |
|
|
102
|
+
| **Run** | Artefact d’exécution figé : bref + graines + sorties ComfyUI + manifeste. |
|
|
103
|
+
| **Critique** | Évaluation structurée multidimensionnelle des résultats de l’exécution par rapport au canon. |
|
|
104
|
+
| **Batch** | Production coordonnée multi-slots (feuilles d’expression, planches d’ambiance, ensembles de silhouettes). |
|
|
105
|
+
| **Selection** | Artefact de décision créative : quels éléments ont été choisis, pourquoi et d’où ils proviennent. |
|
|
106
|
+
| **Re-ingest** | Les éléments sélectionnés sont renvoyés en tant qu’enregistrements candidats avec la provenance complète de la génération. |
|
|
85
107
|
|
|
86
108
|
## Pourquoi cela existe
|
|
87
109
|
|
|
88
|
-
Les données d
|
|
110
|
+
Les données d’entraînement constituent l’artefact le plus important dans tout pipeline d’IA visuelle. Mais la plupart des données d’entraînement ne sont qu’un dossier d’images sans historique, sans suivi de l’évaluation et sans lien avec les règles de style qu’elles étaient censées suivre.
|
|
89
111
|
|
|
90
|
-
Style Dataset Lab
|
|
112
|
+
Style Dataset Lab rend le lien explicite. Votre constitution définit les règles. Votre barème définit les dimensions d’évaluation. Vos enregistrements de sélection consignent l’évaluation. Votre liaison canonique prouve le lien. Et votre jeu de données conserve tout cela sous forme de vérité structurée, interrogeable et reproductible.
|
|
91
113
|
|
|
92
|
-
Le résultat pratique : lorsque votre LoRA dérive, vous pouvez demander *pourquoi*. Lorsque votre
|
|
114
|
+
Le résultat pratique : lorsque votre LoRA dérive, vous pouvez demander *pourquoi*. Lorsque votre prochain cycle d’entraînement a besoin de meilleures données, vous savez exactement quels enregistrements sont presque corrects et quelle règle unique ils ont violée. Lorsqu’un nouveau membre de l’équipe demande quelle est la langue visuelle du projet, la réponse n’est pas un tableau Figma, mais une constitution consultable avec 1 182 exemples notés.
|
|
93
115
|
|
|
94
116
|
## Cinq domaines, règles réelles
|
|
95
117
|
|
|
96
|
-
|
|
118
|
+
Pas de modèles d’espace réservé. Chaque domaine est livré avec des règles de constitution de qualité professionnelle, des définitions de voies, des barèmes d’évaluation et un vocabulaire de groupe.
|
|
97
119
|
|
|
98
|
-
| Domaine |
|
|
120
|
+
| Domaine | Voies | Ce qui est évalué |
|
|
99
121
|
|--------|-------|-----------------|
|
|
100
|
-
| **game-art** | personnage, environnement, accessoire, interface utilisateur, vaisseau, intérieur, équipement | Silhouette à l
|
|
101
|
-
| **character-design** | portrait, corps entier,
|
|
102
|
-
| **creature-design** | concept, orthographique, étude
|
|
103
|
-
| **architecture** | extérieur, intérieur, paysage urbain, détail structurel, ruine, paysage | Structure, cohérence des matériaux, perspective, cohérence de l
|
|
104
|
-
| **vehicle-mech** | extérieur, cockpit, composant, schéma, feuille de silhouette, variante
|
|
122
|
+
| **game-art** | personnage, environnement, accessoire, interface utilisateur, vaisseau, intérieur, équipement | Silhouette à l’échelle du jeu, lisibilité de la faction, usure et vieillissement |
|
|
123
|
+
| **character-design** | portrait, corps entier, rotation, feuille d’expression, pose d’action | Proportions, logique des costumes, personnalité, clarté des gestes |
|
|
124
|
+
| **creature-design** | concept, orthographique, étude détaillée, action, référence d’échelle, habitat | Anatomie, logique évolutive, distinction de la silhouette |
|
|
125
|
+
| **architecture** | extérieur, intérieur, paysage urbain, détail structurel, ruine, paysage | Structure, cohérence des matériaux, perspective, cohérence de l’époque |
|
|
126
|
+
| **vehicle-mech** | extérieur, cockpit, composant, schéma, feuille de silhouette, variante de dommage | Logique mécanique, langage du design, points d’accès, récit des dommages |
|
|
105
127
|
|
|
106
128
|
## Structure du projet
|
|
107
129
|
|
|
108
|
-
Chaque projet est autonome. Cinq fichiers de configuration JSON définissent les règles
|
|
130
|
+
Chaque projet est autonome. Cinq fichiers de configuration JSON définissent les règles ; tout le reste sont des données.
|
|
109
131
|
|
|
110
132
|
```
|
|
111
133
|
projects/my-project/
|
|
@@ -129,17 +151,17 @@ projects/my-project/
|
|
|
129
151
|
|
|
130
152
|
## Propriétés de confiance
|
|
131
153
|
|
|
132
|
-
|
|
154
|
+
Il ne s’agit pas d’objectifs à atteindre. Elles sont appliquées.
|
|
133
155
|
|
|
134
|
-
- **Les instantanés sont immuables.** L
|
|
135
|
-
- **Les
|
|
136
|
-
- **Les manifestes sont des contrats figés.**
|
|
137
|
-
- **Les adaptateurs ne peuvent pas modifier la vérité.** Disposition différente, mêmes enregistrements. Pas d
|
|
138
|
-
- **Les
|
|
156
|
+
- **Les instantanés sont immuables.** L’empreinte de configuration (SHA-256) prouve qu’aucun changement n’a été apporté.
|
|
157
|
+
- **Les séparations empêchent les fuites.** Les familles de sujets (par identité, lignée ou suffixe d’ID) ne traversent jamais les limites des partitions.
|
|
158
|
+
- **Les manifestes sont des contrats figés.** Hachage d’exportation + empreinte de configuration. Si quoi que ce soit change, créez-en un nouveau.
|
|
159
|
+
- **Les adaptateurs ne peuvent pas modifier la vérité.** Disposition différente, mêmes enregistrements. Pas d’ajouts, pas de suppressions, pas de reclassification.
|
|
160
|
+
- **Les résultats générés sont réintégrés via une revue.** Pas de contournement. Organisez et liez comme tout le reste.
|
|
139
161
|
|
|
140
162
|
## Star Freight
|
|
141
163
|
|
|
142
|
-
Le dépôt
|
|
164
|
+
Le dépôt inclut un exemple complet fonctionnel : 1 182 enregistrements, 5 factions, 7 voies, 24 règles de constitution, 892 actifs approuvés, 2 profils d’entraînement. Un canon visuel RPG de science-fiction réaliste, entièrement organisé.
|
|
143
165
|
|
|
144
166
|
```bash
|
|
145
167
|
git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
|
|
@@ -149,9 +171,9 @@ sdlab snapshot create --project star-freight # 839 eligible records
|
|
|
149
171
|
sdlab split build --project star-freight # zero subject leakage
|
|
150
172
|
```
|
|
151
173
|
|
|
152
|
-
## Formats
|
|
174
|
+
## Formats en aval
|
|
153
175
|
|
|
154
|
-
`sdlab` est propriétaire
|
|
176
|
+
`sdlab` est propriétaire du jeu de données. La conversion de format est gérée par [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset) : TRL, LLaVA, Qwen2-VL, JSONL, Parquet et plus encore. `repo-dataset` effectue le rendu ; il ne décide jamais de l’inclusion.
|
|
155
177
|
|
|
156
178
|
## Installation
|
|
157
179
|
|
|
@@ -159,11 +181,11 @@ sdlab split build --project star-freight # zero subject leakage
|
|
|
159
181
|
npm install -g @mcptoolshop/style-dataset-lab
|
|
160
182
|
```
|
|
161
183
|
|
|
162
|
-
Nécessite Node.js 20+ et [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
|
184
|
+
Nécessite Node.js 20+ et [ComfyUI](https://github.com/comfyanonymous/ComfyUI) sur localhost:8188 pour la génération.
|
|
163
185
|
|
|
164
186
|
### Essayez-le sans ComfyUI
|
|
165
187
|
|
|
166
|
-
Vous pouvez explorer toute la surface
|
|
188
|
+
Vous pouvez explorer toute la surface non liée à la génération (inspection, organisation, instantané, séparation, exportation) en utilisant le projet Star Freight inclus sans installer ComfyUI ni télécharger des poids SDXL.
|
|
167
189
|
|
|
168
190
|
```bash
|
|
169
191
|
# Scaffold a fresh project (no ComfyUI needed)
|
|
@@ -176,13 +198,13 @@ sdlab project doctor --project test
|
|
|
176
198
|
sdlab snapshot create --dry-run --project star-freight
|
|
177
199
|
```
|
|
178
200
|
|
|
179
|
-
`sdlab project doctor` valide chaque configuration de projet (constitution, voies,
|
|
201
|
+
`sdlab project doctor` valide chaque configuration de projet (constitution, voies, rubriques, terminologie) et signale l’éligibilité sans toucher au GPU. Toute commande qui modifie l’état généré accepte l’option `--dry-run` pour prévisualiser d’abord l’effet.
|
|
180
202
|
|
|
181
|
-
Si vous oubliez `--project`, l
|
|
203
|
+
Si vous oubliez `--project`, l’interface de ligne de commande revient au premier projet qu’elle trouve dans `projects/` et affiche un avertissement ; passez explicitement `--project` pour le supprimer.
|
|
182
204
|
|
|
183
|
-
### Reprise d
|
|
205
|
+
### Reprise d’une exécution interrompue
|
|
184
206
|
|
|
185
|
-
Les longues exécutions peuvent être reprises sans
|
|
207
|
+
Les longues exécutions peuvent être reprises sans refaire le travail terminé :
|
|
186
208
|
|
|
187
209
|
```bash
|
|
188
210
|
# Skip subjects whose record + image are already on disk.
|
|
@@ -194,40 +216,40 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
|
|
|
194
216
|
sdlab batch generate --resume batch_2026-04-22_001 --project my-project
|
|
195
217
|
```
|
|
196
218
|
|
|
197
|
-
Les deux commandes fonctionnent car chaque emplacement écrit son entrée de manifeste de manière atomique lorsqu
|
|
219
|
+
Les deux commandes fonctionnent car chaque emplacement écrit son entrée de manifeste de manière atomique lorsqu’il est terminé ; un plantage en cours d’exécution ne corrompt jamais l’état partiel.
|
|
198
220
|
|
|
199
221
|
## Dépannage
|
|
200
222
|
|
|
201
|
-
Modes
|
|
223
|
+
Modes d’échec courants et solutions :
|
|
202
224
|
|
|
203
225
|
**`ECONNREFUSED 127.0.0.1:8188` pour toute commande `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
|
|
204
|
-
ComfyUI n
|
|
226
|
+
ComfyUI n’est pas en cours d’exécution. Démarrez ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) et confirmez avec `curl http://127.0.0.1:8188/system_stats`. Pour pointer vers un autre hôte/port, définissez `COMFY_URL=http://host:port`.
|
|
205
227
|
|
|
206
228
|
**`missing checkpoint` / `LoRA weight not found`**
|
|
207
|
-
Votre profil de flux de travail
|
|
229
|
+
Votre profil de flux de travail nomme un fichier modèle qui ne se trouve pas dans le dossier `models/checkpoints/` ou `models/loras/` de ComfyUI. Ouvrez `projects/<project>/workflows/profiles/<profile>.json`, localisez le champ `checkpoint` ou `lora`, et téléchargez soit le poids référencé, soit remplacez-le par un que vous avez déjà. Réexécutez `sdlab project doctor --project <project>` pour confirmer la correction.
|
|
208
230
|
|
|
209
|
-
|
|
210
|
-
Doctor renvoie des codes d
|
|
211
|
-
- `E_PROJECT_NOT_FOUND` — le répertoire du projet n
|
|
212
|
-
- `E_CONFIG_INVALID` — l
|
|
213
|
-
- `E_RECORD_DRIFT` — l
|
|
231
|
+
**Erreurs de `sdlab project doctor`**
|
|
232
|
+
Doctor renvoie des codes d’erreur structurés. Les plus courants :
|
|
233
|
+
- `E_PROJECT_NOT_FOUND` — le répertoire du projet n’existe pas dans `projects/`. Vérifiez l’orthographe.
|
|
234
|
+
- `E_CONFIG_INVALID` — l’un des cinq fichiers de configuration JSON a échoué à la validation du schéma. Le champ `hint` indique le fichier et le champ défectueux.
|
|
235
|
+
- `E_RECORD_DRIFT` — l’empreinte de configuration d’un enregistrement ne correspond plus à sa source. Réorganisez ou reliez comme le suggère l’indice.
|
|
214
236
|
|
|
215
237
|
**`No --project specified, falling back to <name>`**
|
|
216
|
-
Un avertissement
|
|
238
|
+
Un simple avertissement. Passez explicitement `--project <name>` pour sélectionner le bon projet et supprimer l’avertissement.
|
|
217
239
|
|
|
218
|
-
**Problèmes
|
|
219
|
-
Consultez
|
|
240
|
+
**Problèmes de mémoire VRAM / problèmes d’aspect pictural**
|
|
241
|
+
Consultez `docs/internal/HANDOFF.md` pour les notes sur le réglage du débruitage pictural. En résumé : diminuez la force du débruitage, réduisez la taille du lot ou passez à un point de contrôle plus petit dans votre profil de flux de travail.
|
|
220
242
|
|
|
221
|
-
**Signalement
|
|
222
|
-
|
|
243
|
+
**Signalement des bogues**
|
|
244
|
+
Créez un problème sur https://github.com/mcp-tool-shop-org/style-dataset-lab/issues avec votre version de sdlab (`sdlab --version`), la version de Node (`node -v`), la commande complète et la sortie d’erreur structurée. Un modèle de rapport de bogue préremplit les champs.
|
|
223
245
|
|
|
224
246
|
## Sécurité
|
|
225
247
|
|
|
226
|
-
|
|
248
|
+
Uniquement local. Pas de télémétrie, pas d’analyses, pas de requêtes externes. Les images restent sur votre GPU et votre système de fichiers.
|
|
227
249
|
|
|
228
250
|
## Licence
|
|
229
251
|
|
|
230
|
-
|
|
252
|
+
MIT
|
|
231
253
|
|
|
232
254
|
---
|
|
233
255
|
|