@mcptoolshop/style-dataset-lab 3.2.0 → 3.4.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 (95) hide show
  1. package/CHANGELOG.md +58 -1
  2. package/README.es.md +40 -19
  3. package/README.fr.md +74 -53
  4. package/README.hi.md +67 -46
  5. package/README.it.md +42 -21
  6. package/README.ja.md +44 -23
  7. package/README.md +25 -4
  8. package/README.pt-BR.md +42 -21
  9. package/README.zh.md +66 -45
  10. package/bin/sdlab.js +51 -4
  11. package/lib/adapters/ai-toolkit.js +37 -5
  12. package/lib/adapters/comfyui-runner.js +114 -27
  13. package/lib/adapters/comfyui-workflows.js +10 -2
  14. package/lib/adapters/diffusers-lora.js +37 -5
  15. package/lib/adapters/generic-image-caption.js +43 -5
  16. package/lib/args.js +16 -1
  17. package/lib/batch-modes.js +29 -8
  18. package/lib/batch-runs.js +29 -1
  19. package/lib/batch-sheet-render.js +13 -3
  20. package/lib/brief-compiler.js +19 -0
  21. package/lib/candidate-sheet.js +327 -0
  22. package/lib/canon-build/build.js +146 -93
  23. package/lib/captions.js +57 -0
  24. package/lib/card.js +74 -2
  25. package/lib/comfyui.js +116 -18
  26. package/lib/config.js +116 -12
  27. package/lib/critique-engine.js +82 -3
  28. package/lib/critique-render.js +45 -0
  29. package/lib/eligibility.js +121 -9
  30. package/lib/eval-pack.js +14 -14
  31. package/lib/eval-runs.js +33 -0
  32. package/lib/export.js +122 -34
  33. package/lib/freeze-gate.js +69 -16
  34. package/lib/freeze-stamp.js +28 -3
  35. package/lib/generated-provenance.js +16 -1
  36. package/lib/implementation-packs.js +95 -17
  37. package/lib/ingest.js +396 -0
  38. package/lib/judgment-provenance.js +220 -0
  39. package/lib/measure.js +422 -0
  40. package/lib/paths.js +196 -7
  41. package/lib/reingest-selected.js +98 -16
  42. package/lib/run-manifest.js +394 -0
  43. package/lib/run-summary.js +12 -6
  44. package/lib/runtime-runs.js +45 -4
  45. package/lib/snapshot.js +121 -16
  46. package/lib/split.js +364 -48
  47. package/lib/training-manifests.js +114 -21
  48. package/lib/training-packages.js +147 -15
  49. package/lib/verifier.js +67 -0
  50. package/lib/workflow-profiles.js +24 -3
  51. package/package.json +3 -2
  52. package/runtime/comfyui/txt2img-qwen.json +38 -0
  53. package/runtime/comfyui/txt2img-standard.json +21 -0
  54. package/scripts/_resume.js +62 -0
  55. package/scripts/_shared-args.js +44 -0
  56. package/scripts/brief-compile.js +2 -1
  57. package/scripts/brief-show.js +2 -1
  58. package/scripts/canon-bind.js +2 -2
  59. package/scripts/canon-build.js +27 -20
  60. package/scripts/canon-drift.js +16 -7
  61. package/scripts/canon-freeze-status.js +14 -6
  62. package/scripts/canon-freeze.js +27 -11
  63. package/scripts/canon-unfreeze.js +17 -9
  64. package/scripts/card.js +2 -2
  65. package/scripts/compare.js +2 -2
  66. package/scripts/critique.js +48 -8
  67. package/scripts/curate.js +23 -2
  68. package/scripts/doctor.js +181 -55
  69. package/scripts/eligibility.js +42 -2
  70. package/scripts/eval-pack.js +2 -2
  71. package/scripts/eval-run.js +2 -2
  72. package/scripts/export.js +2 -2
  73. package/scripts/generate-controlnet.js +45 -25
  74. package/scripts/generate-identity.js +53 -23
  75. package/scripts/generate-ipadapter.js +44 -23
  76. package/scripts/generate.js +72 -5
  77. package/scripts/implementation-pack.js +2 -2
  78. package/scripts/ingest.js +145 -0
  79. package/scripts/init.js +73 -13
  80. package/scripts/measure.js +170 -0
  81. package/scripts/measure_image.py +458 -0
  82. package/scripts/migrate-records.js +142 -0
  83. package/scripts/painterly-test.js +4 -3
  84. package/scripts/painterly.js +7 -3
  85. package/scripts/qwen_generate.py +334 -13
  86. package/scripts/reingest.js +2 -2
  87. package/scripts/run-generate.js +3 -0
  88. package/scripts/sheet.js +142 -0
  89. package/scripts/snapshot.js +2 -2
  90. package/scripts/split.js +2 -2
  91. package/scripts/training-manifest.js +2 -2
  92. package/scripts/training-package.js +2 -2
  93. package/scripts/training-profile.js +2 -2
  94. package/scripts/workflow-list.js +2 -1
  95. package/scripts/workflow-show.js +2 -1
package/README.hi.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
+ अपनी दृश्य नियम लिखें। कला उत्पन्न करें। प्रत्येक छवि का उन नियमों के विरुद्ध मूल्यांकन करें। परिणामों को संस्करणित, ऑडिट करने योग्य प्रशिक्षण डेटा के रूप में प्रस्तुत करें — फिर प्रशिक्षित मॉडल को वास्तविक उत्पादन वर्कफ़्लो में काम पर लगाएं और सर्वोत्तम आउटपुट को वापस अपने डेटासेट में फीड करें।
17
17
 
18
- स्टाइल डेटासेट लैब आपके कला शैली के बारे में आपने जो कुछ भी लिखा है, उसे उस डेटासेट से जोड़ता है जिससे आप वास्तव में प्रशिक्षण लेते हैं, और फिर उत्पादन प्रक्रिया के अंत तक इस चक्र को पूरा करता है। आप एक संविधान परिभाषित करते हैं — सिल्हूट नियम, रंग पैलेट की सीमाएँ, सामग्री भाषा, या आपके प्रोजेक्ट के लिए जो भी महत्वपूर्ण हो। पाइपलाइन संभावित विकल्पों को उत्पन्न करती है, उनका उन नियमों के अनुसार मूल्यांकन करती है, और स्वीकृत कार्यों को पुनरुत्पादनीय डेटासेट में पैकेज करती है, जहाँ प्रत्येक रिकॉर्ड यह बताता है कि इसे क्यों शामिल किया गया था।
18
+ स्टाइल डेटासेट लैब आपके कला शैली के बारे में आपने जो कुछ भी लिखा है, उसे उस डेटासेट से जोड़ता है जिससे आप वास्तव में प्रशिक्षण लेते हैं, और फिर उत्पादन प्रक्रिया के अंत तक इस चक्र को पूरा करता है। आप एक संविधान परिभाषित करते हैं — सिल्हूट नियम, रंग पैलेट की सीमाएं, सामग्री भाषा, या आपके प्रोजेक्ट के लिए जो भी महत्वपूर्ण हो। पाइपलाइन संभावित विकल्पों को उत्पन्न करती है, उनका उन नियमों के विरुद्ध मूल्यांकन करती है, और स्वीकृत कार्यों को पुनरुत्पादनीय डेटासेट में पैकेज करती है, जहाँ प्रत्येक रिकॉर्ड यह बताता है कि इसे क्यों शामिल किया गया था।
19
19
 
