@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.
- package/CHANGELOG.md +27 -0
- package/README.es.md +111 -59
- package/README.fr.md +117 -67
- package/README.hi.md +109 -70
- package/README.it.md +111 -60
- package/README.ja.md +116 -76
- package/README.md +58 -2
- package/README.pt-BR.md +119 -64
- package/README.zh.md +108 -67
- package/bin/sdlab.js +50 -1
- package/lib/adapters/ai-toolkit.js +187 -30
- package/lib/adapters/comfyui-workflows.js +84 -9
- package/lib/asset-ingest.js +575 -0
- package/lib/asset-masks.js +323 -0
- package/lib/asset-source.js +1176 -0
- package/lib/canon-author.js +350 -0
- package/lib/canon-review-gate.js +205 -0
- package/lib/colab-launcher-guards.js +285 -0
- package/lib/export.js +1 -1
- package/lib/freeze-gate.js +3 -0
- package/lib/generated-provenance.js +178 -5
- package/lib/lane1-render.js +668 -0
- package/lib/memory-store.js +663 -0
- package/lib/model-licences.js +305 -0
- package/lib/npy-meta.js +130 -0
- package/lib/png-meta.js +512 -0
- package/lib/records.js +54 -8
- package/lib/reingest-selected.js +15 -1
- package/lib/reingest.js +27 -3
- package/lib/run-manifest.js +59 -11
- package/lib/train-runs.js +214 -0
- package/lib/verifier.js +3 -0
- package/lib/verify-chain.js +367 -0
- package/package.json +2 -2
- package/scripts/asset-ingest.js +160 -0
- package/scripts/canon-draft.js +82 -0
- package/scripts/canon-freeze.js +4 -0
- package/scripts/colab/REAL_SERVICE_ASSUMPTIONS.md +14 -0
- package/scripts/colab/ai-toolkit-override-py315.txt +45 -0
- package/scripts/colab/colab_window.sh +587 -0
- package/scripts/colab/lane1_render.py +970 -0
- package/scripts/colab/launch_guards.py +564 -0
- package/scripts/colab/launch_lane1_stub.sh +309 -0
- package/scripts/colab/launch_lane3_stub.sh +366 -0
- package/scripts/colab/remote_runner.py +59 -0
- package/scripts/doctor.js +1 -0
- package/scripts/generate.js +38 -12
- package/scripts/verify.js +67 -0
package/README.ja.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="README.md"
|
|
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.pt-BR.md">Português (BR)</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
|
-
|
|
16
|
+
自分のビジュアルルールを記述します。アートを生成します。すべての画像をそれらのルールに対して評価します。結果をバージョン管理された、監査可能なトレーニングデータとして出力し、次に、トレーニングされたモデルを実際の運用ワークフローで使用し、最高の出力を自分のデータセットにフィードバックします。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
スタイルデータセットラボは、アートスタイルについて記述した内容と、実際にトレーニングに使用するデータセットを結びつけ、その後、運用全体を通してそのループを閉じます。構成を定義します。シルエットルール、パレットの制約、マテリアルの言語など、プロジェクトにとって重要な要素を定義します。パイプラインは候補を生成し、それらをルールに対して評価し、承認されたものを再現可能なデータセットにパッケージ化します。各レコードには、なぜそれが含まれたのかが説明されています。
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
次に、運用ワークベンチが引き継ぎます。プロジェクトの要件から生成ブリーフをコンパイルし、それをComfyUIに適用し、出力を評価し、表現シートと環境ボードをバッチ処理で作成し、最良の結果を選択し、それらを新しい候補として再取り込みます。ループが閉じます。生成、選択、レビュー、強化。
|
|
21
21
|
|
|
22
22
|
## パイプライン
|
|
23
23
|
|
|
@@ -63,11 +63,46 @@ 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
|
-
|
|
66
|
+
最後のコマンドがポイントです。選択された出力は、他のすべてのものと同様に、同じレビュープロセスを通過します。データセットは拡張され、ルールは維持されます。
|
|
67
|
+
|
|
68
|
+
## アセットの経路 — トレーニングデータとしての3Dエクスポート
|
|
69
|
+
|
|
70
|
+
`sdlab ingest`は、生の画像を信頼して受け入れます。`sdlab asset ingest`は、**契約**を受け入れます。
|
|
71
|
+
|
|
72
|
+
3Dアセットが受け入れゲートを通過した場合、N個の角度から再レンダリングすると、ビューの一貫性が*構造的に*保証されたターンアラウンドが得られます。これは、パービュー拡散では保証できない特性です。アセットの経路は、これらのエクスポートを、プロベナンス(来歴)情報を含むトレーニングデータとして受け入れます。
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Validate an export's manifest end to end, run the gates, write nothing
|
|
76
|
+
sdlab asset ingest ~/exports/dragon_dense --project my-project --dry-run
|
|
77
|
+
|
|
78
|
+
# Register it: records, candidates, masks, channels, receipt
|
|
79
|
+
sdlab asset ingest ~/exports/dragon_dense --project my-project
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
エクスポートディレクトリには、そのチャンネル、パレットバンド、ゲートの閾値、受け入れの判断、スタイル登録、レンダリングがどのように作成されたか、およびその生成のプロベナンスを宣言する`asset-source.json`マニフェスト(スキーマ**1.3.0**)が含まれています。sdlabは、すべての宣言を実際のバイトに対して検証し、違反があった場合は、すべてを拒否します。不良のマニフェストは登録されません。
|
|
83
|
+
|
|
84
|
+
**接合部:** sdlabはメカニズムを提供し、アセットはセマンティクスを提供します。sdlabは、決してレイキャストを行ったり、レンダリングを行ったり、チャンネルが「プロベナンス」であることは特別なことであるとは学習しません。sdlabは、検証、測定、登録、パッケージ化を行います。数値が*意味する*ものは、アセットに保持されます。
|
|
85
|
+
|
|
86
|
+
契約で強制されること:
|
|
87
|
+
|
|
88
|
+
| 段階 | 検証されること |
|
|
89
|
+
|---|---|
|
|
90
|
+
| **schema** | 形状、ID、適切に形成されたパレットバンド、および文字通り`"accepted"`である受け入れの判断 |
|
|
91
|
+
| **containment** | 参照されているすべてのパスは、エクスポートディレクトリ*内*に解決され(信頼できない入力です)、存在します。 |
|
|
92
|
+
| **encoding** | PNGのIHDRは、宣言されたエンコーディングと一致します。NPYヘッダーは、宣言されたdtypeと形状と一致します。「見た目は正しい」が、そのバイトと矛盾するマニフェストは、この経路が存在する理由である失敗ケースです。 |
|
|
93
|
+
| **categorical** | インデックス化されたPNGは、PLTE⊆宣言されたパレットであることを検証します。`nearest`でフィルタリングされたチャンネルは、*包括的な*ピクセルデコードを受けます。カテゴリカルなNPYは、包括的な値スキャンを受けます。 |
|
|
94
|
+
| **gates** | パレットゲートは、マニフェスト自体のバンドと閾値を使用して、レンダリングごとに実行されます。失敗したレンダリングは、明確に拒否され、レポートされます。静かに受け入れられることはありません。 |
|
|
95
|
+
|
|
96
|
+
レコードは**キュレーションされていない**(`judgment: null`)状態で、`provenance.source: "asset"`とともに保存され、
|
|
97
|
+
受け入れブロックを逐語的に、ファイルごとのハッシュ、カメラと派生した向き、ゲートの測定値、宣言されたスタイル登録、およびイメージごとの生成フレームとシードとともに保存されます。その後、他のすべてのレコードと同様に、同じキュレーション処理が行われます。
|
|
98
|
+
|
|
99
|
+
取り込みは、マニフェストが*宣言しなかった*ものもレポートします。不明なスタイル登録、欠落している`identity.subject_name`、欠落している生成プロベナンスなどを**通知**として、失敗ではなくレポートします。これらは、レシートに記録され、CLIに表示されます。誰にも伝えられないギャップは、誰にも埋められないギャップです。また、マニフェストは、そのレンダリングが独自のシードを持たない決定論的な派生であると*宣言できるため、この経路は、正しいエクスポートに関するギャップをレポートすることはありません。
|
|
100
|
+
|
|
101
|
+
完全な契約、検証ラダー、およびすべてのフィールドの背後にある理由:[docs/asset-lane-design.md](docs/asset-lane-design.md)。
|
|
67
102
|
|
|
68
103
|
## カノンオーサリング
|
|
69
104
|
|
|
70
|
-
|
|
105
|
+
データセットパイプラインが実行される前に、`sdlab canon *`名前空間は、プロジェクトのカノンエンティティストアを、トレーニングと運用が実際に使用する3つの投影に変換し、変更してはならないエントリをロックします。
|
|
71
106
|
|
|
72
107
|
```bash
|
|
73
108
|
# Build three projections from the canon entity store:
|
|
@@ -83,67 +118,69 @@ sdlab canon freeze kael_maren --project my-project --reason "prologue portrait l
|
|
|
83
118
|
sdlab canon drift --project my-project
|
|
84
119
|
```
|
|
85
120
|
|
|
86
|
-
|
|
121
|
+
ローカルモデルもカノンをドラフトできますが、最終的な決定を下すことはできません。`sdlab canon draft <class_id> --endpoint <url> --brief "<text>" --out <path>`は、ループバック専用の、OpenAI互換のサーバーにカノンエントリとプロンプトを要求し、それらを`status: "draft"`、`judgment: null`、およびドラフトモデルとともにすべての出力に書き込みます。ドラフトは、人が承認するまで凍結できません。凍結ゲートは、人間の承認、理由、および承認された正確なドラフトのハッシュがない限り、モデルによってドラフトされたエントリを拒否します。
|
|
87
122
|
|
|
88
|
-
|
|
123
|
+
`canon build`はコンテンツアドレス指定可能です。その出力は、`canon_sha`でキーが付けられ、キャッシュされるため、変更されていないカノンは瞬時に再構築されます。`canon freeze`は、特定のビルドに対して各凍結を検証し、`freeze-events.jsonl`監査トレイルに追加します。`frozen`エントリは、再生成を完全に拒否します。`soft-advisory`エントリは、デフォルトで拒否します(`--i-know`でバイパスできます)。`canon drift`は、監視されているすべてのエントリのハッシュを再計算し、最後のクリーンビルド以降に移動したものをフラグします。
|
|
124
|
+
|
|
125
|
+
ハンドブックの完全なワークフロー:[カノンのビルド](handbook/canon-build/)、[カノンの凍結](handbook/canon-freeze/)、および[Two-LoRAスタッキング](handbook/two-lora-stacking/)。
|
|
89
126
|
|
|
90
127
|
## 生成されるもの
|
|
91
128
|
|
|
92
|
-
7
|
|
129
|
+
7つのデータセットアーティファクトと、完全な運用ワークベンチ。各アーティファクトは、その先行アーティファクトにリンクされているため、トレーニングレコードを承認したルールまで追跡できます。
|
|
93
130
|
|
|
94
|
-
|
|
|
131
|
+
| アーティファクト | 内容 |
|
|
95
132
|
|----------|-----------|
|
|
96
|
-
| **Snapshot** |
|
|
97
|
-
| **Split** |
|
|
133
|
+
| **Snapshot** | 構成フィンガープリントを持つ、凍結されたレコード選択。すべての包含には、明示的な理由があります。 |
|
|
134
|
+
| **Split** | 被験者ファミリーが境界を越えない、トレーニング/検証/テストの分割。 |
|
|
98
135
|
| **Export package** | 自己完結型のデータセット:マニフェスト、メタデータ、画像、分割、データセットカード、チェックサム。 |
|
|
99
|
-
| **Eval pack** |
|
|
100
|
-
| **Training package** |
|
|
101
|
-
| **Eval scorecard** |
|
|
102
|
-
| **Implementation pack** |
|
|
136
|
+
| **Eval pack** | カノンを考慮したテストタスク:レーンカバレッジ、許容されないドリフト、アンカー/ゴールド、被写体の連続性。 |
|
|
137
|
+
| **Training package** | アダプター(`diffusers-lora`、`generic-image-caption`)を介した、トレーニングに最適なレイアウト。同じ真実、異なる形式。 |
|
|
138
|
+
| **Eval scorecard** | 評価パックに対して生成された出力のスコアリングに基づいた、タスクごとの合格/不合格判定。 |
|
|
139
|
+
| **Implementation pack** | プロンプトの例、既知の失敗例、連続性テスト、および再取り込みのガイダンス。 |
|
|
103
140
|
|
|
104
|
-
|
|
141
|
+
本番環境のワークベンチに追加:
|
|
105
142
|
|
|
106
|
-
| 表面 |
|
|
143
|
+
| 表面 | その機能 |
|
|
107
144
|
|---------|-------------|
|
|
108
|
-
| **Compiled brief** |
|
|
109
|
-
| **Run** |
|
|
110
|
-
| **Critique** |
|
|
111
|
-
| **Batch** |
|
|
112
|
-
| **Selection** |
|
|
145
|
+
| **Compiled brief** | ワークフロープロファイルとプロジェクトの真実から生成される、決定的な生成指示。 |
|
|
146
|
+
| **Run** | フリーズされた実行アーティファクト:概要 + シード + ComfyUI出力 + マニフェスト。 |
|
|
147
|
+
| **Critique** | 実行出力とカノンの間の、構造化された多次元評価。 |
|
|
148
|
+
| **Batch** | 調整されたマルチスロットによる本番環境(表現シート、環境ボード、シルエットパック)。 |
|
|
149
|
+
| **Selection** | クリエイティブな意思決定アーティファクト:どの出力が選択されたか、その理由、およびその出力の出所。 |
|
|
113
150
|
| **Re-ingest** | 選択された出力は、完全な生成の来歴とともに、候補レコードとして返されます。 |
|
|
114
151
|
|
|
115
|
-
##
|
|
152
|
+
## この機能が存在する理由
|
|
116
153
|
|
|
117
|
-
トレーニングデータは、あらゆるビジュアルAI
|
|
154
|
+
トレーニングデータは、あらゆるビジュアルAIパイプラインにおいて最も重要なアーティファクトです。しかし、ほとんどのトレーニングデータは、履歴、判断の記録、および本来従うべきスタイルルールとの関連性がない、単なる画像のフォルダーです。
|
|
118
155
|
|
|
119
|
-
|
|
156
|
+
スタイルデータセットラボは、この関連性を明確にします。あなたの憲法はルールを定義します。あなたのルーブリックは、スコアリングの次元を定義します。あなたのキュレーションは、判断を記録します。あなたのカノンバインディングは、その関連性を証明します。そして、あなたのデータセットは、それらすべてを構造化され、クエリ可能で、再現可能な真実として引き継ぎます。
|
|
120
157
|
|
|
121
|
-
|
|
158
|
+
実用的な結果:あなたのLoRAがドリフトした場合、その理由を尋ねることができます。次のトレーニングラウンドでより良いデータが必要な場合、どのレコードがほぼ失敗しており、どの単一のルールに違反したかを正確に知ることができます。新しいチームメンバーが、プロジェクトのビジュアル言語について尋ねた場合、その答えはFigmaボードではなく、1,182件の評価された例を含む、検索可能な憲法です。
|
|
122
159
|
|
|
123
|
-
##
|
|
160
|
+
## 本番環境で実証済み
|
|
124
161
|
|
|
125
|
-
|
|
162
|
+
これはデモパイプラインではありません。2つの実際のスタイルLoRAが、最初から最後までこれを使用して出荷されました。同じカノン→キュレーション→トレーニング→出荷のループを、キュレーションスペクトルの反対の端で実行しました。
|
|
126
163
|
|
|
127
|
-
- **[Tallow Fen](handbook/case-study-tallow-fen/)**(クリーチャーデザイン)—最初から作成されたベストiary
|
|
128
|
-
- **[Rustline](handbook/case-study-rustline/)
|
|
164
|
+
- **[Tallow Fen](handbook/case-study-tallow-fen/)**(クリーチャーデザイン)—最初から作成されたベストiaryカノン、293件のキュレーションされたレコードのうち、約34%の承認率(169件は却下—ゲートは厳しく却下します)。`tallow_fen_style_v3.safetensors`を1.5で`qwen-image`に出荷。
|
|
165
|
+
- **[Rustline](handbook/case-study-rustline/)**(コンセプトデザイン)—密度が高く、事前に形成されたカノン、180件のレコードのうち、約96%の承認率。`rustline_v3ckpt_1500.safetensors`を1.0で`qwen-image`に出荷し、別のプロジェクトで再利用。
|
|
129
166
|
|
|
130
|
-
|
|
167
|
+
同じパイプライン、2つの本番環境プロファイル:キュレーションゲートは本物です(オープンなテーマについては厳しく却下します)。そして、厳格なカノンは高い受容率をもたらします。
|
|
131
168
|
|
|
132
169
|
## 5つのドメイン、実際のルール
|
|
133
170
|
|
|
134
|
-
|
|
171
|
+
プレースホルダーのテンプレートではありません。各ドメインには、本番環境で使用できる憲法ルール、レーン定義、スコアリングルーブリック、およびグループ語彙が付属しています。
|
|
135
172
|
|
|
136
|
-
| ドメイン | レーン |
|
|
173
|
+
| ドメイン | レーン | 評価対象 |
|
|
137
174
|
|--------|-------|-----------------|
|
|
138
|
-
| **game-art** | キャラクター、環境、小道具、UI、船、インテリア、装備 |
|
|
139
|
-
| **character-design** |
|
|
175
|
+
| **game-art** | キャラクター、環境、小道具、UI、船、インテリア、装備 | ゲームプレイ規模でのシルエット、派閥の認識、摩耗と経年変化 |
|
|
176
|
+
| **character-design** | ポートレート、全身、ターンアラウンド、表現シート、アクションポーズ | プロポーション、衣装の論理、個性、ジェスチャーの明確さ |
|
|
140
177
|
| **creature-design** | コンセプト、オルソグラフィック、詳細な研究、アクション、スケール参照、生息地 | 解剖学、進化の論理、シルエットの区別 |
|
|
141
|
-
| **architecture** |
|
|
178
|
+
| **architecture** | 外観、内観、街並み、構造的な詳細、廃墟、風景 | 構造、材質の一貫性、視点、時代の一貫性 |
|
|
142
179
|
| **vehicle-mech** | 外観、コックピット、コンポーネント、図面、シルエットシート、損傷バリアント | 機械的な論理、デザイン言語、アクセスポイント、損傷の物語 |
|
|
143
180
|
|
|
144
|
-
##
|
|
181
|
+
## プロジェクト構造
|
|
145
182
|
|
|
146
|
-
各プロジェクトは独立しています。5つのJSON
|
|
183
|
+
各プロジェクトは独立しています。5つのJSON設定ファイルがルールを定義します。それ以外はすべてデータです。
|
|
147
184
|
|
|
148
185
|
```
|
|
149
186
|
projects/my-project/
|
|
@@ -165,24 +202,25 @@ projects/my-project/
|
|
|
165
202
|
inbox/generated/ Re-ingested images awaiting review
|
|
166
203
|
```
|
|
167
204
|
|
|
168
|
-
##
|
|
205
|
+
## 信頼できるプロパティ
|
|
169
206
|
|
|
170
|
-
|
|
207
|
+
これらは理想的なものではありません。これらは強制されます。
|
|
171
208
|
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
209
|
+
- **スナップショットは不変です。** 設定フィンガープリント(SHA-256)は、変更がないことを証明します。IDはアトミックに割り当てられるため、2つの同時実行プロセスが1つのディレクトリに混ざることはありません。
|
|
210
|
+
- **分割は情報の漏洩を防ぎ、そのことを確認するチェックは独立しています。** サブジェクトファミリー(ID、系統、または正規化されたIDの接頭辞によって定義)は、決してパーティションの境界を越えません。2回目のチェックでは、分割自体で使用されたマップを再読み込みするのではなく、最初からサブジェクトIDを再導出します。データセットカードは、両方のチェックが実行され、合格した場合にのみ、「漏洩:なし(検証済み)」と主張します。2回目のチェックよりも前に作成された分割は、そのことを正確に示します。
|
|
211
|
+
- **マニフェストは固定された契約です。** エクスポートハッシュと設定フィンガープリントを組み合わせ、`validate`は、`checksums.txt`にリストされているすべてのファイルを再ハッシュします。したがって、完成したエクスポート内の画像を置き換えることは検出され、そのチェックが存在する前に作成されたマニフェストも同様です。
|
|
212
|
+
- **実行は、正確なグラフを固定します。** 各世代は、`comfy_workflow_sha` + モデル/LoRAコンテンツハッシュ + シードポリシーを記録するため、ウェーブはバイト単位で完全に再現可能です。JSとPythonのランナーは、両方を起動するテストによって、バイト単位で同一のハッシュになるように制限されます。モデルのハッシュ化はオプション(`--hash-models`)であり、偽造されることはありません。解決できないファイルは、注記とともに`sha256: null`を記録します。
|
|
213
|
+
- **モデルは、自身の出力を検証しません。** 評価は、`judged_by_model`と`generator_model`を記録します。これらが同じモデルである場合、警告が表示されます。
|
|
214
|
+
- **評価は、誰が作成したかを伝えます。** `eligibility audit`は、人が作成した評価と、一括スクリプトによって作成された評価を区別します。したがって、画像ではなくカテゴリを説明する根拠は、キュレーションとして合格しません。
|
|
215
|
+
- **測定は、評価ではありません。** `sdlab measure`は、レコードに数値を関連付けます。評価、適合、または承認を設定することはありません。また、画像に対して測定が定義されていない場合、妥当な数値ではなく、`null`を記録します。
|
|
216
|
+
- **リリースは、すべての画像の出所を証明できます。** `sdlab verify --project <name>`は、各レコードに対してオフラインでチェーンをたどります。レコードの所有者とライセンス、ハッシュによってバインドされた正典エントリ、すべてのモデルとLoRAのライセンス(SPDX ID、ライセンスURL、読み取り日時、ファイルハッシュ)、および実行マニフェスト内のワークフローハッシュです。リンクが欠落している場合、チェックは合格ではなく、失敗します。
|
|
217
|
+
- **アダプターは、真実を変更できません。** レイアウトは異なりますが、レコードは同じです。追加、削除、再分類はありません。
|
|
218
|
+
- **生成された出力は、レビューを通じて再入力されます。** バイパスはありません。他のものと同様に、キュレーションとバインドを行います。外部で生成された画像は、`sdlab ingest`を介して、キュレーションなしで同じ方法で入力されます。
|
|
219
|
+
- **失敗は可視化されます。** レコードが欠落している、配置できない画像がある、または作成できないキャプションがある場合、エクスポートまたはトレーニングパッケージは、静かに縮小されるのではなく、停止します。
|
|
182
220
|
|
|
183
221
|
## スター・フレイト
|
|
184
222
|
|
|
185
|
-
|
|
223
|
+
このリポジトリには、完全な動作例が含まれています。1,182件のレコード、5つの派閥、7つのレーン、24の憲法ルール、892件の承認されたアセット、2つのトレーニングプロファイル。完全にキュレーションされた、荒々しいSF RPGのビジュアルカノン。
|
|
186
224
|
|
|
187
225
|
```bash
|
|
188
226
|
git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
|
|
@@ -192,9 +230,9 @@ sdlab snapshot create --project star-freight # 839 eligible records
|
|
|
192
230
|
sdlab split build --project star-freight # zero subject leakage
|
|
193
231
|
```
|
|
194
232
|
|
|
195
|
-
##
|
|
233
|
+
## 下流の形式
|
|
196
234
|
|
|
197
|
-
`sdlab`がデータセットを所有します。形式変換は、[`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset)
|
|
235
|
+
`sdlab`がデータセットを所有します。形式変換は、[`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset)によって処理されます。TRL、LLaVA、Qwen2-VL、JSONL、Parquetなど。`repo-dataset`はレンダリングします。組み込みを決定することはありません。
|
|
198
236
|
|
|
199
237
|
## インストール
|
|
200
238
|
|
|
@@ -202,11 +240,11 @@ sdlab split build --project star-freight # zero subject leakage
|
|
|
202
240
|
npm install -g @mcptoolshop/style-dataset-lab
|
|
203
241
|
```
|
|
204
242
|
|
|
205
|
-
Node.js 20+と、ローカルホストの8188
|
|
243
|
+
Node.js 20+と、ローカルホストの8188で実行される[ComfyUI](https://github.com/comfyanonymous/ComfyUI)が必要です。
|
|
206
244
|
|
|
207
245
|
### ComfyUIなしで試す
|
|
208
246
|
|
|
209
|
-
|
|
247
|
+
バンドルされたスター・フレイトプロジェクトを使用して、生成以外のすべての機能(検査、キュレーション、スナップショット、分割、エクスポート)を、ComfyUIをインストールしたり、SDXLの重みをダウンロードしたりせずに探索できます。
|
|
210
248
|
|
|
211
249
|
```bash
|
|
212
250
|
# Scaffold a fresh project (no ComfyUI needed)
|
|
@@ -219,13 +257,13 @@ sdlab project doctor --project test
|
|
|
219
257
|
sdlab snapshot create --dry-run --project star-freight
|
|
220
258
|
```
|
|
221
259
|
|
|
222
|
-
`sdlab project doctor
|
|
260
|
+
`sdlab project doctor`は、すべてのプロジェクト構成(憲法、レーン、ルーブリック、用語)を検証し、GPUに触れることなく、適格性を報告します。生成された状態を変更するコマンドは、最初に効果をプレビューするために、`--dry-run`を受け入れます。
|
|
223
261
|
|
|
224
|
-
`--project
|
|
262
|
+
`--project`を忘れた場合、CLIは、`projects/`の下にある最初に見つかったプロジェクトにフォールバックし、警告を表示します。警告を抑制するには、`--project`を明示的に渡します。
|
|
225
263
|
|
|
226
|
-
###
|
|
264
|
+
### 中断された実行を再開する
|
|
227
265
|
|
|
228
|
-
|
|
266
|
+
長い生成実行は、完了した作業をやり直さずに再開できます。
|
|
229
267
|
|
|
230
268
|
```bash
|
|
231
269
|
# Skip subjects whose record + image are already on disk.
|
|
@@ -237,41 +275,43 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
|
|
|
237
275
|
sdlab batch generate --resume batch_2026-04-22_001 --project my-project
|
|
238
276
|
```
|
|
239
277
|
|
|
240
|
-
|
|
278
|
+
両方のコマンドは、各スロットが完了時にマニフェストエントリをアトミックに書き込むため機能します。実行中にクラッシュしても、部分的な状態が破損することはありません。
|
|
241
279
|
|
|
242
280
|
## トラブルシューティング
|
|
243
281
|
|
|
244
|
-
|
|
282
|
+
一般的な失敗モードと修正:
|
|
245
283
|
|
|
246
|
-
**`ECONNREFUSED 127.0.0.1:8188
|
|
284
|
+
**`ECONNREFUSED 127.0.0.1:8188`が、任意の`sdlab generate` / `sdlab run generate` / `sdlab batch generate`で実行されていない**
|
|
247
285
|
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`を設定します。
|
|
248
286
|
|
|
249
287
|
**`missing checkpoint` / `LoRA weight not found`**
|
|
250
|
-
|
|
288
|
+
ワークフロープロファイルで、ComfyUIの`models/checkpoints/`または`models/loras/`フォルダーにないモデルファイルを指定しています。`projects/<project>/workflows/profiles/<profile>.json`を開き、`checkpoint`または`lora`フィールドを見つけて、参照されている重みをダウンロードするか、すでに持っているものに置き換えます。`sdlab project doctor --project <project>`を再実行して、修正を確認します。
|
|
251
289
|
|
|
252
290
|
**`sdlab project doctor`エラー**
|
|
253
|
-
|
|
254
|
-
- `E_PROJECT_NOT_FOUND
|
|
255
|
-
- `E_CONFIG_INVALID
|
|
256
|
-
- `E_RECORD_DRIFT
|
|
291
|
+
ドクターは、構造化されたエラーコードを返します。一般的なもの:
|
|
292
|
+
- `E_PROJECT_NOT_FOUND` — プロジェクトディレクトリが、`projects/`の下に存在しません。スペルを確認してください。
|
|
293
|
+
- `E_CONFIG_INVALID` — 5つのJSON構成ファイルのいずれかが、スキーマ検証に失敗しました。`hint`フィールドは、問題のあるファイルとフィールドの名前を示します。
|
|
294
|
+
- `E_RECORD_DRIFT` — レコードの構成フィンガープリントが、ソースと一致しなくなりました。ヒントに従って、再キュレーションまたは再バインドします。
|
|
257
295
|
|
|
258
296
|
**`No --project specified, falling back to <name>`**
|
|
259
|
-
|
|
297
|
+
ソフトな警告。正しいプロジェクトを明示的に選択し、警告を抑制するには、`--project <name>`を渡します。
|
|
260
298
|
|
|
261
|
-
|
|
262
|
-
|
|
299
|
+
**ペインタリー / VRAMのメモリ不足の問題**
|
|
300
|
+
`docs/internal/HANDOFF.md`を参照して、ペインタリーのデノイズ調整に関するメモを確認してください。要するに:デノイズ強度を下げ、バッチサイズを減らすか、ワークフロープロファイルでより小さいチェックポイントに切り替えます。
|
|
263
301
|
|
|
264
|
-
|
|
265
|
-
|
|
302
|
+
**バグの報告**
|
|
303
|
+
https://github.com/mcp-tool-shop-org/style-dataset-lab/issuesに、sdlabバージョン(`sdlab --version`)、Nodeバージョン(`node -v`)、完全なコマンド、および構造化されたエラー出力を記載して、問題を報告してください。バグ報告テンプレートは、フィールドを事前に設定します。
|
|
266
304
|
|
|
267
305
|
## セキュリティ
|
|
268
306
|
|
|
269
|
-
|
|
307
|
+
デフォルトではローカルです。テレメトリ、分析はなく、`sdlab` CLIから外部リクエストもありません。画像はGPUとファイルシステムに残り、`canon draft`はループバック以外のすべてのエンドポイントを拒否します。
|
|
308
|
+
|
|
309
|
+
唯一の例外は、オプトイン機能です。`scripts/colab/`には、お客様ご自身のGoogle Colabアカウントでレンダリングを実行したり、LoRAのトレーニングステップを実行したりするためのキットが含まれています。これらのキットは、指定されたファイルのみをアップロードし、お客様のColabアカウントの残高に基づいて設定された予算内で実行され、終了時にセッションを自動的に停止します。これらのキットは**実験段階**であり、まだ完全なテストは完了していません。
|
|
270
310
|
|
|
271
311
|
## ライセンス
|
|
272
312
|
|
|
273
|
-
|
|
313
|
+
マサチューセッツ工科大学
|
|
274
314
|
|
|
275
315
|
---
|
|
276
316
|
|
|
277
|
-
MCP Tool Shop
|
|
317
|
+
Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="README.
|
|
2
|
+
<a href="README.md">English</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.pt-BR.md">Português (BR)</a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
@@ -65,6 +65,57 @@ sdlab reingest selected --selection selection_2026-04-16_001
|
|
|
65
65
|
|
|
66
66
|
That last command is the point. Selected outputs come back through the same review process as everything else. The corpus grows and the rules hold.
|
|
67
67
|
|
|
68
|
+
## The asset lane — 3D exports as training data
|
|
69
|
+
|
|
70
|
+
`sdlab ingest` takes bare images on trust. `sdlab asset ingest` takes a **contract**.
|
|
71
|
+
|
|
72
|
+
When a 3D asset passes its acceptance gate, re-rendering it from N angles gives you a
|
|
73
|
+
turnaround that is view-consistent *by construction* — the property per-view diffusion
|
|
74
|
+
can't guarantee. The asset lane admits those exports as provenance-carrying training data:
|
|
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
|
+
The export directory carries an `asset-source.json` manifest (schema **1.3.0**) declaring
|
|
85
|
+
its channels, palette bands, gate thresholds, acceptance verdict, style register, how the
|
|
86
|
+
renders came to exist, and their generation provenance. sdlab proves every declaration
|
|
87
|
+
against the actual bytes and refuses the whole ingest on any violation — nothing registers
|
|
88
|
+
on a bad manifest.
|
|
89
|
+
|
|
90
|
+
**The seam:** sdlab supplies mechanism, the asset supplies semantics. sdlab never raycasts,
|
|
91
|
+
never renders, and never learns that a channel called "provenance" is special. It proves,
|
|
92
|
+
measures, registers and packages. What the numbers *mean* stays with the asset.
|
|
93
|
+
|
|
94
|
+
What the contract enforces:
|
|
95
|
+
|
|
96
|
+
| stage | what is proven |
|
|
97
|
+
|---|---|
|
|
98
|
+
| **schema** | shape, ids, well-formed palette bands, and an acceptance verdict that is literally `"accepted"` |
|
|
99
|
+
| **containment** | every referenced path resolves *inside* the export directory (it is untrusted input) and exists |
|
|
100
|
+
| **encoding** | a PNG's IHDR matches its declared encoding; an NPY header matches its declared dtype and shape. A manifest that "looks right" but disagrees with its bytes is the failure class this lane exists to stop |
|
|
101
|
+
| **categorical** | indexed PNGs prove PLTE ⊆ declared palette; `nearest`-filtered channels get an *exhaustive* pixel decode; categorical NPYs get an exhaustive value scan |
|
|
102
|
+
| **gates** | the palette gate runs per render, from the manifest's own bands and thresholds — a failing render is rejected loudly and reported, never quietly admitted |
|
|
103
|
+
|
|
104
|
+
Records land **uncurated** (`judgment: null`) with `provenance.source: "asset"`, carrying
|
|
105
|
+
the acceptance block verbatim, per-file hashes, camera and derived facing, the gate
|
|
106
|
+
measurements, the declared style register, and per-image generation frame + seed. They then
|
|
107
|
+
go through the same curation every other record does.
|
|
108
|
+
|
|
109
|
+
The ingest also reports what a manifest *didn't* declare — an unknown style register, a
|
|
110
|
+
missing `identity.subject_name`, absent generation provenance — as **notices** rather than
|
|
111
|
+
failures. They ride in the receipt and print at the CLI. A gap nobody is told about is a gap
|
|
112
|
+
nobody can close; and because a manifest can *declare* that its renders are deterministic
|
|
113
|
+
derivations with no seed of their own, the lane never reports a gap on an export that is
|
|
114
|
+
correct.
|
|
115
|
+
|
|
116
|
+
Full contract, the validation ladder, and the reasoning behind every field:
|
|
117
|
+
[docs/asset-lane-design.md](docs/asset-lane-design.md).
|
|
118
|
+
|
|
68
119
|
## Canon authoring
|
|
69
120
|
|
|
70
121
|
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.
|
|
@@ -83,6 +134,8 @@ sdlab canon freeze kael_maren --project my-project --reason "prologue portrait l
|
|
|
83
134
|
sdlab canon drift --project my-project
|
|
84
135
|
```
|
|
85
136
|
|
|
137
|
+
A local model can draft canon too, but it never decides it. `sdlab canon draft <class_id> --endpoint <url> --brief "<text>" --out <path>` asks a loopback-only, OpenAI-compatible server for a canon entry and prompts, and writes them with `status: "draft"`, `judgment: null` and the drafting model stamped on every output. A draft cannot be frozen until a person ratifies it: the freeze gate refuses any model-drafted entry without a human approval, a reason, and the hash of the exact draft that was approved.
|
|
138
|
+
|
|
86
139
|
`canon build` is content-addressable — its output is keyed by a `canon_sha` and cached, so an unchanged canon rebuilds instantly. `canon freeze` witnesses each freeze against a specific build and appends to a `freeze-events.jsonl` audit trail: `frozen` entries refuse regeneration outright, `soft-advisory` entries refuse by default (bypass with `--i-know`). `canon drift` recomputes every watched entry's hash and flags anything that moved since the last clean build.
|
|
87
140
|
|
|
88
141
|
Full workflow in the handbook: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/), and [Two-LoRA stacking](handbook/two-lora-stacking/).
|
|
@@ -176,6 +229,7 @@ These are not aspirational. They are enforced.
|
|
|
176
229
|
- **No model verifies its own output.** Judgments record `judged_by_model` and `generator_model`; a warning fires if they are ever the same model.
|
|
177
230
|
- **A judgment says who made it.** `eligibility audit` distinguishes judgments a person wrote from judgments a bulk script minted, so a rationale that describes a category rather than an image cannot pass as curation.
|
|
178
231
|
- **Measurement is not verdict.** `sdlab measure` attaches numbers to a record. It never sets a judgment, a fit, or an approval — and where a measure is undefined for an image it records `null` rather than a plausible number.
|
|
232
|
+
- **A release can prove where every image came from.** `sdlab verify --project <name>` walks the chain offline for each record: the owner and licence on the record, the canon entry it was bound to (by hash), the licence of every model and LoRA that made it (SPDX id, licence URL, the date it was read, and the file hash), and the workflow hash in the run manifest. A missing link fails the check rather than passing it.
|
|
179
233
|
- **Adapters cannot mutate truth.** Different layout, same records. No additions, no removals, no reclassification.
|
|
180
234
|
- **Generated outputs re-enter through review.** No bypass. Curate and bind like everything else. Externally-generated images enter the same way via `sdlab ingest`, uncurated.
|
|
181
235
|
- **Failures are visible.** A missing record, an unplaceable image, or a caption that cannot be built stops an export or training package rather than quietly shrinking it.
|
|
@@ -266,7 +320,9 @@ File an issue at https://github.com/mcp-tool-shop-org/style-dataset-lab/issues w
|
|
|
266
320
|
|
|
267
321
|
## Security
|
|
268
322
|
|
|
269
|
-
Local
|
|
323
|
+
Local by default. No telemetry, no analytics, and no external requests from the `sdlab` CLI: images stay on your GPU and filesystem, and `canon draft` refuses any endpoint that isn't loopback.
|
|
324
|
+
|
|
325
|
+
The one exception is opt-in. `scripts/colab/` holds launch kits for running a render or a LoRA training step on your own Google Colab account. They upload only the files you point them at, run under a spending cap read from your live Colab balance, and stop their own session on exit. These kits are **experimental**: they have not yet completed a live window end to end.
|
|
270
326
|
|
|
271
327
|
## License
|
|
272
328
|
|