@mcptoolshop/style-dataset-lab 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.es.md +111 -59
  3. package/README.fr.md +117 -67
  4. package/README.hi.md +109 -70
  5. package/README.it.md +111 -60
  6. package/README.ja.md +116 -76
  7. package/README.md +58 -2
  8. package/README.pt-BR.md +119 -64
  9. package/README.zh.md +108 -67
  10. package/bin/sdlab.js +50 -1
  11. package/lib/adapters/ai-toolkit.js +187 -30
  12. package/lib/adapters/comfyui-workflows.js +84 -9
  13. package/lib/asset-ingest.js +575 -0
  14. package/lib/asset-masks.js +323 -0
  15. package/lib/asset-source.js +1176 -0
  16. package/lib/canon-author.js +350 -0
  17. package/lib/canon-review-gate.js +205 -0
  18. package/lib/colab-launcher-guards.js +285 -0
  19. package/lib/export.js +1 -1
  20. package/lib/freeze-gate.js +3 -0
  21. package/lib/generated-provenance.js +178 -5
  22. package/lib/lane1-render.js +668 -0
  23. package/lib/memory-store.js +663 -0
  24. package/lib/model-licences.js +305 -0
  25. package/lib/npy-meta.js +130 -0
  26. package/lib/png-meta.js +512 -0
  27. package/lib/records.js +54 -8
  28. package/lib/reingest-selected.js +15 -1
  29. package/lib/reingest.js +27 -3
  30. package/lib/run-manifest.js +59 -11
  31. package/lib/train-runs.js +214 -0
  32. package/lib/verifier.js +3 -0
  33. package/lib/verify-chain.js +367 -0
  34. package/package.json +2 -2
  35. package/scripts/asset-ingest.js +160 -0
  36. package/scripts/canon-draft.js +82 -0
  37. package/scripts/canon-freeze.js +4 -0
  38. package/scripts/colab/REAL_SERVICE_ASSUMPTIONS.md +14 -0
  39. package/scripts/colab/ai-toolkit-override-py315.txt +45 -0
  40. package/scripts/colab/colab_window.sh +587 -0
  41. package/scripts/colab/lane1_render.py +970 -0
  42. package/scripts/colab/launch_guards.py +564 -0
  43. package/scripts/colab/launch_lane1_stub.sh +309 -0
  44. package/scripts/colab/launch_lane3_stub.sh +366 -0
  45. package/scripts/colab/remote_runner.py +59 -0
  46. package/scripts/doctor.js +1 -0
  47. package/scripts/generate.js +38 -12
  48. package/scripts/verify.js +67 -0
package/README.pt-BR.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.it.md">Italiano</a> | <a href="README.md">English</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.it.md">Italiano</a> | <a href="README.md">English</a>
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -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
- Escreva suas regras visuais. Gere arte. Avalie cada imagem com base nessas regras. Envie os resultados como dados de treinamento auditáveis e versionados — e, em seguida, coloque modelos treinados para trabalhar em fluxos de trabalho de produção reais e insira as melhores saídas de volta no seu corpus.
16
+ Escreva suas regras visuais. Gere arte. Avalie cada imagem com base nessas regras. Envie os resultados como dados de treinamento versionados e auditáveis — e, em seguida, coloque os modelos treinados em uso em fluxos de trabalho de produção reais e alimente os melhores resultados de volta ao seu corpus.
17
17
 
18
- O Style Dataset Lab conecta o que você escreveu sobre seu estilo artístico ao conjunto de dados do qual você realmente treina, e então fecha o ciclo até a produção. Você define uma constituição — regras de silhueta, restrições de paleta, linguagem dos materiais, qualquer coisa que seja importante para o seu projeto. O pipeline gera candidatos, avalia-os com base nessas regras e empacota o trabalho aprovado em conjuntos de dados reproduzíveis, onde cada registro explica por que foi incluído.
18
+ O Style Dataset Lab conecta o que você escreveu sobre seu estilo artístico ao conjunto de dados do qual você realmente treina, e, em seguida, fecha o ciclo até a produção. Você define uma constituição — regras de silhueta, restrições de paleta, linguagem de materiais, qualquer coisa que seja importante para o seu projeto. O pipeline gera candidatos, avalia-os com base nessas regras e empacota o trabalho aprovado em conjuntos de dados reproduzíveis, onde cada registro explica por que foi incluído.
19
19
 
20
- Em seguida, a estação de trabalho de produção assume o controle: compile resumos de geração a partir da verdade do projeto, execute-os no ComfyUI, critique as saídas, produza em lote folhas de expressão e painéis de ambiente, selecione os melhores resultados e reintroduza-os como novos candidatos. O ciclo se fecha: produzir, selecionar, revisar, fortalecer.
20
+ Em seguida, o ambiente de trabalho de produção assume o controle: compile resumos de geração a partir da verdade do projeto, execute-os no ComfyUI, critique os resultados, produza em lote folhas de expressão e painéis de ambiente, selecione os melhores resultados e reimporte-os como novos candidatos. O ciclo se fecha: produzir, selecionar, revisar, aprimorar.
21
21
 