20
- फिर उत्पादन वर्कबेंच कार्यभार संभालता है: प्रोजेक्ट की वास्तविकता से पीढ़ी संबंधी संक्षिप्त विवरण संकलित करें, उन्हें ComfyUI के माध्यम से चलाएं, आउटपुट का मूल्यांकन करें, अभिव्यक्ति शीट और पर्यावरण बोर्ड को बैच में तैयार करें, सर्वोत्तम परिणामों का चयन करें, और उन्हें नए संभावित विकल्पों के रूप में फिर से शामिल करें। चक्र पूरा होता है: उत्पन्न करें, चुनें, समीक्षा करें, मजबूत बनाएं।
20
+ फिर उत्पादन वर्कबेंच कार्यभार संभालता है: प्रोजेक्ट की वास्तविकता से पीढ़ी संबंधी संक्षिप्त विवरण संकलित करें, उन्हें ComfyUI के माध्यम से चलाएं, आउटपुट का मूल्यांकन करें, अभिव्यक्ति शीट और पर्यावरण बोर्ड को बैच में बनाएं, सर्वोत्तम परिणामों का चयन करें, और उन्हें नए संभावित विकल्पों के रूप में फिर से शामिल करें। चक्र पूरा होता है: उत्पन्न करें, चुनें, समीक्षा करें, मजबूत बनाएं।
21
21
 
22
22
  ## पाइपलाइन
23
23
 
@@ -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,11 @@ 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
- यह अंतिम कमांड ही महत्वपूर्ण है। चयनित आउटपुट अन्य सभी चीज़ों की तरह समान समीक्षा प्रक्रिया से गुजरते हैं। डेटासेट बढ़ता है और नियम बने रहते हैं।
66
+ यह अंतिम कमांड ही महत्वपूर्ण है। चयनित आउटपुट अन्य सभी चीज़ों की तरह समान समीक्षा प्रक्रिया के माध्यम से वापस आते हैं। डेटासेट बढ़ता है और नियम बने रहते हैं।
60
67
 
61
68
  ## मानक सामग्री निर्माण
62
69
 
63
- डेटासेट पाइपलाइन चलने से पहले, `sdlab canon *` नेमस्पेस आपके प्रोजेक्ट के मानक इकाई भंडार को उन तीन अनुमानों में बदल देता है जिनका वास्तव में प्रशिक्षण और उत्पादन में उपयोग किया जाता है — और उन प्रविष्टियों को लॉक कर देता है जिन्हें बदला नहीं जाना चाहिए।
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.
64
71
 
65
72
  ```bash
66
73
  # Build three projections from the canon entity store:
@@ -76,7 +83,7 @@ sdlab canon freeze kael_maren --project my-project --reason "prologue portrait l
76
83
  sdlab canon drift --project my-project
77
84
  ```
78
85
 
79
- `canon build` सामग्री-आधारित है — इसका आउटपुट `canon_sha` द्वारा कुंजीबद्ध होता है और कैश किया जाता है, इसलिए अपरिवर्तित मानक का पुनर्निर्माण तुरंत हो जाता है। `canon freeze` प्रत्येक फ़्रीज़ को एक विशिष्ट बिल्ड के विरुद्ध प्रमाणित करता है और इसे `freeze-events.jsonl` ऑडिट ट्रेल में जोड़ता है: `frozen` प्रविष्टियाँ सीधे पुनरुत्पादन से इनकार करती हैं, `soft-advisory` प्रविष्टियाँ डिफ़ॉल्ट रूप से इनकार करती हैं ( `--i-know` के साथ बाईपास करें)। `canon drift` प्रत्येक देखी गई प्रविष्टि के हैश की फिर से गणना करता है और पिछली स्वच्छ बिल्ड के बाद से बदली हुई किसी भी चीज़ को चिह्नित करता है।
86
+ `canon build` सामग्री-आधारित है — इसका आउटपुट एक `canon_sha` द्वारा कुंजीबद्ध होता है और कैश किया जाता है, इसलिए अपरिवर्तित कैनन तुरंत पुनर्निर्मित हो जाता है। `canon freeze` प्रत्येक फ़्रीज़ को एक विशिष्ट बिल्ड के विरुद्ध देखता है और एक `freeze-events.jsonl` ऑडिट ट्रेल में जोड़ता है: `frozen` प्रविष्टियाँ सीधे पुनरुत्पादन से इनकार करती हैं, `soft-advisory` प्रविष्टियाँ डिफ़ॉल्ट रूप से इनकार करती हैं (`--i-know` के साथ बाईपास करें)। `canon drift` प्रत्येक देखी गई प्रविष्टि के हैश की पुनः गणना करता है और उन सभी चीज़ों को चिह्नित करता है जो पिछली स्वच्छ बिल्ड के बाद से बदली हैं।
80
87
 
81
88
  हैंडबुक में संपूर्ण वर्कफ़्लो: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/), और [Two-LoRA stacking](handbook/two-lora-stacking/)।
82
89
 
@@ -90,8 +97,8 @@ sdlab canon drift --project my-project
90
97
  | **Split** | प्रशिक्षण/मान्यकरण/परीक्षण विभाजन जहाँ विषय परिवार कभी भी सीमाओं को पार नहीं करते हैं। |
91
98
  | **Export package** | स्व-निहित डेटासेट: मेनिफ़ेस्ट, मेटाडेटा, छवियाँ, स्प्लिट्स, डेटासेट कार्ड, चेकसम। |
92
99
  | **Eval pack** | मानक-जागरूक परीक्षण कार्य: लेन कवरेज, निषिद्ध विचलन, एंकर/गोल्ड, विषय निरंतरता। |
93
- | **Training package** | ट्रेनर-तैयार लेआउट एडेप्टर के माध्यम से (`diffusers-lora`, `generic-image-caption`)। समान सत्य, अलग प्रारूप। |
94
- | **Eval scorecard** | जनरेट किए गए आउटपुट का मूल्यांकन पैक के विरुद्ध करने पर प्रति-कार्य पास/फेल। |
100
+ | **Training package** | एडाप्टर के माध्यम से ट्रेनर-तैयार लेआउट (`diffusers-lora`, `generic-image-caption`)। समान सत्य, अलग प्रारूप। |
101
+ | **Eval scorecard** | उत्पन्न आउटपुट का मूल्यांकन पैक के विरुद्ध स्कोर करने से प्रति-कार्य पास/फेल। |
95
102
  | **Implementation pack** | संकेत उदाहरण, ज्ञात विफलताएँ, निरंतरता परीक्षण और पुन: समावेश मार्गदर्शन। |
