pixelkiln 0.5.0 → 0.6.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/PROVIDERS.md CHANGED
@@ -78,7 +78,9 @@ provider unit. Seeds are provider-specific, so equal seed numbers do not make
78
78
  the outputs directly reproducible across services.
79
79
 
80
80
  See the [environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) for the
81
- twelve generated images, prompts, manifests, measured costs, and review.
81
+ twenty generated images, prompts, manifests, measured costs, and review. The
82
+ 384×384 additions test a larger cliffside building and a full volcanic
83
+ background.
82
84
 
83
85
  ## Use both providers in one project
84
86
 
@@ -167,19 +169,57 @@ is interpreted in the active provider's unit. Providers without a balance or
167
169
  account-management endpoint can still generate safely because the offline
168
170
  estimate and hard budget remain enforced.
169
171
 
170
- ## Next validation and expansion
171
-
172
- 1. Complete representative paid Retro Diffusion multi-candidate, tileset, GIF,
173
- and spritesheet smoke tests without logging credentials. Single-candidate RD
174
- Fast and RD Plus still paths have passed end to end.
175
- 2. Promote only the workflows proven against the live service; keep unsupported
176
- account operations explicit capability errors.
177
- 3. Evaluate Scenario as another hosted game-asset provider.
178
- 4. Add a local ComfyUI adapter for GPU-backed, no-per-call-cost generation.
179
- 5. Consider general raster providers only with explicit nearest-neighbor,
172
+ ## What to build next
173
+
174
+ The highest-value next feature is native per-style provider routing, not a third
175
+ adapter. The benchmark now shows a useful split: PixelLab follows dense
176
+ building briefs more reliably, while Retro Diffusion returns cleaner cutouts
177
+ and strong close environment framing. Two manifests make that combination
178
+ possible, but awkward. One manifest should be able to send a building style to
179
+ PixelLab and a background or animation style to Retro Diffusion.
180
+
181
+ This needs provider-keyed budgets and confirmations, not a provider field added
182
+ in isolation. A safe plan must keep `4 generations` and `$0.40` separate,
183
+ construct and rate-limit each adapter independently, and require an explicit
184
+ provider for account-wide commands. The lockfile already records the provider
185
+ on each entry, so its identity model is ready for the change.
186
+
187
+ After that, Scenario is the best next hosted provider candidate.
188
+
189
+ | Candidate | What it adds | Fit with PixelKiln | Main cost or risk | Priority |
190
+ |---|---|---|---|---:|
191
+ | Scenario | Custom-trained style models, references, image editing, background removal, upscaling, and managed assets | Async jobs, asset IDs, and free `dryRun` cost estimates map closely to PixelKiln's plan/submit/poll/download lifecycle | API access requires a paid plan; auth uses both an API key and secret, so the provider factory must describe more than one credential | 1 |
192
+ | ComfyUI local/cloud | Reproducible workflow graphs, broad model choice, local GPU execution, and a cloud path using a compatible API | Workflow JSON could become a durable provenance input; jobs and output downloads already resemble the current provider boundary | Local cost has no universal provider unit; the cloud API is marked experimental and requires a subscription | 2 |
193
+ | fal | A large hosted model catalog, including pixel-art style controls, LoRAs, editing, upscaling, and background removal | Queue-based requests and model schemas are accessible through one client | Model-specific schemas and prices move the adapter toward a marketplace abstraction rather than one stable art workflow | 3 |
194
+
195
+ Scenario deserves the first spike because its [custom generation API](https://docs.scenario.com/get-started/generation/third-party-model-generation)
196
+ returns an asynchronous job ID, its [generation surface](https://docs.scenario.com/get-started/documentation/key-capabilities-at-a-glance)
197
+ supports custom models and image references, and its
198
+ [Compute Unit guidance](https://help.scenario.com/articles/7934059476-api-usage-and-credits-compute-units)
199
+ documents free cost preflights. That combination adds something the current
200
+ providers do not: a project-specific visual model with a cost check that can be
201
+ captured before submission.
202
+
203
+ ComfyUI should follow. Its [local server API](https://docs.comfy.org/development/overview)
204
+ would cover private or offline GPU workflows, while the
205
+ [cloud API](https://docs.comfy.org/development/cloud/overview) accepts the same
206
+ workflow-shaped requests and exposes asynchronous jobs. The adapter needs an
207
+ explicit budget policy before implementation. A local run could report planned
208
+ image count and measured execution time, but it must not pretend those values
209
+ are a portable dollar estimate.
210
+
211
+ Recommended order:
212
+
213
+ 1. Add per-style provider selection, provider-keyed budgets, and mixed-provider
214
+ integration tests.
215
+ 2. Finish live Retro Diffusion multi-candidate, tileset, GIF, and spritesheet
216
+ smoke tests.
217
+ 3. Build a narrow Scenario still-image spike with dry-run cost, submit, poll,
218
+ download, and one custom-model or reference-image benchmark.
219
+ 4. Define local and cloud budget semantics for ComfyUI, then prototype one
220
+ versioned workflow.
221
+ 5. Consider general raster marketplaces only with explicit nearest-neighbor,
180
222
  palette, transparency, and reproducibility checks.
181
- 6. Evaluate per-style provider selection with provider-keyed budgets; do not
182
- overload the current scalar `--budget` or silently sum incompatible units.
183
223
 
184
224
  Midjourney is not an adapter target without an official public API. Automating
185
225
  its consumer UI would be fragile and could violate provider terms.
package/README.md CHANGED
@@ -336,7 +336,7 @@ writes, and offline provenance verification. See [Library API](./docs/LIBRARY.md
336
336
  | [Manifest reference](./docs/MANIFEST.md) | Every style/asset field and generator constraint. |
337
337
  | [Agent workflows](./docs/AGENTS.md) | Official skill install, operating model, and provider-aware safety. |
338
338
  | [Generators](./docs/GENERATORS.md) | Capability choice, measured costs, palettes, style references, and tiles. |
339
- | [Environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) | Twelve matched outputs comparing buildings, landmarks, backgrounds, cost, and file readiness. |
339
+ | [Environment provider benchmark](./docs/PROVIDER_BENCHMARK.md) | Twenty matched outputs comparing buildings, landmarks, large backgrounds, cost, and file readiness. |
340
340
  | [Derived artifacts](./docs/ARTIFACTS.md) | Pack, mount, export, provenance, ownership, transactions, and recovery. |
341
341
  | [Recovery](./docs/RECOVERY.md) | Restore, caches, adopt, salvage, claims, and purge safety. |
342
342
  | [Quality gates](./docs/QUALITY.md) | Plan, doctor, audit, cache, JSON, and CI. |
@@ -1,8 +1,10 @@
1
1
  # Environment provider benchmark
2
2
 
3
- This benchmark compares PixelLab and Retro Diffusion on three 256×256 game-art
4
- briefs. Each brief has two attempts. The test uses the same prompt text and seed
5
- numbers for both providers, but seeds are not portable between models.
3
+ This benchmark compares PixelLab and Retro Diffusion on five game-art briefs.
4
+ Three briefs use 256×256 output; two use 384×384 to test larger buildings and
5
+ environment backgrounds. Each brief has two attempts. The test uses the same
6
+ prompt text and seed numbers for both providers, but seeds are not portable
7
+ between models.
6
8
 
7
9
  The benchmark tests the adapters that PixelKiln ships. It does not rank every
8
10
  model or endpoint sold by either provider.
@@ -14,10 +16,12 @@ model or endpoint sold by either provider.
14
16
  | Mountain observatory | `map`, high top-down view | `rd_plus__isometric_asset` | Isolated building on a snowy ridge |
15
17
  | River gate | `map`, low top-down view | `rd_plus__topdown_asset` | Isolated landmark spanning water |
16
18
  | Alpine valley | `pixflux`, background kept | `rd_plus__environment` | Full scenic background |
19
+ | Cliffside fortress | `map`, high top-down view | `rd_plus__isometric_asset` | Large isolated building complex |
20
+ | Volcanic pass | `pixflux`, background kept | `rd_plus__environment` | Full scenic background with reusable depth planes |
17
21
 
18
- Both manifests request 256×256 output with seeds `31415` and `27182`. The
19
- provider-specific route or style is allowed to do its job. No image was picked,
20
- edited, cropped, or post-processed.
22
+ Both manifests use seeds `31415` and `27182`. The provider-specific route or
23
+ style is allowed to do its job. No image was picked, edited, cropped, or
24
+ post-processed.
21
25
 
22
26
  PixelLab rejected `view: "isometric"` on the `map` endpoint with HTTP 422. The
23
27
  successful observatory attempts use the supported `high top-down` view while
@@ -93,15 +97,67 @@ For this brief, PixelLab wins on prompt coverage, graphic clarity, consistency,
93
97
  and cost. Retro Diffusion wins if the desired result is a closer, more cinematic
94
98
  scene.
95
99
 
100
+ ## Cliffside fortress at 384×384
101
+
102
+ Prompt: `a large fortified monastery built into a sheer mountain cliff,
103
+ isometric three-quarter view, central stone keep, two side towers, terraced
104
+ stairs, copper roofs, isolated with no scenery`
105
+
106
+ | PixelLab A | PixelLab B | Retro Diffusion A | Retro Diffusion B |
107
+ |---|---|---|---|
108
+ | ![PixelLab cliffside fortress attempt A](../website/public/benchmarks/provider-environments/pixellab/isolated/a/cliffside-fortress.png) | ![PixelLab cliffside fortress attempt B](../website/public/benchmarks/provider-environments/pixellab/isolated/b/cliffside-fortress.png) | ![Retro Diffusion cliffside fortress attempt A](../website/public/benchmarks/provider-environments/retrodiffusion/isolated/a/cliffside-fortress.png) | ![Retro Diffusion cliffside fortress attempt B](../website/public/benchmarks/provider-environments/retrodiffusion/isolated/b/cliffside-fortress.png) |
109
+
110
+ The larger canvas helped both providers. PixelLab used most of the frame and
111
+ kept the cliff, stairs, central keep, and tower structure legible. Attempt B is
112
+ the clearest match for a fortified monastery. Both outputs still include an
113
+ opaque gray field, and their 246 and 249 colors would need deliberate cleanup
114
+ for a tightly controlled palette.
115
+
116
+ Retro Diffusion improved markedly over its 256×256 observatory attempts. Both
117
+ results read as substantial cliffside compounds, and attempt B makes good use
118
+ of the full canvas. They are ready-to-place transparent cutouts with 75% and
119
+ 52% transparent pixels and only 55 and 49 colors. PixelLab is more reliable on
120
+ the exact architectural brief. Retro Diffusion is closer to a finished modular
121
+ map asset.
122
+
123
+ ## Volcanic pass at 384×384
124
+
125
+ Prompt: `a wide volcanic mountain pass at dawn, layered black peaks, glowing
126
+ lava river, basalt fortress in the middle distance, smoke plumes, full-bleed
127
+ parallax background with open sky`
128
+
129
+ | PixelLab A | PixelLab B | Retro Diffusion A | Retro Diffusion B |
130
+ |---|---|---|---|
131
+ | ![PixelLab volcanic pass attempt A](../website/public/benchmarks/provider-environments/pixellab/background/a/volcanic-pass.png) | ![PixelLab volcanic pass attempt B](../website/public/benchmarks/provider-environments/pixellab/background/b/volcanic-pass.png) | ![Retro Diffusion volcanic pass attempt A](../website/public/benchmarks/provider-environments/retrodiffusion/background/a/volcanic-pass.png) | ![Retro Diffusion volcanic pass attempt B](../website/public/benchmarks/provider-environments/retrodiffusion/background/b/volcanic-pass.png) |
132
+
133
+ PixelLab produced broader compositions with open sky and visibly separated
134
+ mountain planes. Attempt A includes the smoke plume and a clear volcano; attempt
135
+ B simplifies the scene into a graphic basin. Neither attempt includes a
136
+ recognizable fortress. Attempt A also contains a generated signature-like mark
137
+ in the lower-right corner, so it is not usable without cleanup. The files use
138
+ 44 and 26 colors.
139
+
140
+ Retro Diffusion made the pass and lava river unmistakable in both attempts. Its
141
+ narrow canyon framing is strong for a scene the player enters, but it leaves
142
+ less open sky and fewer obvious planes for a distant backdrop. It also dropped
143
+ the fortress and most of the smoke detail. The files use 26 and 25 colors.
144
+
145
+ None of these four files is a finished parallax package. They are flattened,
146
+ opaque scenes. PixelLab gives an artist clearer depth bands to cut apart; Retro
147
+ Diffusion gives the stronger single-frame canyon. A production workflow should
148
+ generate or extract the sky, distant peaks, middle ground, and foreground as
149
+ separate assets.
150
+
96
151
  ## Cost and operational results
97
152
 
98
153
  | Provider | Successful images | Charged amount | Final balance |
99
154
  |---|---:|---:|---:|
100
- | PixelLab | 6 | 6 generations | 4,415 generations |
101
- | Retro Diffusion | 6 | $0.348 | $0.135 |
155
+ | PixelLab | 10 | 10 generations | 4,411 generations |
156
+ | Retro Diffusion | 10 | $0.744 | $9.73 |
102
157
 
103
158
  PixelLab charged one generation per image. Retro Diffusion quoted and charged
104
- $0.058 per RD Plus image.
159
+ $0.058 for each 256px RD Plus image and $0.099 for each 384px RD Plus image;
160
+ PixelKiln's hard ceiling rounds the latter to $0.10 per image.
105
161
 
106
162
  The run also caught two integration details:
107
163
 
@@ -111,15 +167,16 @@ The run also caught two integration details:
111
167
  $0.057768 to $0.058. PixelKiln now rounds offline estimates up to the live
112
168
  quote precision, so planning remains a safe ceiling.
113
169
 
114
- Both manifests now pass `doctor`, report a current plan, and have six healthy
170
+ Both manifests now pass `doctor`, report a current plan, and have ten healthy
115
171
  PNG cache entries.
116
172
 
117
173
  ## Recommendation
118
174
 
119
175
  For large isolated buildings or landmarks, start with PixelLab when prompt
120
176
  coverage matters most. Budget for background cleanup. Start with Retro
121
- Diffusion when a transparent, compact, low-color asset matters more than
122
- capturing every noun in a complex prompt.
177
+ Diffusion when a transparent, low-color asset matters more than capturing every
178
+ noun in a complex prompt. At 384×384, Retro Diffusion can fill the frame with a
179
+ substantial structure rather than the compact cutouts seen in the first brief.
123
180
 
124
181
  For full scenic backgrounds, start with PixelLab Pixflux. These two attempts
125
182
  were cheaper and more faithful to the brief. Try Retro Diffusion when you want
@@ -130,5 +187,7 @@ background, buildings, landmarks, and foreground pieces separately. Compose
130
187
  them in the engine, then use integer nearest-neighbor scaling for display.
131
188
 
132
189
  This sample is useful, not definitive. Two attempts expose obvious tendencies,
133
- but they do not measure every style, prompt family, or model update. Rerun the
134
- committed manifests when either provider changes its models.
190
+ but they do not measure every style, prompt family, or model update. The new
191
+ volcanic brief also shows why prompt coverage needs review at the object level:
192
+ all four images lost the requested fortress. Rerun the committed manifests when
193
+ either provider changes its models.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelkiln",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -24,9 +24,11 @@ providers, or before any PixelLab account operation.
24
24
  | `tiles` | Ground variations or connected structures | 20–40 generations |
25
25
 
26
26
  In the committed environment benchmark, PixelLab followed complex building
27
- prompts more closely and produced the stronger scenic background. Its 256px map
28
- objects were opaque despite the route's transparency claim, so inspect alpha on
29
- one representative result before a batch.
27
+ prompts more closely and produced broader, more separable depth bands in scenic
28
+ backgrounds. Its 256px and 384px map objects were opaque despite the route's
29
+ transparency claim, so inspect alpha on one representative result before a
30
+ batch. Inspect scenic outputs for stray marks too: one untouched 384px attempt
31
+ contained a generated signature-like glyph.
30
32
 
31
33
  For setup and current field constraints, use
32
34
  <https://pixelkiln.griffen.codes/docs/pixellab>. When working in the PixelKiln
@@ -31,6 +31,13 @@ cutouts, smaller palettes, cinematic framing, or native animation. Build truly
31
31
  large scenes from separately generated terrain, backdrop, landmark, building,
32
32
  and foreground layers, then integer-upscale with nearest-neighbor filtering.
33
33
 
34
+ The committed 384px benchmark produced substantially larger isometric
35
+ buildings than the earlier 256px brief while retaining 52% to 75%
36
+ transparency and 49 to 55 colors. Its volcanic backgrounds made the pass and
37
+ lava path clear, but dropped a requested fortress and favored close canyon
38
+ framing over separable distant planes. Use a representative large asset before
39
+ assuming prompt details or layerability will survive a batch.
40
+
34
41
  For setup, selectors, and option constraints, use
35
42
  <https://pixelkiln.griffen.codes/docs/retro-diffusion>. The matched visual
36
43
  evidence is at <https://pixelkiln.griffen.codes/docs/provider-benchmark>. When