22
22
  ## O pipeline
23
23
 
@@ -63,11 +63,61 @@ sdlab select --run run_2026-04-16_001 --approve 001.png,003.png
63
63
  sdlab reingest selected --selection selection_2026-04-16_001
64
64
  ```
65
65
 
66
- Esse último comando é o ponto crucial. As saídas selecionadas retornam pelo mesmo processo de revisão que tudo o mais. O corpus cresce e as regras permanecem válidas.
66
+ Esse último comando é o ponto crucial. Os resultados selecionados retornam pelo mesmo processo de revisão que todos os outros. O corpus cresce e as regras permanecem válidas.
67
67
 
68
- ## Criação do cânone
68
+ ## O fluxo de ativos — exportações 3D como dados de treinamento
69
69
 
70
- Before the dataset pipeline runs, the `sdlab canon *` namespace turns your project's canon entity store into the three projections training and production actually consume — and locks the entries that must not drift.
70
+ `sdlab ingest` aceita imagens básicas sem questionar. `sdlab asset ingest` exige um **contrato**.
71
+
72
+ Quando um ativo 3D passa pelo seu portão de aceitação, renderizá-lo novamente a partir de N ângulos fornece uma
73
+ visualização consistente *por construção* — uma propriedade que a difusão por visualização
74
+ não pode garantir. O fluxo de ativos aceita essas exportações como dados de treinamento com informações de procedência:
75
+
76
+ ```bash
77
+ # Validate an export's manifest end to end, run the gates, write nothing
78
+ sdlab asset ingest ~/exports/dragon_dense --project my-project --dry-run
79
+
80
+ # Register it: records, candidates, masks, channels, receipt
81
+ sdlab asset ingest ~/exports/dragon_dense --project my-project
82
+ ```
83
+
84
+ O diretório de exportação contém um manifesto `asset-source.json` (esquema **1.3.0**) declarando
85
+ seus canais, faixas de paleta, limites do portão, veredicto de aceitação, registro de estilo, como
86
+ as renderizações foram criadas e sua procedência de geração. O sdlab comprova cada declaração
87
+ em relação aos bytes reais e rejeita toda a ingestão em caso de violação — nada é registrado
88
+ com um manifesto inválido.
89
+
90
+ **A junção:** o sdlab fornece o mecanismo, o ativo fornece a semântica. O sdlab nunca faz ray tracing,
91
+ nunca renderiza e nunca aprende que um canal chamado "procedência" é especial. Ele comprova,
92
+ mede, registra e empacota. O que os números *significam* permanece com o ativo.
93
+
94
+ O que o contrato exige:
95
+
96
+ | estágio | o que é comprovado |
97
+ |---|---|
98
+ | **schema** | forma, IDs, faixas de paleta bem formadas e um veredicto de aceitação que é literalmente `"accepted"` |
99
+ | **containment** | cada caminho referenciado resolve *dentro* do diretório de exportação (é uma entrada não confiável) e existe |
100
+ | **encoding** | o IHDR de um PNG corresponde à sua codificação declarada; um cabeçalho NPY corresponde ao seu dtype e forma declarados. Um manifesto que "parece correto", mas discorda de seus bytes, é a classe de falha que este fluxo existe para impedir |
101
+ | **categorical** | PNGs indexados comprovam que PLTE ⊆ paleta declarada; canais filtrados por `nearest` recebem uma decodificação de pixel *exaustiva*; NPYs categóricos recebem uma varredura de valor exaustiva |
102
+ | **gates** | o portão de paleta é executado por renderização, a partir das próprias faixas e limites do manifesto — uma renderização com falha é rejeitada de forma clara e relatada, nunca admitida silenciosamente |
103
+
104
+ Os registros são armazenados **sem curadoria** (`judgment: null`) com `provenance.source: "asset"`, contendo
105
+ o bloco de aceitação literalmente, hashes por arquivo, câmera e orientação derivada, as
106
+ medidas do portão, o registro de estilo declarado e, por imagem, o quadro de geração + semente. Em seguida,
107
+ eles passam pelo mesmo processo de curadoria que todos os outros registros.
108
+
109
+ A ingestão também relata o que um manifesto *não* declarou — um registro de estilo desconhecido, uma
110
+ falta de `identity.subject_name`, ausência de procedência de geração — como **avisos** em vez de
111
+ falhas. Eles são incluídos no recibo e impressos no CLI. Uma lacuna sobre a qual ninguém é informado é uma lacuna
112
+ que ninguém pode preencher; e, como um manifesto pode *declarar* que suas renderizações são derivações determinísticas sem uma semente própria, o fluxo nunca relata uma lacuna em uma exportação que está
113
+ correta.
114
+
115
+ Contrato completo, a escada de validação e o raciocínio por trás de cada campo:
116
+ [docs/asset-lane-design.md](docs/asset-lane-design.md).
117
+
118
+ ## Criação de conteúdo canônico
119
+
120
+ Antes que o pipeline do conjunto de dados seja executado, o namespace `sdlab canon *` transforma o armazenamento de entidades canônicas do seu projeto nas três projeções que o treinamento e a produção realmente usam — e bloqueia as entradas que não devem mudar.
71
121
 
72
122
  ```bash