96
103
 
97
104
  उत्पादन वर्कबेंच निम्नलिखित जोड़ता है:
@@ -103,31 +110,40 @@ sdlab canon drift --project my-project
103
110
  | **Critique** | मानक के विरुद्ध रन आउटपुट का संरचित बहु-आयामी मूल्यांकन। |
104
111
  | **Batch** | समन्वित बहु-स्लॉट उत्पादन (अभिव्यक्ति शीट, पर्यावरण बोर्ड, सिल्हूट पैक)। |
105
112
  | **Selection** | रचनात्मक निर्णय कलाकृति: किन आउटपुट को चुना गया, क्यों और वे कहाँ से आए। |
106
- | **Re-ingest** | चयनित आउटपुट पूर्ण पीढ़ी के मूल के साथ उम्मीदवार रिकॉर्ड के रूप में वापस आते हैं। |
113
+ | **Re-ingest** | चयनित आउटपुट पूर्ण पीढ़ी के मूल के साथ संभावित रिकॉर्ड के रूप में वापस आते हैं। |
107
114
 
108
115
  ## यह क्यों मौजूद है
109
116
 
110
- प्रशिक्षण डेटा किसी भी दृश्य AI पाइपलाइन में सबसे महत्वपूर्ण कलाकृति है। लेकिन अधिकांश प्रशिक्षण डेटा छवियों का एक फ़ोल्डर होता है जिसमें कोई इतिहास, कोई निर्णय प्रक्रिया और उस शैली के नियमों से कोई संबंध नहीं होता है जिनका पालन करने वाला था।
117
+ प्रशिक्षण डेटा किसी भी दृश्य AI पाइपलाइन में सबसे अधिक उपयोगी कलाकृति है। लेकिन अधिकांश प्रशिक्षण डेटा छवियों का एक फ़ोल्डर होता है जिसमें कोई इतिहास, कोई निर्णय प्रक्रिया और उस शैली के नियमों से कोई संबंध नहीं होता है जिनका पालन करने वाला था।
118
+
119
+ स्टाइल डेटासेट लैब कनेक्शन को स्पष्ट करता है। आपका संविधान नियमों को परिभाषित करता है। आपकी रुब्रिक स्कोरिंग आयामों को परिभाषित करती है। आपकी क्यूरेशन रिकॉर्ड निर्णय को दर्ज करती है। आपका मानक बंधन कनेक्शन साबित करता है। और आपका डेटासेट उन सभी को संरचित, खोज योग्य, पुनरुत्पादनीय सत्य के रूप में आगे बढ़ाता है।
120
+
121
+ व्यावहारिक परिणाम: जब आपका LoRA भटकता है, तो आप *क्यों* पूछ सकते हैं। जब आपके अगले प्रशिक्षण दौर में बेहतर डेटा की आवश्यकता होती है, तो आपको पता होता है कि कौन से रिकॉर्ड लगभग सफल हैं और वे किस एकल नियम में विफल रहे। जब एक नया टीम सदस्य पूछता है कि प्रोजेक्ट की दृश्य भाषा क्या है, तो उत्तर फ़िग्मा बोर्ड नहीं है — यह 1,182 वर्गीकृत उदाहरणों के साथ एक खोज योग्य संविधान है।
122
+
123
+ ## उत्पादन में सिद्ध
124
+
125
+ यह कोई डेमो पाइपलाइन नहीं है। दो वास्तविक शैली-LoRA इसके माध्यम से अंत-से-अंत तक भेजे गए हैं — समान मानक → क्यूरेट → प्रशिक्षित करें → भेजें चक्र, क्यूरेशन स्पेक्ट्रम के विपरीत छोरों पर।
111
126
 
112
- स्टाइल डेटासेट लैब कनेक्शन को स्पष्ट करता है। आपका संविधान नियमों को परिभाषित करता है। आपकी रुब्रिक स्कोरिंग आयामों को परिभाषित करती है। आपके क्यूरेशन रिकॉर्ड निर्णय को दर्ज करते हैं। आपका मानक बंधन कनेक्शन साबित करता है। और आपका डेटासेट उन सभी को संरचित, क्वेरेबल, पुनरुत्पादनीय सत्य के रूप में आगे बढ़ाता है।
127
+ - **[टैलो फेन](handbook/case-study-tallow-fen/)** (जीव-डिजाइन) — एक स्क्रैच से बनाया गया सर्वश्रेष्ठ कैनन, 293 क्यूरेटेड रिकॉर्ड में लगभग **34% स्वीकृति** (169 अस्वीकृत — गेट कड़ी अस्वीकृति करता है)। `tallow_fen_style_v3.safetensors` को `qwen-image` पर 1.5 पर भेजा गया।
128
+ - **[रस्टलाइन](handbook/case-study-rustline/)** (अवधारणा-डिजाइन) — सघन, पूर्व-निर्मित कैनन, 180 रिकॉर्ड में लगभग **96% स्वीकृति**। `rustline_v3ckpt_1500.safetensors` को `qwen-image` पर 1.0 पर भेजा गया, बाद में एक दूसरे प्रोजेक्ट द्वारा पुन: उपयोग किया गया।
113
129
 
114
- व्यावहारिक परिणाम: जब आपका LoRA भटकता है, तो आप *क्यों* पूछ सकते हैं। जब आपके अगले प्रशिक्षण दौर में बेहतर डेटा की आवश्यकता होती है, तो आपको पता होता है कि कौन से रिकॉर्ड लगभग विफल रहे और उन्होंने किस एकल नियम का उल्लंघन किया। जब एक नया टीम सदस्य पूछता है कि प्रोजेक्ट की दृश्य भाषा क्या है, तो उत्तर फ़िग्मा बोर्ड नहीं है — यह 1,182 वर्गीकृत उदाहरणों के साथ एक खोज योग्य संविधान है।
130
+ समान पाइपलाइन, दो उत्पादन प्रोफ़ाइल: क्यूरेशन गेट वास्तविक है (यह खुले विषयों पर कठिन रूप से अस्वीकार करता है), और अनुशासित मानक उच्च स्वीकृति देता है।
115
131
 
116
132
  ## पाँच डोमेन, वास्तविक नियम
117
133
 
118
134
  कोई प्लेसहोल्डर टेम्पलेट नहीं। प्रत्येक डोमेन उत्पादन-ग्रेड संविधान नियमों, लेन परिभाषाओं, स्कोरिंग रुब्रिक और समूह शब्दावली के साथ आता है।
119
135
 
120
- | डोमेन | लेन | क्या मूल्यांकन किया जाता है |
136
+ | डोमेन | लेन | किस चीज़ का मूल्यांकन किया जाता है |
121
137
  |--------|-------|-----------------|
122
- | **game-art** | चरित्र, पर्यावरण, प्रॉप, UI, जहाज, आंतरिक भाग, उपकरण | गेमप्ले पैमाने पर सिल्हूट, गुट पढ़ना, पहनना और उम्र बढ़ना |
123
- | **character-design** | पोर्ट्रेट, पूर्ण शरीर, टर्नअराउंड, अभिव्यक्ति शीट, एक्शन पोज़ | अनुपात, पोशाक तर्क, व्यक्तित्व, हावभाव स्पष्टता |
124
- | **creature-design** | अवधारणा, ऑर्थोग्राफिक, विवरण अध्ययन, क्रिया, पैमाने संदर्भ, आवास | शरीर रचना विज्ञान, विकासवादी तर्क, सिल्हूट भेद |
138
+ | **game-art** | चरित्र, वातावरण, प्रॉप, यूआई, जहाज, आंतरिक भाग, उपकरण | गेमप्ले पैमाने पर सिल्हूट, गुट पहचान, घिसाव और उम्र बढ़ना |
139
+ | **character-design** | पोर्ट्रेट, फुल-बॉडी, टर्नअराउंड, एक्सप्रेशन शीट, एक्शन पोज़ | अनुपात, पोशाक तर्क, व्यक्तित्व, हावभाव स्पष्टता |
140
+ | **creature-design** | अवधारणा, ऑर्थोग्राफिक, विवरण अध्ययन, क्रिया, पैमाने संदर्भ, आवास | शरीर रचना, विकासवादी तर्क, सिल्हूट भेद |
125
141
  | **architecture** | बाहरी भाग, आंतरिक भाग, सड़क दृश्य, संरचनात्मक विवरण, खंडहर, परिदृश्य | संरचना, सामग्री स्थिरता, परिप्रेक्ष्य, युग सामंजस्य |
126
- | **vehicle-mech** | बाहरी भाग, कॉकपिट, घटक, आरेख, सिल्हूट शीट, क्षति भिन्नता | यांत्रिक तर्क, डिजाइन भाषा, पहुंच बिंदु, क्षति कथा |
142
+ | **vehicle-mech** | बाहरी भाग, कॉकपिट, घटक, आरेखीय योजना, सिल्हूट शीट, क्षति भिन्नता | यांत्रिक तर्क, डिज़ाइन भाषा, एक्सेस बिंदु, क्षति विवरण |
127
143
 
128
144
  ## परियोजना संरचना
129
145
 
130
- प्रत्येक परियोजना स्वयंपूर्ण है। पाँच JSON कॉन्फ़िगरेशन फ़ाइलें नियमों को परिभाषित करती हैं; बाकी सब डेटा है।
146
+ प्रत्येक परियोजना स्व-निहित है। पाँच JSON कॉन्फ़िगरेशन फ़ाइलें नियमों को परिभाषित करती हैं; बाकी सब डेटा है।
131
147
 
132
148
  ```
133
149
  projects/my-project/
@@ -151,17 +167,22 @@ projects/my-project/
151
167
 
152
168
  ## विश्वसनीयता गुण
153
169
 
154
- ये केवल आकांक्षात्मक नहीं हैं। इन्हें लागू किया जाता है।
170
+ ये आकांक्षात्मक नहीं हैं। इन्हें लागू किया जाता है।
155
171
 
156
- - **स्नैपशॉट अपरिवर्तनीय होते हैं।** कॉन्फ़िगरेशन फ़िंगरप्रिंट (SHA-256) साबित करता है कि कुछ भी नहीं बदला।
157
- - **विभाजन रिसाव को रोकते हैं।** विषय परिवार (पहचान, वंश या आईडी प्रत्यय के अनुसार) कभी भी विभाजन सीमाओं को पार नहीं करते हैं।
158
- - **मैनिफेस्ट जमे हुए अनुबंध हैं।** निर्यात हैश + कॉन्फ़िगरेशन फ़िंगरप्रिंट। यदि कुछ भी बदलता है, तो एक नया बनाएं।
159
- - **एडेप्टर सत्य को परिवर्तित नहीं कर सकते।** अलग लेआउट, समान रिकॉर्ड। कोई अतिरिक्त नहीं, कोई हटाने नहीं, कोई पुनर्वर्गीकरण नहीं।
160
- - **उत्पन्न आउटपुट समीक्षा के माध्यम से फिर से प्रवेश करते हैं।** कोई बाईपास नहीं। अन्य सभी की तरह क्यूरेट और बांधें।
172
+ - **स्नैपशॉट अपरिवर्तनीय हैं।** कॉन्फ़िगरेशन फ़िंगरप्रिंट (SHA-256) साबित करता है कि कुछ भी नहीं बदला है। आईडी को परमाणु रूप से दावा किया जाता है, इसलिए दो समवर्ती रन एक ही निर्देशिका में आपस में मिल नहीं सकते।
173
+ - **विभाजन रिसाव को रोकते हैं — और यह बताने वाला चेक स्वतंत्र है।** विषय परिवार (पहचान, वंश या सामान्यीकृत आईडी स्टेम द्वारा) कभी भी विभाजन सीमाओं को पार नहीं करते हैं, और एक दूसरा चेक खरोंच से विषय पहचान को फिर से प्राप्त करता है, बजाय इसके कि विभाजन स्वयं उपयोग किए गए मानचित्र को फिर से पढ़े। एक डेटासेट कार्ड केवल तभी "रिसाव: कोई नहीं (सत्यापित)" का दावा करता है जब दोनों जांचें चलें और पास हों; विभाजन जो दूसरी जांच से पहले था, वह सटीक रूप से ऐसा ही बताता है।
174
+ - **मैनिफेस्ट जमे हुए अनुबंध हैं।** निर्यात हैश + कॉन्फ़िगरेशन फ़िंगरप्रिंट, और `validate` प्रत्येक फ़ाइल के हैश को फिर से करता है जिसे `checksums.txt` सूचीबद्ध करता है — इसलिए एक पूर्ण निर्यात के अंदर एक छवि को बदलने पर उसे पकड़ा जाता है, जिसमें उन मैनिफेस्ट भी शामिल हैं जो उस जांच से पहले बनाए गए थे।
175
+ - **रन अपने सटीक ग्राफ़ को पिन करते हैं।** प्रत्येक पीढ़ी `comfy_workflow_sha` + मॉडल/LoRA सामग्री हैश + बीज नीति रिकॉर्ड करती है, इसलिए एक लहर बाइट-दर-बाइट प्ले करने योग्य होती है। JS और Python रनर दोनों को एक परीक्षण द्वारा एक ही बाइट-समान हैश पर रखा जाता है जो दोनों को उत्पन्न करता है। मॉडल हैशिंग वैकल्पिक है (`--hash-models`) और कभी भी मनगढ़ंत नहीं होता — एक अनसुलझी फ़ाइल `sha256: null` के साथ एक नोट रिकॉर्ड करती है।
176
+ - **कोई भी मॉडल अपने स्वयं के आउटपुट की जांच नहीं करता है।** निर्णय `judged_by_model` और `generator_model` रिकॉर्ड करते हैं; यदि वे कभी भी समान मॉडल होते हैं तो एक चेतावनी जारी होती है।
177
+ - **एक निर्णय बताता है कि इसे किसने बनाया।** `eligibility audit` उन निर्णयों को अलग करता है जिन्हें किसी व्यक्ति ने लिखा था, उन निर्णयों से जो एक बल्क स्क्रिप्ट द्वारा बनाए गए थे, इसलिए एक तर्क जो एक छवि के बजाय एक श्रेणी का वर्णन करता है, वह क्यूरेशन के रूप में पारित नहीं हो सकता है।
178
+ - **माप निर्णय नहीं है।** `sdlab measure` एक रिकॉर्ड से संख्याएँ जोड़ता है। यह कभी भी किसी निर्णय, फिट या स्वीकृति को सेट नहीं करता — और जहां किसी छवि के लिए कोई माप अपरिभाषित होता है, तो यह `null` रिकॉर्ड करता है बजाय कि एक प्रशंसनीय संख्या।
179
+ - **एडाप्टर सत्य को नहीं बदल सकते।** अलग लेआउट, समान रिकॉर्ड। कोई अतिरिक्त नहीं, कोई हटाने नहीं, कोई पुनर्वर्गीकरण नहीं।
180
+ - **उत्पन्न आउटपुट समीक्षा के माध्यम से फिर से प्रवेश करते हैं।** कोई बाईपास नहीं। अन्य सभी चीजों की तरह क्यूरेट करें और बांधें। बाहरी रूप से उत्पन्न छवियां `sdlab ingest` के माध्यम से उसी तरह से प्रवेश करती हैं, बिना क्यूरेट किए।
181
+ - **विफलताएँ दिखाई देती हैं।** एक गुम रिकॉर्ड, एक ऐसी छवि जिसे रखा नहीं जा सकता है, या एक कैप्शन जिसे बनाया नहीं जा सकता है, वह निर्यात या प्रशिक्षण पैकेज को चुपचाप कम करने के बजाय रोक देता है।
161
182
 
162
183
  ## स्टार फ्रेट
163
184
 
164
- रिपो में एक पूर्ण कार्यशील उदाहरण शामिल है: 1,182 रिकॉर्ड, 5 गुट, 7 लेन, 24 संविधान नियम, 892 स्वीकृत संपत्ति, 2 प्रशिक्षण प्रोफाइल। एक आकर्षक विज्ञान-फाई आरपीजी विज़ुअल कैनन, पूरी तरह से क्यूरेट किया गया।
185
+ रिपो में एक पूर्ण कार्यशील उदाहरण शामिल है: 1,182 रिकॉर्ड, 5 गुट, 7 लेन, 24 संविधान नियम, 892 स्वीकृत संपत्ति, 2 प्रशिक्षण प्रोफाइल। एक कठोर विज्ञान-फाई आरपीजी दृश्य कैनन, पूरी तरह से क्यूरेट किया गया।
165
186
 
166
187
  ```bash