73
123
  # Build three projections from the canon entity store:
@@ -83,63 +133,65 @@ sdlab canon freeze kael_maren --project my-project --reason "prologue portrait l
83
133
  sdlab canon drift --project my-project
84
134
  ```
85
135
 
86
- `canon build` é endereçável por conteúdo — sua saída é identificada por um `canon_sha` e armazenada em cache, de modo que uma versão inalterada é reconstruída instantaneamente. `canon freeze` registra cada estado contra uma compilação específica e adiciona a um `freeze-events.jsonl` histórico de auditoria: as entradas `frozen` rejeitam explicitamente a regeneração, as entradas `soft-advisory` rejeitam por padrão (ignorar com `--i-know`). `canon drift` recalcula o hash de cada entrada monitorada e sinaliza qualquer coisa que tenha sido alterada desde a última compilação limpa.
136
+ Um modelo local também pode criar conteúdo canônico, mas nunca decide sobre ele. `sdlab canon draft <class_id> --endpoint <url> --brief "<text>" --out <path>` solicita a um servidor compatível com OpenAI e com loopback apenas uma entrada canônica e prompts, e os grava com `status: "draft"`, `judgment: null` e o modelo de criação carimbado em cada saída. Uma versão preliminar não pode ser congelada até que uma pessoa a aprove: o portão de congelamento rejeita qualquer entrada criada por um modelo sem uma aprovação humana, um motivo e o hash do rascunho exato que foi aprovado.
87
137
 
88
- Fluxo de trabalho completo no manual: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/) e [Two-LoRA stacking](handbook/two-lora-stacking/).
138
+ `canon build` é endereçável por conteúdo — sua saída é indexada por um `canon_sha` e armazenada em cache, portanto, uma reconstrução canônica inalterada é feita instantaneamente. `canon freeze` testemunha cada congelamento em relação a uma versão específica e anexa a um rastreamento de auditoria `freeze-events.jsonl`: as entradas `frozen` rejeitam a regeneração diretamente, as entradas `soft-advisory` rejeitam por padrão (ignorar com `--i-know`). `canon drift` recalcula o hash de cada entrada monitorada e sinaliza qualquer coisa que tenha se movido desde a última construção limpa.
139
+
140
+ Fluxo de trabalho completo no manual: [Construção canônica](handbook/canon-build/), [Congelamento canônico](handbook/canon-freeze/) e [Empilhamento de duas LORAs](handbook/two-lora-stacking/).
89
141
 
90
142
  ## O que ele produz
91
143
 
92
- Sete artefatos de conjunto de dados e uma estação de trabalho de produção completa. Cada artefato está vinculado aos seus predecessores para que você possa rastrear qualquer registro de treinamento até a regra que o aprovou.
144
+ Sete artefatos de conjunto de dados e um ambiente de trabalho de produção completo. Cada artefato está vinculado aos seus predecessores para que você possa rastrear qualquer registro de treinamento até a regra que o aprovou.
93
145
 
94
146
  | Artefato | O que é |
95
147
  |----------|-----------|
96
- | **Snapshot** | Seleção de registros congelados com impressão digital da configuração. Cada inclusão tem uma razão explícita. |
97
- | **Split** | Partição de treinamento/validação/teste onde as famílias de assuntos nunca cruzam os limites. |
98
- | **Export package** | Conjunto de dados autônomo: manifesto, metadados, imagens, divisões, cartão do conjunto de dados, somas de verificação. |
99
- | **Eval pack** | Tarefas de teste com reconhecimento do cânone: cobertura da faixa, desvio proibido, âncora/ouro, continuidade do assunto. |
100
- | **Training package** | Layout pronto para treinamento via adaptadores (`diffusers-lora`, `generic-image-caption`). A mesma verdade, formato diferente. |
101
- | **Eval scorecard** | Resultado de aprovação/reprovação por tarefa a partir da pontuação das saídas geradas em relação aos pacotes de avaliação. |
102
- | **Implementation pack** | Exemplos de prompts, falhas conhecidas, testes de continuidade e orientação para reintrodução. |
148
+ | **Snapshot** | Registro de seleção congelado com impressão digital de configuração. Cada inclusão tem uma razão explícita. |
149
+ | **Split** | Partição de treinamento/validação/teste onde as famílias de assuntos nunca cruzam as fronteiras. |
150
+ | **Export package** | Conjunto de dados autônomo: manifesto, metadados, imagens, divisões, cartão de conjunto de dados, somas de verificação. |
151
+ | **Eval pack** | Tarefas de teste com conhecimento do cânone: cobertura de faixa, desvio proibido, âncora/ouro, continuidade do assunto. |
152
+ | **Training package** | Layout pronto para treinamento por meio de adaptadores (`diffusers-lora`, `generic-image-caption`). A mesma verdade, formato diferente. |
153
+ | **Eval scorecard** | Aprovação/reprovação por tarefa, a partir da avaliação dos resultados gerados em relação aos pacotes de avaliação. |
154
+ | **Implementation pack** | Exemplos de prompts, falhas conhecidas, testes de continuidade e orientações para reprocessamento. |
103
155
 
104
- A estação de trabalho de produção adiciona:
156
+ O ambiente de produção adiciona:
105
157
 
106
158
  | Superfície | O que faz |
107
159
  |---------|-------------|
108
160
  | **Compiled brief** | Instrução de geração determinística a partir do perfil do fluxo de trabalho + verdade do projeto. |
109
- | **Run** | Artefato de execução congelado: resumo + sementes + saídas do ComfyUI + manifesto. |
110
- | **Critique** | Avaliação estruturada multidimensional das saídas da execução em relação ao cânone. |
111
- | **Batch** | Produção coordenada multislot (folhas de expressão, painéis de ambiente, pacotes de silhueta). |
112
- | **Selection** | Artefato de decisão criativa: quais saídas foram escolhidas, por quê e de onde vieram. |
113
- | **Re-ingest** | As saídas selecionadas retornam como registros candidatos com toda a proveniência da geração. |
161
+ | **Run** | Artefato de execução congelado: resumo + sementes + resultados ComfyUI + manifesto. |
162
+ | **Critique** | Avaliação estruturada multidimensional dos resultados da execução em relação ao cânone. |
163
+ | **Batch** | Produção coordenada em vários slots (folhas de expressão, painéis de ambiente, pacotes de silhueta). |
164
+ | **Selection** | Artefato de decisão criativa: quais resultados foram escolhidos, por quê e de onde vieram. |
165
+ | **Re-ingest** | Os resultados selecionados são retornados como registros candidatos com a proveniência completa da geração. |
114
166
 
115
167
  ## Por que isso existe
116
168
 
117
- Os dados de treinamento são o artefato de maior impacto em qualquer pipeline de IA visual. Mas, na maioria das vezes, os dados de treinamento são apenas uma pasta de imagens sem histórico, sem rastreamento de julgamento e sem conexão com as regras de estilo que deveriam ser seguidas.
169
+ Os dados de treinamento são o artefato de maior impacto em qualquer pipeline de IA visual. Mas a maioria dos dados de treinamento é uma pasta de imagens sem histórico, sem rastreamento de julgamento e sem conexão com as regras de estilo que deveriam ser seguidas.
118
170
 
119
- O Style Dataset Lab torna a conexão explícita. Sua constituição define as regras. Seu rubrica define as dimensões de pontuação. Seus registros de curadoria registram o julgamento. Sua vinculação do cânone prova a conexão. E seu conjunto de dados carrega tudo isso para frente como uma verdade estruturada, pesquisável e reproduzível.
171
+ O Style Dataset Lab torna a conexão explícita. Sua constituição define as regras. Sua rubrica define as dimensões de avaliação. Seus registros de curadoria registram o julgamento. Sua vinculação ao cânone comprova a conexão. E seu conjunto de dados carrega tudo isso para frente como uma verdade estruturada, pesquisável e reproduzível.
120
172
 
121
- O resultado prático: quando seu LoRA se desvia, você pode perguntar *por quê*. Quando sua próxima rodada de treinamento precisar de melhores dados, você saberá exatamente quais registros estão próximos do ideal e qual regra única eles não cumpriram. Quando um novo membro da equipe perguntar qual é a linguagem visual do projeto, a resposta não será uma placa Figma — será uma constituição pesquisável com 1.182 exemplos graduados.
173
+ O resultado prático: quando seu LoRA se desvia, você pode perguntar *por quê*. Quando sua próxima rodada de treinamento precisar de dados melhores, você saberá exatamente quais registros estão próximos de falhar e qual regra específica eles não cumpriram. Quando um novo membro da equipe perguntar qual é a linguagem visual do projeto, a resposta não será um painel do Figma — será uma constituição pesquisável com 1.182 exemplos graduados.
122
174
 
123
- ## Comprovado em produção
175
+ ## Comprovado na produção
124
176
 
125
- Este não é um fluxo de trabalho de demonstração. Duas LoRAs reais foram processadas integralmente através dele — o mesmo ciclo de criação → curadoria → treinamento → lançamento, em extremos opostos do espectro da curadoria.
177
+ Este não é um pipeline de demonstração. Duas LoRAs de estilo reais foram implementadas de ponta a ponta por meio dele — o mesmo ciclo cânone → curadoria → treinamento → implementação, em extremidades opostas do espectro de curadoria.
126
178
 
127
- - **[Tallow Fen](handbook/case-study-tallow-fen/)** (design de criaturas) — um bestiário criado do zero, com aproximadamente **34% de aprovação** em 293 registros selecionados (169 rejeitados — a barreira é rigorosa). Enviado `tallow_fen_style_v3.safetensors` @ 1.5 em `qwen-image`.
128
- - **[Rustline](handbook/case-study-rustline/)** (design conceitual) — um conjunto de dados denso e pré-formatado, com aproximadamente **96% de aprovação** em 180 registros. Enviado `rustline_v3ckpt_1500.safetensors` @ 1.0 em `qwen-image`, reutilizado posteriormente por um segundo projeto.
179
+ - **[Tallow Fen](handbook/case-study-tallow-fen/)** (design de criaturas) — um cânone de bestiário criado do zero, **~34% de aprovação** em 293 registros selecionados (169 rejeitados — o filtro rejeita com rigor). Implementado `tallow_fen_style_v3.safetensors` @ 1.5 em `qwen-image`.
180
+ - **[Rustline](handbook/case-study-rustline/)** (design de conceito) — cânone denso e pré-formado, **~96% de aprovação** em 180 registros. Implementado `rustline_v3ckpt_1500.safetensors` @ 1.0 em `qwen-image`, reutilizado em um segundo projeto.
129
181
 
130
- O mesmo fluxo de trabalho, dois perfis de produção: a triagem da curadoria é real (rejeita rigorosamente temas abertos) e uma abordagem disciplinada na criação resulta em alta aceitação.
182
+ O mesmo pipeline, dois perfis de produção: o filtro de curadoria é real (ele rejeita com rigor em assuntos abertos) e o cânone disciplinado gera alta aceitação.
131
183
 
132
184
  ## Cinco domínios, regras reais
133
185
 
134
- Não são apenas modelos de exemplo. Cada domínio é fornecido com regras de constituição de nível de produção, definições de faixa, rubricas de pontuação e vocabulário de grupo.
186
+ Não são apenas modelos de exemplo. Cada domínio é fornecido com regras de constituição de nível de produção, definições de faixa, rubricas de avaliação e vocabulário de grupo.
135
187
 
136
188
  | Domínio | Faixas | O que é avaliado |
137
189
  |--------|-------|-----------------|
138
- | **game-art** | personagem, ambiente, adereço, interface do usuário, nave, interior, equipamento | Silhueta na escala de jogabilidade, leitura da facção, desgaste e envelhecimento |
139
- | **character-design** | retrato, corpo inteiro, rotação, folha de expressão, pose de ação | Proporções, lógica do traje, personalidade, clareza dos gestos |
140
- | **creature-design** | conceito, ortográfico, estudo de detalhes, ação, referência de escala, habitat | Anatomia, lógica evolutiva, distinção da silhueta |
141
- | **architecture** | exterior, interior, paisagem urbana, detalhe estrutural, ruína, paisagem | Estrutura, consistência do material, perspectiva, coerência de época |
142
- | **vehicle-mech** | exterior, cabine, componente, esquema, folha de silhueta, variante de dano | Lógica mecânica, linguagem de design, pontos de acesso, narrativa de danos |
190
+ | **game-art** | personagem, ambiente, acessório, IU, nave, interior, equipamento | Silhueta na escala de jogabilidade, identificação de facção, desgaste e envelhecimento |
191
+ | **character-design** | retrato, corpo inteiro, rotação, folha de expressão, pose de ação | Proporções, lógica do traje, personalidade, clareza da linguagem corporal |
192
+ | **creature-design** | conceito, ortográfico, estudo de detalhes, ação, referência de escala, habitat | Anatomia, lógica evolutiva, distinção de silhueta |
193
+ | **architecture** | exterior, interior, paisagem urbana, detalhes estruturais, ruína, paisagem | Estrutura, consistência do material, perspectiva, coerência de época |
194
+ | **vehicle-mech** | exterior, cabine, componente, esquema, folha de silhueta, variante de dano | Lógica mecânica, linguagem de design, pontos de acesso, narrativa de dano |
143
195
 
144
196
  ## Estrutura do projeto
145
197
 
@@ -167,22 +219,23 @@ projects/my-project/
167
219
 
168
220
  ## Propriedades de confiança
169
221
 
170
- Estas não são apenas aspirações. Elas são aplicadas.
222
+ Não são apenas aspirações. São aplicadas.
171
223
 
172
- - **Os snapshots são imutáveis.** A impressão digital da configuração (SHA-256) prova que nada foi alterado. Os IDs são reivindicados atomicamente, portanto, duas execuções simultâneas não podem se intercalar em um único diretório.
173
- - **As divisões evitam vazamentos — e a verificação que confirma isso é independente.** As famílias de objetos (por identidade, linhagem ou ID normalizado) nunca cruzam os limites da partição, e uma segunda verificação rederiva a identidade do objeto do zero, em vez de reler o mapa que a própria divisão usou. Um cartão de conjunto de dados apenas afirma "vazamento: nenhum (verificado)" quando ambas as verificações são executadas e aprovadas; uma divisão anterior à segunda verificação indica exatamente isso.
174
- - **Os manifestos são contratos congelados.** Hash de exportação + impressão digital da configuração, e `validate` recalcula o hash de cada arquivo que `checksums.txt` lista — portanto, substituir uma imagem dentro de uma exportação finalizada é detectado, incluindo para manifestos criados antes que essa verificação existisse.
175
- - **As execuções fixam seu grafo exato.** Cada geração registra `comfy_workflow_sha` + hashes do conteúdo do modelo/LoRA + política de sementes, portanto, uma onda pode ser reproduzida byte a byte. Os executores JS e Python são mantidos em um hash idêntico por meio de um teste que os inicia. O hashing do modelo é opcional (`--hash-models`) e nunca fabricado — um arquivo irresolvível registra `sha256: null` com uma nota.
224
+ - **As capturas de tela são imutáveis.** A impressão digital da configuração (SHA-256) prova que nada mudou. Os IDs são reivindicados atomicamente, portanto, duas execuções simultâneas não podem se intercalar em um único diretório.
225
+ - **As divisões evitam vazamentos — e a verificação que confirma isso é independente.** As famílias de objetos (por identidade, linhagem ou ID normalizado) nunca cruzam os limites da partição, e uma segunda verificação rederiva a identidade do objeto do zero, em vez de reler o mapa que a própria divisão usou. Um cartão de conjunto de dados apenas afirma "vazamento: nenhum (verificado)" quando ambas as verificações são executadas e aprovadas; uma divisão anterior à segunda verificação afirma exatamente isso.
226
+ - **Os manifestos são contratos congelados.** Hash de exportação + impressão digital da configuração, e `validate` recalcula o hash de cada arquivo `checksums.txt` listado — portanto, substituir uma imagem dentro de uma exportação concluída é detectado, incluindo para manifestos criados antes que essa verificação existisse.
227
+ - **As execuções fixam seu gráfico exato.** Cada geração registra `comfy_workflow_sha` + hashes de conteúdo do modelo/LoRA + política de semente, para que uma onda possa ser reproduzida byte a byte. Os executores JS e Python são mantidos em um hash byte a byte por um teste que os inicia. O hash do modelo é opcional (`--hash-models`) e nunca é fabricado — um arquivo irresolvível registra `sha256: null` com uma nota.
176
228
  - **Nenhum modelo verifica sua própria saída.** Os julgamentos registram `judged_by_model` e `generator_model`; um aviso é acionado se eles forem o mesmo modelo.
177
- - **Um julgamento indica quem o fez.** `eligibility audit` distingue os julgamentos escritos por uma pessoa dos julgamentos gerados por um script em lote, portanto, uma justificativa que descreve uma categoria em vez de uma imagem não pode ser considerada como curadoria.
178
- - **A medição não é veredicto.** `sdlab measure` anexa números a um registro. Nunca define um julgamento, um ajuste ou uma aprovação — e onde uma medida é indefinida para uma imagem, registra `null` em vez de um número plausível.
179
- - **Os adaptadores não podem alterar a verdade.** Layout diferente, os mesmos registros. Sem adições, sem remoções, sem reclassificações.
180
- - **As saídas geradas entram novamente por meio da revisão.** Sem desvio. Curadoria e vinculação como tudo o mais. As imagens geradas externamente entram da mesma forma via `sdlab ingest`, sem curadoria.
181
- - **As falhas são visíveis.** Um registro ausente, uma imagem que não pode ser colocada ou uma legenda que não pode ser criada interrompe uma exportação ou pacote de treinamento em vez de simplesmente reduzi-lo silenciosamente.
229
+ - **Um julgamento indica quem o fez.** `eligibility audit` distingue os julgamentos escritos por uma pessoa dos julgamentos gerados por um script em lote, para que uma justificativa que descreva uma categoria em vez de uma imagem não possa ser considerada como curadoria.
230
+ - **A medição não é o veredicto.** `sdlab measure` anexa números a um registro. Nunca define um julgamento, um ajuste ou uma aprovação — e onde uma medida é indefinida para uma imagem, registra `null` em vez de um número plausível.
231
+ - **Uma versão pode provar de onde veio cada imagem.** `sdlab verify --project <name>` percorre a cadeia offline para cada registro: o proprietário e a licença no registro, a entrada do cânone à qual estava vinculado (por hash), a licença de cada modelo e LoRA que o criou (ID SPDX, URL da licença, a data em que foi lido e o hash do arquivo) e o hash do fluxo de trabalho no manifesto da execução. Uma ligação ausente faz com que a verificação falhe, em vez de ser aprovada.
232
+ - **Os adaptadores não podem alterar a verdade.** Layout diferente, mesmos registros. Sem adições, sem remoções, sem reclassificação.
233
+ - **As saídas geradas entram novamente por meio da revisão.** Sem desvio. Curadoria e vinculação como tudo o mais. As imagens geradas externamente entram da mesma forma por meio de `sdlab ingest`, sem curadoria.
234
+ - **As falhas são visíveis.** Um registro ausente, uma imagem que não pode ser colocada ou uma legenda que não pode ser criada interrompe uma exportação ou pacote de treinamento, em vez de simplesmente reduzi-lo.
182
235
 
183
236
  ## Star Freight
184
237
 
185
- O repositório inclui um exemplo completo e funcional: 1.182 registros, 5 facções, 7 rotas, 24 regras de constituição, 892 ativos aprovados, 2 perfis de treinamento. Um cânone visual de RPG de ficção científica sombrio, totalmente selecionado.
238
+ O repositório inclui um exemplo completo e funcional: 1.182 registros, 5 facções, 7 rotas, 24 regras de constituição, 892 ativos aprovados, 2 perfis de treinamento. Um cânone visual de RPG de ficção científica, totalmente organizado.
186
239
 
187
240
  ```bash