167
188
  git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
@@ -175,17 +196,17 @@ sdlab split build --project star-freight # zero subject leakage
175
196
 
176
197
  `sdlab` डेटासेट का मालिक है। प्रारूप रूपांतरण [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset) द्वारा संभाला जाता है: TRL, LLaVA, Qwen2-VL, JSONL, Parquet और अन्य। `repo-dataset` प्रस्तुत करता है; यह कभी भी समावेश का निर्णय नहीं लेता।
177
198
 
178
- ## स्थापना
199
+ ## स्थापित करें
179
200
 
180
201
  ```bash
181
202
  npm install -g @mcptoolshop/style-dataset-lab
182
203
  ```
183
204
 
184
- Node.js 20+ और स्थानीय होस्ट:8188 पर [ComfyUI](https://github.com/comfyanonymous/ComfyUI) की आवश्यकता है।
205
+ Node.js 20+ और [ComfyUI](https://github.com/comfyanonymous/ComfyUI) की आवश्यकता है जो localhost:8188 पर पीढ़ी के लिए चल रहा हो।
185
206
 
186
- ### इसे ComfyUI के बिना आज़माएं
207
+ ### ComfyUI के बिना इसे आज़माएं
187
208
 
188
- आप पूर्ण गैर-उत्पादन सतह का पता लगा सकते हैं - निरीक्षण, क्यूरेशन, स्नैपशॉट, विभाजन, निर्यात - बंडल किए गए स्टार फ्रेट प्रोजेक्ट का उपयोग करके, ComfyUI स्थापित किए बिना या किसी भी SDXL भार को डाउनलोड किए बिना।
209
+ आप पूर्ण गैर-उत्पादन सतह का पता लगा सकते हैं - निरीक्षण, क्यूरेशन, स्नैपशॉट, विभाजन, निर्यात - बंडल किए गए स्टार फ्रेट प्रोजेक्ट का उपयोग करके ComfyUI स्थापित किए बिना या किसी भी SDXL भार को डाउनलोड किए बिना।
189
210
 
190
211
  ```bash
191
212
  # Scaffold a fresh project (no ComfyUI needed)
@@ -198,13 +219,13 @@ sdlab project doctor --project test
198
219
  sdlab snapshot create --dry-run --project star-freight
199
220
  ```
200
221
 
201
- `sdlab project doctor` प्रत्येक परियोजना कॉन्फ़िगरेशन (संविधान, लेन, रुब्रिक, शब्दावली) को मान्य करता है और GPU को छुए बिना पात्रता की रिपोर्ट करता है। कोई भी कमांड जो उत्पन्न स्थिति को परिवर्तित करता है, वह पहले प्रभाव का पूर्वावलोकन करने के लिए `--dry-run` स्वीकार करता है।
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.
202
223
 
203
- यदि आप `--project` भूल जाते हैं, तो CLI `projects/` के अंतर्गत पाए जाने वाले पहले प्रोजेक्ट पर वापस चला जाता है और एक चेतावनी प्रिंट करता है - इसे शांत करने के लिए स्पष्ट रूप से `--project` पास करें।
224
+ यदि आप `--project` को भूल जाते हैं, तो CLI `projects/` के तहत पाए जाने वाले पहले प्रोजेक्ट पर वापस आ जाता है और एक चेतावनी प्रिंट करता है — इसे शांत करने के लिए `--project` को स्पष्ट रूप से पास करें।
204
225
 
205
- ### अवरुद्ध रन को फिर से शुरू करना
226
+ ### रुके हुए रन को फिर से शुरू करना
206
227
 
207
- लंबे समय तक चलने वाले उत्पादन कार्यों को पूर्ण किए गए कार्य को दोहराए बिना फिर से शुरू किया जा सकता है:
228
+ लंबे समय तक चलने वाली पीढ़ी के रन को बिना पूर्ण किए गए काम को दोहराए फिर से शुरू किया जा सकता है:
208
229
 
209
230
  ```bash
210
231
  # Skip subjects whose record + image are already on disk.
@@ -222,26 +243,26 @@ sdlab batch generate --resume batch_2026-04-22_001 --project my-project
222
243
 
223
244
  सामान्य विफलता मोड और समाधान:
224
245
 
225
- किसी भी `sdlab generate` / `sdlab run generate` / `sdlab batch generate` पर **`ECONNREFUSED 127.0.0.1:8188`**
226
- ComfyUI चल नहीं रहा है। ComfyUI शुरू करें (`python main.py --listen 127.0.0.1 --port 8188`) और `curl http://127.0.0.1:8188/system_stats` से पुष्टि करें। किसी भिन्न होस्ट/पोर्ट पर इंगित करने के लिए, `COMFY_URL=http://host:port` सेट करें।
246
+ **किसी भी `sdlab generate` / `sdlab run generate` / `sdlab batch generate` पर `ECONNREFUSED 127.0.0.1:8188`**
247
+ ComfyUI नहीं चल रहा है। ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) शुरू करें और `curl http://127.0.0.1:8188/system_stats` के साथ पुष्टि करें। किसी भिन्न होस्ट/पोर्ट को इंगित करने के लिए, `COMFY_URL=http://host:port` सेट करें।
227
248
 
228
249
  **`missing checkpoint` / `LoRA weight not found`**
229
- आपके वर्कफ़्लो प्रोफ़ाइल में एक मॉडल फ़ाइल का नाम है जो ComfyUI के `models/checkpoints/` या `models/loras/` फ़ोल्डर में नहीं है। `projects/<project>/workflows/profiles/<profile>.json` खोलें, `checkpoint` या `lora` फ़ील्ड का पता लगाएं, और या तो संदर्भित भार डाउनलोड करें या इसे किसी ऐसे भार से बदल दें जो आपके पास पहले से है। फिक्स की पुष्टि करने के लिए `sdlab project doctor --project <project>` को फिर से चलाएं।
250
+ आपके वर्कफ़्लो प्रोफ़ाइल में एक मॉडल फ़ाइल का नाम है जो ComfyUI के `models/checkpoints/` या `models/loras/` फ़ोल्डर में नहीं है। `projects/<project>/workflows/profiles/<profile>.json` खोलें, `checkpoint` या `lora` फ़ील्ड का पता लगाएं, और या तो संदर्भित भार डाउनलोड करें या इसे किसी ऐसे से बदल दें जो आपके पास पहले से है। फिक्स की पुष्टि करने के लिए `sdlab project doctor --project <project>` को फिर से चलाएं।
230
251
 
231
252
  **`sdlab project doctor` त्रुटियाँ**
232
253
  डॉक्टर संरचित त्रुटि कोड लौटाता है। सामान्य:
233
- - `E_PROJECT_NOT_FOUND` - परियोजना निर्देशिका `projects/` के अंतर्गत मौजूद नहीं है। वर्तनी की जाँच करें।
234
- - `E_CONFIG_INVALID` - पाँच JSON कॉन्फ़िगरेशन फ़ाइलों में से एक स्कीमा सत्यापन विफल हो गया। `hint` फ़ील्ड खराब फ़ाइल और फ़ील्ड का नाम देता है।
235
- - `E_RECORD_DRIFT` - किसी रिकॉर्ड का कॉन्फ़िगरेशन फ़िंगरप्रिंट अब इसके स्रोत से मेल नहीं खाता है। संकेत के अनुसार फिर से क्यूरेट या पुन: बांधें।
254
+ - `E_PROJECT_NOT_FOUND` — प्रोजेक्ट निर्देशिका `projects/` के तहत मौजूद नहीं है। वर्तनी जांचें।
255
+ - `E_CONFIG_INVALID` — पांच JSON कॉन्फ़िगरेशन फ़ाइलों में से एक ने स्कीमा सत्यापन विफल कर दिया। `hint` फ़ील्ड खराब फ़ाइल और फ़ील्ड का नाम देता है।
256
+ - `E_RECORD_DRIFT` — किसी रिकॉर्ड के कॉन्फ़िगरेशन फ़िंगरप्रिंट अब इसके स्रोत से मेल नहीं खाते हैं। संकेत के अनुसार पुन: क्यूरेट करें या पुन: बांधें।
236
257
 
237
258
  **`No --project specified, falling back to <name>`**
238
- एक नरम चेतावनी। सही परियोजना का चयन करने और चेतावनी को शांत करने के लिए स्पष्ट रूप से `--project <name>` पास करें।
259
+ एक नरम चेतावनी। सही प्रोजेक्ट का चयन करने और चेतावनी को शांत करने के लिए `--project <name>` को स्पष्ट रूप से पास करें।
239
260
 
240
- **पेंटरली / VRAM आउट-ऑफ़-मेमोरी मुद्दे**
241
- पेंटरली डेनोइज़ ट्यूनिंग नोट्स के लिए `docs/internal/HANDOFF.md` देखें। संक्षेप में: डेनोइज़ शक्ति को कम करें, बैच आकार को कम करें या अपने वर्कफ़्लो प्रोफ़ाइल में एक छोटे चेकपॉइंट पर स्विच करें।
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.
242
263
 
243
- **बग की रिपोर्ट करना**
244
- https://github.com/mcp-tool-shop-org/style-dataset-lab/issues पर अपनी sdlab संस्करण (`sdlab --version`), Node संस्करण (`node -v`), पूर्ण कमांड और संरचित त्रुटि आउटपुट के साथ एक समस्या फ़ाइल करें। बग-रिपोर्ट टेम्पलेट फ़ील्ड को पहले से भर देता है।
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.
245
266
 
246
267
  ## सुरक्षा
247
268
 
@@ -249,8 +270,8 @@ https://github.com/mcp-tool-shop-org/style-dataset-lab/issues पर अपन
249
270
 
250
271
  ## लाइसेंस
251
272
 
252
- MIT
273
+ एमआईटी
253
274
 
254
275
  ---
255
276
 
256
- <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a> द्वारा निर्मित
277
+ एमसीपी टूल शॉप द्वारा निर्मित।
package/README.it.md CHANGED
@@ -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
@@ -60,7 +67,7 @@ Quest'ultimo comando è il punto cruciale. Gli output selezionati vengono reintr
60
67
 
61
68
  ## Definizione del canone
62
69
 
63
- Prima che il flusso di lavoro del set di dati venga eseguito, lo spazio dei nomi `sdlab canon *` trasforma l'archivio delle entità del canone del tuo progetto nelle tre proiezioni utilizzate effettivamente per l'addestramento e la produzione, e blocca le voci che non devono subire modifiche.
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.
64
71
 
65
72
  ```bash
66
73
  # Build three projections from the canon entity store:
@@ -76,7 +83,7 @@ sdlab canon freeze kael_maren --project my-project --reason "prologue portrait l
76
83
  sdlab canon drift --project my-project
77
84
  ```
78
85
 
79
- `canon build` è basato sull'indirizzamento dei contenuti: il suo output è identificato da un codice `canon_sha` ed è memorizzato nella cache, quindi una ricostruzione del canone invariata viene eseguita istantaneamente. `canon freeze` registra ogni "congelamento" rispetto a una versione specifica e lo aggiunge a una traccia di controllo in `freeze-events.jsonl`: le voci "congelate" rifiutano esplicitamente la rigenerazione, mentre le voci "soft-advisory" rifiutano per impostazione predefinita (è possibile ignorare l'impostazione con `--i-know`). `canon drift` ricalcola l'hash di ogni voce monitorata e segnala eventuali modifiche rispetto all'ultima versione pulita.
86
+ `canon build` è basato sull'indirizzamento dei contenuti: il suo output è identificato da un `canon_sha` e memorizzato nella cache, quindi una versione invariata del set di dati viene ricostruita istantaneamente. `canon freeze` registra ogni "freeze" rispetto a una specifica build e lo aggiunge a un registro di controllo `freeze-events.jsonl`: le voci `frozen` rifiutano esplicitamente la rigenerazione, le voci `soft-advisory` rifiutano per impostazione predefinita (è possibile aggirare questa limitazione con `--i-know`). `canon drift` ricalcola l'hash di ogni voce monitorata e segnala qualsiasi elemento che è stato modificato rispetto all'ultima build pulita.
80
87
 
81
88
  Flusso di lavoro completo nel manuale: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/) e [Two-LoRA stacking](handbook/two-lora-stacking/).
82
89
 
@@ -90,7 +97,7 @@ Sette artefatti del set di dati e un ambiente di lavoro di produzione completo.
90
97
  | **Split** | Partizione train/val/test in cui le famiglie di soggetti non superano i confini. |
91
98
  | **Export package** | Set di dati autonomo: manifesto, metadati, immagini, suddivisioni, scheda del set di dati, checksum. |
92
99
  | **Eval pack** | Attività di test consapevoli del canone: copertura delle corsie, divieto di modifiche, ancoraggio/oro, continuità dei soggetti. |
93
- | **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`). Stessi dati, formato diverso. |
100
+ | **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`). La stessa base, formato diverso. |
94
101
  | **Eval scorecard** | Valutazione per attività con esito positivo/negativo basata sulla valutazione degli output generati rispetto ai pacchetti di valutazione. |
95
102
  | **Implementation pack** | Esempi di prompt, errori noti, test di continuità e indicazioni per la reintroduzione. |
96
103
 
@@ -113,6 +120,15 @@ Style Dataset Lab rende esplicita questa connessione. La tua costituzione defini
113
120
 
114
121
  Il risultato pratico: quando il tuo LoRA subisce modifiche indesiderate, puoi chiedere *perché*. Quando il tuo prossimo ciclo di addestramento richiede dati migliori, sai esattamente quali record sono quasi corretti e quale singola regola hanno violato. Quando un nuovo membro del team chiede qual è il linguaggio visivo del progetto, la risposta non è una bacheca Figma, ma una costituzione ricercabile con 1.182 esempi valutati.