188
241
  git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
@@ -192,7 +245,7 @@ sdlab snapshot create --project star-freight # 839 eligible records
192
245
  sdlab split build --project star-freight # zero subject leakage
193
246
  ```
194
247
 
195
- ## Formatos downstream
248
+ ## Formatos de saída
196
249
 
197
250
  `sdlab` é o proprietário do conjunto de dados. A conversão de formato é tratada por [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e muito mais. `repo-dataset` renderiza; nunca decide a inclusão.
198
251
 
@@ -202,11 +255,11 @@ sdlab split build --project star-freight # zero subject leakage
202
255
  npm install -g @mcptoolshop/style-dataset-lab
203
256
  ```
204
257
 
205
- Requer Node.js 20+ e [ComfyUI](https://github.com/comfyanonymous/ComfyUI) no localhost:8188 para geração.
258
+ Requer Node.js 20+ e [ComfyUI](https://github.com/comfyanonymous/ComfyUI) em localhost:8188 para geração.
206
259
 
207
- ### Experimente sem o ComfyUI
260
+ ### Experimente sem ComfyUI
208
261
 
209
- Você pode explorar toda a funcionalidade não relacionada à geração — inspeção, curadoria, snapshot, divisão, exportação — usando o projeto Star Freight incluído, sem instalar o ComfyUI ou baixar quaisquer pesos SDXL.
262
+ Você pode explorar toda a superfície não de geração — inspeção, curadoria, captura de tela, divisão, exportação — usando o projeto Star Freight incluído, sem instalar ComfyUI ou baixar quaisquer pesos SDXL.
210
263
 
211
264
  ```bash
212
265
  # Scaffold a fresh project (no ComfyUI needed)
@@ -219,7 +272,7 @@ sdlab project doctor --project test
219
272
  sdlab snapshot create --dry-run --project star-freight
220
273
  ```
221
274
 
222
- `sdlab project doctor` validates every project config (constitution, lanes, rubric, terminology) and reports eligibility without touching the GPU. Any command that mutates generated state accepts `--dry-run` to preview the effect first.
275
+ `sdlab project doctor` valida cada configuração de projeto (constituição, rotas, rubrica, terminologia) e relata a elegibilidade sem tocar na GPU. Qualquer comando que modifique o estado gerado aceita `--dry-run` para visualizar o efeito primeiro.
223
276
 
224
277
  Se você esquecer `--project`, a CLI volta ao primeiro projeto que encontrar em `projects/` e imprime um aviso — passe `--project` explicitamente para silenciá-lo.
225
278
 
@@ -237,36 +290,38 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
237
290
  sdlab batch generate --resume batch_2026-04-22_001 --project my-project
238
291
  ```
239
292
 
240
- Ambos os comandos funcionam porque cada slot grava sua entrada de manifesto atomicamente ao terminar — uma falha no meio da execução nunca corrompe o estado parcial.
293
+ Ambos os comandos funcionam porque cada slot grava sua entrada de manifesto atomicamente quando termina — uma falha no meio da execução nunca corrompe o estado parcial.
241
294
 
242
295
  ## Solução de problemas
243
296
 
244
297
  Modos de falha comuns e soluções:
245
298
 
246
299
  **`ECONNREFUSED 127.0.0.1:8188` em qualquer `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
247
- O ComfyUI não está em execução. Inicie o ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) e confirme com `curl http://127.0.0.1:8188/system_stats`. Para apontar para um host/porta diferente, defina `COMFY_URL=http://host:port`.
300
+ ComfyUI não está em execução. Inicie ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) e confirme com `curl http://127.0.0.1:8188/system_stats`. Para apontar para um host/porta diferente, defina `COMFY_URL=http://host:port`.
248
301
 