115
122
 
123
+ ## Testato in produzione
124
+
125
+ Questo non è un ambiente di test. Due reali modelli LoRA sono stati utilizzati per intero: lo stesso ciclo canonico → curatela → addestramento → distribuzione, agli estremi opposti dello spettro della curatela.
126
+
127
+ - **[Tallow Fen](handbook/case-study-tallow-fen/)** (progettazione di creature): un set di dati canonico creato da zero, con circa il 34% di approvazioni su 293 record curati (169 rifiutati: il filtro è rigoroso). Distribuito `tallow_fen_style_v3.safetensors` @ 1.5 su `qwen-image`.
128
+ - **[Rustline](handbook/case-study-rustline/)** (progettazione concettuale): un set di dati canonico denso e preformato, con circa il 96% di approvazioni su 180 record. Distribuito `rustline_v3ckpt_1500.safetensors` @ 1.0 su `qwen-image`, riutilizzato a valle da un secondo progetto.
129
+
130
+ Lo stesso flusso di lavoro, due profili di produzione: il filtro di curatela è reale (rifiuta in modo rigoroso gli argomenti controversi) e un set di dati canonico ben definito produce un'elevata percentuale di accettazione.
131
+
116
132
  ## Cinque domini, regole reali
117
133
 
118
134
  Non semplici modelli di esempio. Ogni dominio viene fornito con regole della costituzione adatte alla produzione, definizioni delle corsie, rubriche di valutazione e vocabolario di gruppo.
@@ -153,11 +169,16 @@ projects/my-project/
153
169
 
154
170
  Queste non sono semplici aspirazioni. Sono applicate rigorosamente.
155
171
 