249
302
  **`missing checkpoint` / `LoRA weight not found`**
250
- O perfil do seu fluxo de trabalho nomeia um arquivo de modelo que não está na pasta `models/checkpoints/` ou `models/loras/` do ComfyUI. Abra `projects/<project>/workflows/profiles/<profile>.json`, localize o campo `checkpoint` ou `lora` e baixe o peso referenciado ou substitua-o por um que você já tenha. Execute novamente `sdlab project doctor --project <project>` para confirmar a correção.
303
+ O perfil de fluxo de trabalho nomeia um arquivo de modelo que não está na pasta `models/checkpoints/` ou `models/loras/` de ComfyUI. Abra `projects/<project>/workflows/profiles/<profile>.json`, localize o campo `checkpoint` ou `lora` e baixe o peso referenciado ou troque-o por um que você já tenha. Execute `sdlab project doctor --project <project>` novamente para confirmar a correção.
251
304
 
252
305
  **Erros `sdlab project doctor`**
253
- O Doctor retorna códigos de erro estruturados. Alguns comuns:
306
+ Doctor retorna códigos de erro estruturados. Alguns comuns:
254
307
  - `E_PROJECT_NOT_FOUND` — o diretório do projeto não existe em `projects/`. Verifique a ortografia.
255
308
  - `E_CONFIG_INVALID` — um dos cinco arquivos de configuração JSON falhou na validação do esquema. O campo `hint` nomeia o arquivo e o campo com problemas.
256
- - `E_RECORD_DRIFT` — a impressão digital da configuração de um registro não corresponde mais à sua fonte. Faça uma nova curadoria ou vincule novamente, conforme sugerido.
309
+ - `E_RECORD_DRIFT` — a impressão digital da configuração de um registro não corresponde mais à sua fonte. Reorganize ou redefina conforme a sugestão.
257
310
 
258
- **Aviso `No --project specified, falling back to <name>`**
311
+ **`No --project specified, falling back to <name>`**
259
312
  Um aviso suave. Passe `--project <name>` explicitamente para selecionar o projeto correto e silenciar o aviso.
260
313
 
261
- **Painterly / VRAM out-of-memory issues**
262
- See `docs/internal/HANDOFF.md` for the painterly denoise tuning notes. In short: lower the denoise strength, reduce batch size, or switch to a smaller checkpoint in your workflow profile.
314
+ **Problemas de memória VRAM / Painterly**
315
+ Consulte `docs/internal/HANDOFF.md` para obter as notas de ajuste de desfoque "painterly". Em resumo: diminua a força do desfoque, reduza o tamanho do lote ou altere para um ponto de verificação menor em seu perfil de fluxo de trabalho.
263
316
 
264
- **Reporting bugs**
265
- File an issue at https://github.com/mcp-tool-shop-org/style-dataset-lab/issues with your sdlab version (`sdlab --version`), Node version (`node -v`), the full command, and the structured error output. A bug-report template prefills the fields.
317
+ **Relatando bugs**
318
+ Crie um problema em https://github.com/mcp-tool-shop-org/style-dataset-lab/issues com sua versão do sdlab (`sdlab --version`), versão do Node (`node -v`), o comando completo e a saída de erro estruturada. Um modelo de relatório de bug preenche os campos.
266
319
 
267
320
  ## Segurança
268
321
 
269
- Apenas local. Sem telemetria, sem análises, sem solicitações externas. As imagens permanecem em sua GPU e sistema de arquivos.
322
+ Local por padrão. Sem telemetria, sem análise e sem solicitações externas da CLI `sdlab`: as imagens permanecem em sua GPU e sistema de arquivos, e `canon draft` recusa qualquer ponto de extremidade que não seja o loopback.
323
+
324
+ A única exceção é a opção de adesão voluntária. `scripts/colab/` contém kits de lançamento para executar um processo de renderização ou uma etapa de treinamento LoRA na sua própria conta do Google Colab. Eles carregam apenas os arquivos que você especificar, são executados dentro de um limite de gastos lido do saldo atual da sua conta Colab e encerram a própria sessão ao serem encerrados. Estes kits são **experimentais**: ainda não passaram por um teste completo em um ambiente real.
270
325
 
271
326
  ## Licença
272
327