156
- - **Gli snapshot sono immutabili.** L'impronta della configurazione (SHA-256) dimostra che nulla è stato modificato.
157
- - **Le suddivisioni prevengono perdite di dati.** Le famiglie di soggetti (per identità, discendenza o suffisso ID) non si sovrappongono mai tra le diverse partizioni.
158
- - **I manifest sono contratti vincolanti.** Hash dell'esportazione + impronta della configurazione. Se qualcosa cambia, crearne uno nuovo.
159
- - **Gli adattatori non possono alterare la verità.** Layout diverso, stessi record. Nessuna aggiunta, nessuna rimozione, nessuna riclassificazione.
160
- - **Gli output generati vengono rielaborati tramite revisione.** Nessun bypass. Curare e collegare come tutto il resto.
172
+ - **Gli snapshot sono immutabili.** L'impronta della configurazione (SHA-256) dimostra che nulla è stato modificato. Gli ID vengono assegnati in modo atomico, quindi due esecuzioni simultanee non possono sovrapporsi nella stessa directory.
173
+ - **Le suddivisioni impediscono la dispersione e il controllo che lo verifica è indipendente.** Le famiglie di soggetti (per identità, discendenza o radice ID normalizzata) non attraversano mai i confini delle partizioni e un secondo controllo deriva nuovamente l'identità del soggetto da zero anziché rileggere la mappa utilizzata dalla suddivisione stessa. Una scheda del set di dati afferma solo "dispersione: nessuna (verificata)" quando entrambi i controlli sono stati eseguiti correttamente; una suddivisione precedente al secondo controllo indica esattamente questo.
174
+ - **I manifest sono contratti congelati.** Hash dell'esportazione + impronta della configurazione e `validate` ricalcola l'hash di ogni file elencato in `checksums.txt`: quindi, la sostituzione di un'immagine all'interno di un'esportazione completata viene rilevata, anche per i manifest creati prima che questo controllo esistesse.
175
+ - **Le esecuzioni definiscono il loro grafo esatto.** Ogni generazione registra `comfy_workflow_sha` + hash del contenuto del modello/LoRA + policy dei seed, quindi una serie può essere riprodotta byte per byte. Gli script JS e Python sono vincolati a un hash identico tramite un test che li avvia entrambi. L'hashing del modello è facoltativo (`--hash-models`) e non viene mai fabbricato: un file irrisolvibile registra `sha256: null` con una nota.
176
+ - **Nessun modello verifica il proprio output.** I giudizi registrano `judged_by_model` e `generator_model`; se questi sono sempre lo stesso modello, viene visualizzato un avviso.
177
+ - **Un giudizio indica chi l'ha creato.** `eligibility audit` distingue i giudizi scritti da una persona dai giudizi generati da uno script di massa, quindi una motivazione che descrive una categoria anziché un'immagine non può essere considerata come curatela.
178
+ - **La misurazione non è una valutazione.** `sdlab measure` associa numeri a un record. Non imposta mai un giudizio, un adattamento o un'approvazione e, quando una misura non è definita per un'immagine, registra `null` anziché un numero plausibile.
179
+ - **Gli adattatori non possono modificare la verità.** Layout diverso, stessi record. Nessuna aggiunta, nessuna rimozione, nessuna riclassificazione.
180
+ - **Gli output generati vengono reinseriti attraverso la revisione.** Nessun bypass. Curatela e associazione come per tutto il resto. Le immagini generate esternamente entrano nello stesso modo tramite `sdlab ingest`, senza curatela preliminare.
181
+ - **I fallimenti sono visibili.** Un record mancante, un'immagine che non può essere posizionata o una didascalia che non può essere creata interrompe un pacchetto di esportazione o addestramento anziché ridurlo silenziosamente.
161
182
 
162
183
  ## Star Freight
163
184
 
@@ -173,7 +194,7 @@ sdlab split build --project star-freight # zero subject leakage
173
194
 
174
195
  ## Formati downstream
175
196
 
176
- `sdlab` è il proprietario del set di dati. La conversione del formato è gestita da [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e altro. `repo-dataset` esegue il rendering; non decide mai l'inclusione.
197
+ `sdlab` possiede il set di dati. La conversione del formato è gestita da [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e altro ancora. `repo-dataset` esegue il rendering; non decide mai l'inclusione.
177
198
 
178
199
  ## Installazione
179
200
 
@@ -198,9 +219,9 @@ sdlab project doctor --project test
198
219
  sdlab snapshot create --dry-run --project star-freight
199
220
  ```
200
221
 
201
- `sdlab project doctor` convalida la configurazione di ogni progetto (costituzione, percorsi, rubrica, terminologia) e segnala l'idoneità senza toccare la GPU. Qualsiasi comando che modifica lo stato generato accetta `--dry-run` per visualizzare in anteprima l'effetto.
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.
202
223
 
203
- Se si dimentica `--project`, la CLI torna al primo progetto che trova nella cartella `projects/` e stampa un avviso; passare `--project` esplicitamente per disattivare l'avviso.
224
+ Se si dimentica `--project`, la CLI torna al primo progetto che trova in `projects/` e stampa un avviso: passare `--project` esplicitamente per disattivarlo.
204
225
 
205
226
  ### Ripresa di un'esecuzione interrotta
206
227
 
@@ -222,26 +243,26 @@ Entrambi i comandi funzionano perché ogni slot scrive la sua voce del manifest
222
243
 
223
244
  Modalità di errore comuni e soluzioni:
224
245
 
225
- **`ECONNREFUSED 127.0.0.1:8188` in qualsiasi `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
246
+ **`ECONNREFUSED 127.0.0.1:8188` su qualsiasi `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
226
247
  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`.
227
248
 
228
249
  **`missing checkpoint` / `LoRA weight not found`**
229
- Il profilo del flusso di lavoro fa riferimento a un file modello che non si trova nelle cartelle `models/checkpoints/` o `models/loras/` di ComfyUI. Aprire `projects/<project>/workflows/profiles/<profile>.json`, individuare il campo `checkpoint` o `lora` e scaricare il peso di riferimento oppure sostituirlo con uno che si ha già. Rieseguire `sdlab project doctor --project <project>` per confermare la correzione.
250
+ Il profilo del flusso di lavoro fa riferimento a un file modello che non si trova nelle cartelle `models/checkpoints/` o `models/loras/` di ComfyUI. Aprire `projects/<project>/workflows/profiles/<profile>.json`, individuare il campo `checkpoint` o `lora` e scaricare il peso di riferimento oppure sostituirlo con uno già disponibile. Rieseguire `sdlab project doctor --project <project>` per confermare la correzione.
230
251
 
231
- **Errori di `sdlab project doctor`**
252
+ **Errori `sdlab project doctor`**
232
253
  Doctor restituisce codici di errore strutturati. Alcuni comuni:
233
254
  - `E_PROJECT_NOT_FOUND`: la directory del progetto non esiste in `projects/`. Controllare l'ortografia.
234
- - `E_CONFIG_INVALID`: uno dei cinque file di configurazione JSON ha fallito la convalida dello schema. Il campo `hint` indica il file e il campo problematici.
235
- - `E_RECORD_DRIFT`: l'impronta della configurazione di un record non corrisponde più alla sua origine. Rielaborare o ricollegare come suggerisce l'indicazione.
255
+ - `E_CONFIG_INVALID`: uno dei cinque file di configurazione JSON non ha superato la convalida dello schema. Il campo `hint` indica il file e il campo problematici.
256
+ - `E_RECORD_DRIFT`: l'impronta della configurazione di un record non corrisponde più alla sua origine. Curare o riassociare come suggerito.
236
257
 
237
- **`No --project specified, falling back to <name>`**
258
+ **Avviso `No --project specified, falling back to <name>`**
238
259
  Un avviso lieve. Passare `--project <name>` esplicitamente per selezionare il progetto corretto e disattivare l'avviso.
239
260
 
240
- **Problemi di memoria VRAM / "Painterly"**
241
- Consultare `docs/internal/HANDOFF.md` per le note sulla regolazione del denoising "painterly". In breve: ridurre la forza del denoising, diminuire la dimensione del batch o passare a un checkpoint più piccolo nel profilo del flusso di lavoro.
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.
242
263
 
243
- **Segnalazione di bug**
244
- Aprire una segnalazione su https://github.com/mcp-tool-shop-org/style-dataset-lab/issues con la versione di sdlab (`sdlab --version`), la versione di Node (`node -v`), il comando completo e l'output strutturato dell'errore. Un modello per la segnalazione di bug precompila i campi.
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.
245
266
 
246
267
  ## Sicurezza
247
268