lootforge 0.3.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 (243) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/README.md +764 -0
  3. package/bin/lootforge.js +28 -0
  4. package/dist/benchmarks/coarseToFineCost.d.ts +21 -0
  5. package/dist/benchmarks/coarseToFineCost.js +49 -0
  6. package/dist/benchmarks/coarseToFineCost.js.map +1 -0
  7. package/dist/checks/boundaryMetrics.d.ts +12 -0
  8. package/dist/checks/boundaryMetrics.js +102 -0
  9. package/dist/checks/boundaryMetrics.js.map +1 -0
  10. package/dist/checks/candidateScore.d.ts +11 -0
  11. package/dist/checks/candidateScore.js +462 -0
  12. package/dist/checks/candidateScore.js.map +1 -0
  13. package/dist/checks/commandParser.d.ts +5 -0
  14. package/dist/checks/commandParser.js +99 -0
  15. package/dist/checks/commandParser.js.map +1 -0
  16. package/dist/checks/consistencyOutliers.d.ts +42 -0
  17. package/dist/checks/consistencyOutliers.js +156 -0
  18. package/dist/checks/consistencyOutliers.js.map +1 -0
  19. package/dist/checks/imageAcceptance.d.ts +67 -0
  20. package/dist/checks/imageAcceptance.js +967 -0
  21. package/dist/checks/imageAcceptance.js.map +1 -0
  22. package/dist/checks/packInvariants.d.ts +56 -0
  23. package/dist/checks/packInvariants.js +1064 -0
  24. package/dist/checks/packInvariants.js.map +1 -0
  25. package/dist/checks/softAdapters.d.ts +25 -0
  26. package/dist/checks/softAdapters.js +275 -0
  27. package/dist/checks/softAdapters.js.map +1 -0
  28. package/dist/checks/vlmGate.d.ts +8 -0
  29. package/dist/checks/vlmGate.js +200 -0
  30. package/dist/checks/vlmGate.js.map +1 -0
  31. package/dist/cli/commands/atlas.d.ts +5 -0
  32. package/dist/cli/commands/atlas.js +18 -0
  33. package/dist/cli/commands/atlas.js.map +1 -0
  34. package/dist/cli/commands/eval.d.ts +6 -0
  35. package/dist/cli/commands/eval.js +23 -0
  36. package/dist/cli/commands/eval.js.map +1 -0
  37. package/dist/cli/commands/generate.d.ts +18 -0
  38. package/dist/cli/commands/generate.js +66 -0
  39. package/dist/cli/commands/generate.js.map +1 -0
  40. package/dist/cli/commands/init.d.ts +15 -0
  41. package/dist/cli/commands/init.js +146 -0
  42. package/dist/cli/commands/init.js.map +1 -0
  43. package/dist/cli/commands/package.d.ts +6 -0
  44. package/dist/cli/commands/package.js +27 -0
  45. package/dist/cli/commands/package.js.map +1 -0
  46. package/dist/cli/commands/plan.d.ts +16 -0
  47. package/dist/cli/commands/plan.js +49 -0
  48. package/dist/cli/commands/plan.js.map +1 -0
  49. package/dist/cli/commands/process.d.ts +14 -0
  50. package/dist/cli/commands/process.js +29 -0
  51. package/dist/cli/commands/process.js.map +1 -0
  52. package/dist/cli/commands/regenerate.d.ts +29 -0
  53. package/dist/cli/commands/regenerate.js +244 -0
  54. package/dist/cli/commands/regenerate.js.map +1 -0
  55. package/dist/cli/commands/review.d.ts +5 -0
  56. package/dist/cli/commands/review.js +18 -0
  57. package/dist/cli/commands/review.js.map +1 -0
  58. package/dist/cli/commands/select.d.ts +6 -0
  59. package/dist/cli/commands/select.js +21 -0
  60. package/dist/cli/commands/select.js.map +1 -0
  61. package/dist/cli/commands/serve.d.ts +16 -0
  62. package/dist/cli/commands/serve.js +100 -0
  63. package/dist/cli/commands/serve.js.map +1 -0
  64. package/dist/cli/commands/validate.d.ts +17 -0
  65. package/dist/cli/commands/validate.js +108 -0
  66. package/dist/cli/commands/validate.js.map +1 -0
  67. package/dist/cli/index.d.ts +1 -0
  68. package/dist/cli/index.js +157 -0
  69. package/dist/cli/index.js.map +1 -0
  70. package/dist/cli/parseArgs.d.ts +3 -0
  71. package/dist/cli/parseArgs.js +37 -0
  72. package/dist/cli/parseArgs.js.map +1 -0
  73. package/dist/contracts/stageArtifacts.d.ts +4031 -0
  74. package/dist/contracts/stageArtifacts.js +663 -0
  75. package/dist/contracts/stageArtifacts.js.map +1 -0
  76. package/dist/manifest/load.d.ts +3 -0
  77. package/dist/manifest/load.js +50 -0
  78. package/dist/manifest/load.js.map +1 -0
  79. package/dist/manifest/normalize-palette.d.ts +17 -0
  80. package/dist/manifest/normalize-palette.js +235 -0
  81. package/dist/manifest/normalize-palette.js.map +1 -0
  82. package/dist/manifest/normalize-policy.d.ts +48 -0
  83. package/dist/manifest/normalize-policy.js +239 -0
  84. package/dist/manifest/normalize-policy.js.map +1 -0
  85. package/dist/manifest/normalize-prompt.d.ts +14 -0
  86. package/dist/manifest/normalize-prompt.js +73 -0
  87. package/dist/manifest/normalize-prompt.js.map +1 -0
  88. package/dist/manifest/normalize-target.d.ts +49 -0
  89. package/dist/manifest/normalize-target.js +542 -0
  90. package/dist/manifest/normalize-target.js.map +1 -0
  91. package/dist/manifest/schema.d.ts +7570 -0
  92. package/dist/manifest/schema.js +373 -0
  93. package/dist/manifest/schema.js.map +1 -0
  94. package/dist/manifest/semantic-validation.d.ts +4 -0
  95. package/dist/manifest/semantic-validation.js +526 -0
  96. package/dist/manifest/semantic-validation.js.map +1 -0
  97. package/dist/manifest/types.d.ts +263 -0
  98. package/dist/manifest/types.js +2 -0
  99. package/dist/manifest/types.js.map +1 -0
  100. package/dist/manifest/validate.d.ts +12 -0
  101. package/dist/manifest/validate.js +221 -0
  102. package/dist/manifest/validate.js.map +1 -0
  103. package/dist/output/assetPackManifest.d.ts +19 -0
  104. package/dist/output/assetPackManifest.js +20 -0
  105. package/dist/output/assetPackManifest.js.map +1 -0
  106. package/dist/output/catalog.d.ts +60 -0
  107. package/dist/output/catalog.js +107 -0
  108. package/dist/output/catalog.js.map +1 -0
  109. package/dist/output/contactSheet.d.ts +13 -0
  110. package/dist/output/contactSheet.js +124 -0
  111. package/dist/output/contactSheet.js.map +1 -0
  112. package/dist/output/phaserManifest.d.ts +8 -0
  113. package/dist/output/phaserManifest.js +25 -0
  114. package/dist/output/phaserManifest.js.map +1 -0
  115. package/dist/output/pixiManifest.d.ts +8 -0
  116. package/dist/output/pixiManifest.js +37 -0
  117. package/dist/output/pixiManifest.js.map +1 -0
  118. package/dist/output/provenance.d.ts +121 -0
  119. package/dist/output/provenance.js +10 -0
  120. package/dist/output/provenance.js.map +1 -0
  121. package/dist/output/runtimeManifests.d.ts +21 -0
  122. package/dist/output/runtimeManifests.js +82 -0
  123. package/dist/output/runtimeManifests.js.map +1 -0
  124. package/dist/output/unityImportManifest.d.ts +10 -0
  125. package/dist/output/unityImportManifest.js +58 -0
  126. package/dist/output/unityImportManifest.js.map +1 -0
  127. package/dist/output/zip.d.ts +5 -0
  128. package/dist/output/zip.js +68 -0
  129. package/dist/output/zip.js.map +1 -0
  130. package/dist/pipeline/atlas.d.ts +33 -0
  131. package/dist/pipeline/atlas.js +286 -0
  132. package/dist/pipeline/atlas.js.map +1 -0
  133. package/dist/pipeline/eval.d.ts +104 -0
  134. package/dist/pipeline/eval.js +246 -0
  135. package/dist/pipeline/eval.js.map +1 -0
  136. package/dist/pipeline/generate.d.ts +44 -0
  137. package/dist/pipeline/generate.js +1088 -0
  138. package/dist/pipeline/generate.js.map +1 -0
  139. package/dist/pipeline/package.d.ts +18 -0
  140. package/dist/pipeline/package.js +218 -0
  141. package/dist/pipeline/package.js.map +1 -0
  142. package/dist/pipeline/process.d.ts +15 -0
  143. package/dist/pipeline/process.js +776 -0
  144. package/dist/pipeline/process.js.map +1 -0
  145. package/dist/pipeline/review.d.ts +10 -0
  146. package/dist/pipeline/review.js +341 -0
  147. package/dist/pipeline/review.js.map +1 -0
  148. package/dist/pipeline/seamHeal.d.ts +2 -0
  149. package/dist/pipeline/seamHeal.js +70 -0
  150. package/dist/pipeline/seamHeal.js.map +1 -0
  151. package/dist/pipeline/select.d.ts +39 -0
  152. package/dist/pipeline/select.js +79 -0
  153. package/dist/pipeline/select.js.map +1 -0
  154. package/dist/providers/job.d.ts +29 -0
  155. package/dist/providers/job.js +113 -0
  156. package/dist/providers/job.js.map +1 -0
  157. package/dist/providers/localDiffusion.d.ts +28 -0
  158. package/dist/providers/localDiffusion.js +235 -0
  159. package/dist/providers/localDiffusion.js.map +1 -0
  160. package/dist/providers/nano.d.ts +36 -0
  161. package/dist/providers/nano.js +402 -0
  162. package/dist/providers/nano.js.map +1 -0
  163. package/dist/providers/openai.d.ts +37 -0
  164. package/dist/providers/openai.js +378 -0
  165. package/dist/providers/openai.js.map +1 -0
  166. package/dist/providers/policy.d.ts +9 -0
  167. package/dist/providers/policy.js +192 -0
  168. package/dist/providers/policy.js.map +1 -0
  169. package/dist/providers/prompt.d.ts +3 -0
  170. package/dist/providers/prompt.js +63 -0
  171. package/dist/providers/prompt.js.map +1 -0
  172. package/dist/providers/registry.d.ts +24 -0
  173. package/dist/providers/registry.js +92 -0
  174. package/dist/providers/registry.js.map +1 -0
  175. package/dist/providers/runtime.d.ts +15 -0
  176. package/dist/providers/runtime.js +101 -0
  177. package/dist/providers/runtime.js.map +1 -0
  178. package/dist/providers/runtimeConfig.d.ts +20 -0
  179. package/dist/providers/runtimeConfig.js +146 -0
  180. package/dist/providers/runtimeConfig.js.map +1 -0
  181. package/dist/providers/types-core.d.ts +514 -0
  182. package/dist/providers/types-core.js +60 -0
  183. package/dist/providers/types-core.js.map +1 -0
  184. package/dist/providers/types.d.ts +4 -0
  185. package/dist/providers/types.js +5 -0
  186. package/dist/providers/types.js.map +1 -0
  187. package/dist/service/generationRequest.d.ts +58 -0
  188. package/dist/service/generationRequest.js +203 -0
  189. package/dist/service/generationRequest.js.map +1 -0
  190. package/dist/service/providerCapabilities.d.ts +40 -0
  191. package/dist/service/providerCapabilities.js +114 -0
  192. package/dist/service/providerCapabilities.js.map +1 -0
  193. package/dist/service/server.d.ts +31 -0
  194. package/dist/service/server.js +774 -0
  195. package/dist/service/server.js.map +1 -0
  196. package/dist/shared/errors.d.ts +13 -0
  197. package/dist/shared/errors.js +24 -0
  198. package/dist/shared/errors.js.map +1 -0
  199. package/dist/shared/fs.d.ts +6 -0
  200. package/dist/shared/fs.js +30 -0
  201. package/dist/shared/fs.js.map +1 -0
  202. package/dist/shared/image.d.ts +25 -0
  203. package/dist/shared/image.js +136 -0
  204. package/dist/shared/image.js.map +1 -0
  205. package/dist/shared/paths.d.ts +30 -0
  206. package/dist/shared/paths.js +103 -0
  207. package/dist/shared/paths.js.map +1 -0
  208. package/dist/shared/schemas.d.ts +209 -0
  209. package/dist/shared/schemas.js +93 -0
  210. package/dist/shared/schemas.js.map +1 -0
  211. package/dist/shared/typeGuards.d.ts +1 -0
  212. package/dist/shared/typeGuards.js +4 -0
  213. package/dist/shared/typeGuards.js.map +1 -0
  214. package/dist/shared/zod.d.ts +1 -0
  215. package/dist/shared/zod.js +14 -0
  216. package/dist/shared/zod.js.map +1 -0
  217. package/dist/showcase/format.d.ts +9 -0
  218. package/dist/showcase/format.js +61 -0
  219. package/dist/showcase/format.js.map +1 -0
  220. package/dist/showcase/panelRenderer.d.ts +59 -0
  221. package/dist/showcase/panelRenderer.js +294 -0
  222. package/dist/showcase/panelRenderer.js.map +1 -0
  223. package/dist/showcase/releaseConfig.d.ts +233 -0
  224. package/dist/showcase/releaseConfig.js +75 -0
  225. package/dist/showcase/releaseConfig.js.map +1 -0
  226. package/dist/showcase/releaseEvidence.d.ts +25 -0
  227. package/dist/showcase/releaseEvidence.js +540 -0
  228. package/dist/showcase/releaseEvidence.js.map +1 -0
  229. package/dist/showcase/releaseEvidenceSchema.d.ts +1611 -0
  230. package/dist/showcase/releaseEvidenceSchema.js +165 -0
  231. package/dist/showcase/releaseEvidenceSchema.js.map +1 -0
  232. package/dist/showcase/scenarioRenderer.d.ts +19 -0
  233. package/dist/showcase/scenarioRenderer.js +488 -0
  234. package/dist/showcase/scenarioRenderer.js.map +1 -0
  235. package/docs/ADAPTER_CONTRACT.md +141 -0
  236. package/docs/ENGINE_TARGETING.md +86 -0
  237. package/docs/MANIFEST_POLICY_COVERAGE.md +130 -0
  238. package/docs/RELEASE_WORKFLOW.md +117 -0
  239. package/docs/ROADMAP.md +411 -0
  240. package/docs/ROADMAP_ISSUES.md +244 -0
  241. package/docs/SERVICE_MODE.md +137 -0
  242. package/docs/manifest-schema.md +254 -0
  243. package/package.json +70 -0
@@ -0,0 +1,411 @@
1
+ # LootForge Public Release Roadmap
2
+
3
+ Last updated: 2026-03-06
4
+
5
+ ## Goal
6
+
7
+ Move LootForge from a strong early foundation (`0.1.x`) to a dependable, public-facing release with:
8
+
9
+ - controllable generation workflows,
10
+ - measurable quality gates,
11
+ - predictable artifact contracts,
12
+ - clear operational guidance for teams.
13
+
14
+ ## Current Baseline (Shipped in 0.1.x)
15
+
16
+ - Manifest-driven staged pipeline (`plan -> generate -> process -> atlas -> eval -> review -> select -> package`).
17
+ - Path-safety and reliability hardening across pipeline stages.
18
+ - Style kits with consistency-group semantics and manifest asset validation.
19
+ - OpenAI `edit-first` generation path (edits endpoint, multipart inputs).
20
+ - External soft-adapter execution for CLIP/LPIPS/SSIM in eval.
21
+ - Weighted candidate ranking using profile weights and adapter score contributions.
22
+ - Selection lock + skip-locked generation path for deterministic no-regenerate flows.
23
+
24
+ ## `0.2.0` Progress Snapshot (2026-02-18)
25
+
26
+ - Added dedicated `lootforge regenerate --edit` flow using approved selection-lock outputs as edit bases.
27
+ - Added per-target score-component detail blocks in review output for eval/review explainability parity.
28
+ - Added style-kit palette auto-ingest (`styleKits[].palettePath`) when target palette policy is unset.
29
+ - Added enforced PR/push CI (`typecheck`, `test`, `build`) plus security workflows (dependency review, `npm audit`, CodeQL).
30
+
31
+ ## Release Principles
32
+
33
+ - Keep behavior deterministic unless explicitly marked stochastic.
34
+ - Every ranking decision should be explainable from report artifacts.
35
+ - Treat unsafe pathing and silent fallback behavior as release blockers.
36
+ - Keep manifest/schema compatibility explicit and migration-friendly.
37
+
38
+ ## Product Parity Focus (OSS)
39
+
40
+ - Prioritize functional parity with modern game-asset generators for request semantics, post-processing outputs, and automation interfaces.
41
+ - Keep auth/subscription gating and credit metering out of core LootForge scope.
42
+ - Prefer composable interfaces (CLI + API + MCP wrapper) over product-specific UI coupling.
43
+
44
+ ## Version Plan
45
+
46
+ | Version | Codename | Theme | Outcome |
47
+ | ------- | ---------------- | --------------------------- | -------------------------------------------------------------- |
48
+ | `0.2.0` | `Emberforge` | Public Beta Foundation | Stable quality gates + practical edit workflows for teams |
49
+ | `0.3.0` | `Tempered Steel` | Control and Consistency | Stronger content control, repeatability, and candidate quality |
50
+ | `0.4.0` | `Anvilheart` | Local Production Path | Serious local diffusion path (ControlNet/LoRA workflow) |
51
+ | `0.5.0` | `Runesmelter` | Team Scale and Integrations | CI/regression dashboards + multi-engine packaging maturity |
52
+ | `1.0.0` | `Mythic Foundry` | General Availability | Public release with compatibility promises and ops docs |
53
+
54
+ ## `0.2.0` Public Beta Foundation (`Emberforge`)
55
+
56
+ Focus: close the biggest usability/control gaps for day-to-day production use.
57
+
58
+ ### Scope
59
+
60
+ - Edit-first UX completion:
61
+ - add a dedicated regen/edit CLI flow (`lootforge regenerate --edit` style path),
62
+ - preserve target lock provenance when regenerating by edit.
63
+ - Candidate quality:
64
+ - expose score weighting defaults clearly in init templates/docs,
65
+ - add per-target score breakdown rendering to review output.
66
+ - Palette and tile reliability:
67
+ - auto-ingest `styleKits[].palettePath` into quantize defaults when target palette is unset,
68
+ - add optional seam-heal pass for tile-marked targets.
69
+ - Eval usability:
70
+ - add adapter health section in eval report (configured, active, failed),
71
+ - document adapter reference implementation format with examples.
72
+
73
+ ### Exit Criteria
74
+
75
+ - Beta pack can be generated, reviewed, and regenerated via edit-first without manual JSON surgery.
76
+ - Eval and review artifacts expose enough detail to explain why a candidate won.
77
+ - Tile/palette policies are applied consistently from style kit defaults.
78
+
79
+ ## `0.3.0` Control and Consistency (`Tempered Steel`)
80
+
81
+ Focus: improve artistic consistency and ranking quality beyond heuristics.
82
+
83
+ ### Scope
84
+
85
+ - Content-aware ranking expansion:
86
+ - run adapter scoring during candidate generation and eval with shared contract (already partially landed),
87
+ - calibrate score weighting presets by target kind (sprite/tile/background/effect).
88
+ - Consistency-group coherence and Identity Stability:
89
+ - add group-level outlier scoring from LPIPS/CLIP metrics across sibling targets,
90
+ - implement cross-frame DINO feature similarity to automatically flag character/geometry drift in animations,
91
+ - surface drift warnings at group level in eval + review.
92
+ - Advanced Tiling Contracts and Palette QA:
93
+ - formalize a deterministic Tiling Score (TS) for strict Wang-tile topology validation,
94
+ - add Palette Consistency Score (PCS) to enforce indexed palette constraints on pixel art outputs.
95
+ - Cloud provider edit path parity:
96
+ - implement Nano/Gemini edit-first flow equivalent to OpenAI path where supported.
97
+ - Scoring profile support:
98
+ - allow manifest scoring profiles to override default per-kind weight presets.
99
+ - Auto-Correction via LLM/VLM "Agentic Retry":
100
+ - if a candidate fails the VLM or Edge-Aware QA gates, automatically feed the critique into an edit-first regeneration loop.
101
+
102
+ ### Exit Criteria
103
+
104
+ - Candidate selection reflects both deterministic gates and content-aware signals.
105
+ - Consistency drift is visible and actionable at group and pack levels.
106
+ - OpenAI and Nano edit-first flows are both supported and documented.
107
+
108
+ ## `0.4.0` Local Production Path (`Anvilheart`)
109
+
110
+ Focus: deliver high-control local workflows for repeatable professional packs.
111
+
112
+ ### Scope
113
+
114
+ - Local diffusion production architecture:
115
+ - explicit ControlNet input contract (pose/edge/depth/segmentation roles),
116
+ - workflow templates for local service endpoints.
117
+ - Semantic animation control and showcase reliability:
118
+ - add semantic gait/pose scoring for directional walk cycles so believable stride and forward momentum are evaluated separately from continuity drift,
119
+ - rank multi-attempt animation captures using semantic motion, footfall, and facing signals instead of prompt-only heuristics,
120
+ - support deterministic fallback to a locked canonical walk exemplar when stochastic generation cannot produce a release-grade strip.
121
+ - 3D-to-2D Projection & Automating ControlNets:
122
+ - integrate headless 3D rendering (e.g., three.js) to ingest primitive meshes,
123
+ - auto-capture isometric Depth/Normal maps to drive ControlNet, guaranteeing 8-way directional consistency.
124
+ - LoRA-ready pack support:
125
+ - manifest metadata for LoRA/model variants per style kit,
126
+ - provenance capture of model/control stack used per output.
127
+ - Throughput and queueing:
128
+ - separate GPU generation queue from CPU post-process workers,
129
+ - hard concurrency/rate controls with predictable scheduling.
130
+ - Multi-Layer Compositions & Alpha Matting:
131
+ - implement diffusion matting exporters for fringeless alpha extraction,
132
+ - support native multi-layer outputs (e.g., z-index layers or PSD equivalents) for UI and characters.
133
+
134
+ ### Exit Criteria
135
+
136
+ - Local path can produce repeatable packs with structural controls enabled.
137
+ - Provenance is sufficient to reproduce a pack’s generation conditions.
138
+ - Walk-cycle showcase outputs are semantically readable, directionally consistent, and deterministic under release capture.
139
+
140
+ ## `0.5.0` Team Scale and Integrations (`Runesmelter`)
141
+
142
+ Focus: team operations, CI confidence, and runtime integration maturity.
143
+
144
+ ### Scope
145
+
146
+ - Evaluation harness maturation:
147
+ - fixture packs committed for regression tests,
148
+ - thresholded CI checks for hard gates + selected soft metrics.
149
+ - Reporting and dashboards:
150
+ - machine-readable eval trend artifacts for CI history,
151
+ - release quality summary per pack build.
152
+ - Runtime export expansion:
153
+ - improve metadata exports (anchors/pivots/nine-slice metadata),
154
+ - add Unity/Godot-oriented output presets.
155
+ - Native Vector Generation:
156
+ - use LLM/Diffusion-guided SVG synthesis to generate structured, layer-separated true vector assets,
157
+ - implement style-preserving vector distillation (e.g., IconDM) to expand icon seed sets into massive cohesive packs.
158
+ - First-Class Audio Generation Pipeline:
159
+ - add LLM-driven audio manifest generation from text prompts,
160
+ - integrate time-varying control for parameterized SFX (e.g., UI clicks, hits),
161
+ - support timing-directed prompts and loop-aware inference for seamless ambience/music,
162
+ - support multi-track stem generation and enforce ITU-R/EBU loudness compliance QA.
163
+ - Generative Dependency DAG ("Asset Lineage"):
164
+ - treat generation targets as a Directed Acyclic Graph,
165
+ - automatically inject approved parent assets as IP-Adapter/Style references into child targets for total pack coherence.
166
+ - Native Engine Editor Plugins:
167
+ - build native Unity/Godot Editor plugins communicating via `serve` mode,
168
+ - enable direct text-to-asset hot-swapping directly on GameObjects in-editor.
169
+
170
+ ### Exit Criteria
171
+
172
+ - CI can reject quality regressions automatically and explain why.
173
+ - Pack outputs are straightforward to consume across target engines.
174
+
175
+ ## `1.0.0` General Availability (`Mythic Foundry`)
176
+
177
+ Focus: stable public contract and operational readiness.
178
+
179
+ ### Scope
180
+
181
+ - Compatibility and migration:
182
+ - freeze/stabilize manifest contract for GA line,
183
+ - provide schema migration notes and version compatibility matrix.
184
+ - Public release operations:
185
+ - harden docs for setup, adapter integration, and troubleshooting,
186
+ - publish release checklist and support policy.
187
+ - Security/compliance hygiene:
188
+ - document model/provider licensing considerations,
189
+ - define safe defaults for secrets and external adapter execution.
190
+ - The Multimodal Style Bible:
191
+ - expand `styleKits` scheme to encompass both visual constraints and audio constraints (reverb, loudness, sonic palette),
192
+ - enforce the single style bible definitively across the entire generative pack pipeline.
193
+ - Temporal Consistency via Video-to-Sprite Inference (Future Focus):
194
+ - implement `video-to-sprite` target mode utilizing frame-interpolation over generated video,
195
+ - deliver drift-free 60fps sprite animation exceeding pure image-diffusion bounds.
196
+ - Native 3D Asset Generation (Future Focus):
197
+ - expand target kinds to support `.gltf`/`.glb` 3D mesh generation for engines like Three.js.
198
+ - apply QA validation gates for polygon budgets, clean topology, and PBR material consistency.
199
+
200
+ ### Exit Criteria
201
+
202
+ - Public users can adopt LootForge without internal tribal knowledge.
203
+ - Manifest + output contracts have explicit compatibility guarantees.
204
+
205
+ ## Cross-Version Trackers
206
+
207
+ These run continuously across versions and should be reviewed per milestone:
208
+
209
+ - Quality metrics:
210
+ - candidate acceptance pass rate,
211
+ - edit-first success rate,
212
+ - consistency drift incidents,
213
+ - tile seam failure rate.
214
+ - Reliability:
215
+ - failed job retry success ratio,
216
+ - adapter failure frequency,
217
+ - deterministic rebuild consistency on locked targets.
218
+ - Cost efficiency:
219
+ - provider calls per approved target,
220
+ - candidate count per approved target.
221
+ - Operational diagnostics:
222
+ - run failure rate,
223
+ - mean time to diagnose failures from provenance/eval artifacts.
224
+ - DX:
225
+ - setup time for first successful pack,
226
+ - number of manual manifest edits required per pack iteration,
227
+ - review minutes per approved target.
228
+
229
+ ## Upcoming (Execution Queue)
230
+
231
+ These items should be actively planned and ticketed now.
232
+
233
+ ### `0.2.0` Upcoming (Public Beta Foundation / `Emberforge`)
234
+
235
+ - Scope complete; no remaining upcoming items in `0.2.0`.
236
+
237
+ Completed 2026-02-18 in this release track:
238
+
239
+ - Added adapter health section to eval report (`configured`, `active`, `failed`) and shipped adapter contract docs/examples.
240
+ - Added optional `seamHeal` processing pass for tileable targets and `wrapGrid` validation checks.
241
+ - Added `lootforge regenerate --edit` command path and preserved selection/provenance semantics.
242
+ - Added score-component detail blocks to review output.
243
+ - Applied `styleKits[].palettePath` defaults when target palette policy is unset.
244
+ - Added baseline CI/security workflows for PRs and pushes.
245
+
246
+ ### `0.3.0` Upcoming (Control and Consistency / `Tempered Steel`)
247
+
248
+ Completed 2026-02-20 in this release track:
249
+
250
+ - Release-gate coverage hardening:
251
+ - added integration coverage for generate fallback chains, approved lock skip/copy behavior, and candidate replacement selection,
252
+ - added direct unit coverage for generate CLI arg parsing and boolean flag handling,
253
+ - tightened CI test gates to fail on missing unit/integration suites and enforce critical-path coverage thresholds.
254
+
255
+ - Harden path safety for edit/adapters:
256
+ - enforce in-root normalization for `edit.inputs` paths before provider uploads and adapter payload expansion.
257
+ - Add versioned stage-artifact contract tests:
258
+ - define authoritative contract schemas for `targets-index`, run provenance, acceptance report, eval report, and selection lock artifacts,
259
+ - add CI fixture-pack smoke tests that validate contract compatibility end-to-end.
260
+ - Make provider configuration an enforced runtime contract:
261
+ - consistently apply manifest/env endpoint, timeout, retry, delay, and concurrency settings across all providers,
262
+ - add capability-claim parity checks so provider feature flags reflect actual runtime behavior.
263
+ - Performance reliability follow-ups:
264
+ - eliminate repeated candidate-image decode/stats passes during scoring,
265
+ - run enabled soft adapters in parallel with deterministic result aggregation,
266
+ - reduce repeated PNG decode work for resize variants and auxiliary map derivation.
267
+ - Add automated VLM candidate grading gates:
268
+ - add manifest-configurable `generationPolicy.vlmGate` with threshold default `4/5` and optional rubric text,
269
+ - reject below-threshold candidates before final selection and persist per-candidate VLM decisions in provenance,
270
+ - surface VLM score/threshold/reason traceability in eval and review artifacts.
271
+ - Add edge-aware quality scoring and hard-gate coverage:
272
+ - added alpha-boundary metrics (`alphaHaloRisk`, `alphaStrayNoise`, `alphaEdgeSharpness`) to candidate scoring and eval acceptance output,
273
+ - enforce configurable hard-gate thresholds from evaluation profiles for halo risk, stray noise, and boundary edge sharpness,
274
+ - surface boundary-focused rejection reasons in candidate score records and acceptance issue diagnostics.
275
+ - Expand acceptance from single-image checks to pack-level invariants:
276
+ - enforce runtime/output uniqueness across non-catalog targets and spritesheet atlas-family integrity checks,
277
+ - add spritesheet continuity checks (adjacent-frame silhouette/anchor drift metrics + optional hard-gate thresholds),
278
+ - add optional profile texture-memory budget gates and propagate pack-level summary into acceptance/eval/review artifacts.
279
+ - Add optional service mode with stable HTTP generation endpoints and MCP wrapper compatibility:
280
+ - added `lootforge serve` command with stable JSON endpoints (`/v1/health`, `/v1/tools`, `/v1/tools/:name`, `/v1/:name`),
281
+ - added command/tool metadata discovery and deterministic request/response envelopes for wrapper integration,
282
+ - kept core service mode intentionally unauthenticated (no auth/credit layer in core).
283
+ - Define a canonical generation request contract and mapping layer between service requests and manifest/pipeline targets:
284
+ - added `POST /v1/generation/requests` contract endpoint that maps canonical service requests into `plan -> generate`,
285
+ - added `GET /v1/contracts/generation-request` schema/field descriptor for wrapper discovery,
286
+ - added inline manifest materialization and normalized request metadata in service response payloads.
287
+ - Implement Nano/Gemini edit-first parity (where supported) with tests:
288
+ - added Gemini/Nano edit-first request mapping with role-aware input handling for `base`, `mask`, and `reference` inputs,
289
+ - enforce safe in-root edit input path resolution and explicit Nano edit error codes for unsupported models / unreadable inputs,
290
+ - added deterministic unit coverage for Nano text-mode and edit-first request execution paths.
291
+ - Add manifest schema scaffolding for directed synthesis controls:
292
+ - added manifest + planner scaffolding for `targets[].controlImage`, `targets[].controlMode` (`canny|depth|openpose`),
293
+ - added style-kit scaffolding for `styleKits[].styleReferenceImages`, `styleKits[].loraPath`, and `styleKits[].loraStrength`,
294
+ - added generation-policy scaffolding for `generationPolicy.highQuality` and optional `generationPolicy.hiresFix`.
295
+ - Implement first-class post-process semantics for pixel-perfect/smart-crop behaviors and explicit variant artifacts:
296
+ - added manifest schema + normalized planner support for `postProcess.operations.smartCrop`, `pixelPerfect`, and `emitVariants`,
297
+ - implemented process-stage semantics for smart-crop behavior and pixel-perfect nearest-neighbor resize handling,
298
+ - added explicit processed artifact emission for `__raw`, `__style_ref`, and `__pixel` variants.
299
+ - Harden pixel-perfect quantization behavior:
300
+ - enforce deterministic nearest-color exact-palette mapping with alpha-safe handling (transparent RGB zeroing),
301
+ - add exact-palette strict mode (`palette.strict`) that enforces 100% visible-pixel compliance during process/acceptance/scoring.
302
+ - Add manifest policy coverage checks:
303
+ - added machine-checkable policy coverage index (`docs/MANIFEST_POLICY_COVERAGE.md`) for documented manifest policy fields,
304
+ - added `check:manifest-policy` release gate that fails when documented fields are neither `implemented` nor `reserved`,
305
+ - require test evidence for every implemented policy field and emit CI report artifacts at `coverage/manifest-policy-coverage.json`.
306
+ - Introduce per-kind scoring presets and manifest-level scoring profile overrides:
307
+ - added deterministic built-in score presets by target kind (`sprite|tile|background|effect|spritesheet`),
308
+ - added optional `scoringProfiles[]` manifest contract with global and per-kind score-weight overrides,
309
+ - resolved target scoring weights via `targets[].scoringProfile` (or `evaluationProfileId` fallback) with explicit validation for unknown profiles.
310
+ - Add model capability introspection contract and endpoint for provider feature gating (pixel/high-res/references):
311
+ - added `GET /v1/contracts/provider-capabilities` and `GET /v1/providers/capabilities` for wrapper capability discovery and runtime feature gating,
312
+ - added provider/model query support for introspection (`provider`, `model`) with model-aware Nano edit capability differentiation,
313
+ - added explicit directive-gating capability signals (`pixel`, `highRes`, `references`) with support modes and diagnostics.
314
+ - Add template-driven pack orchestration layer with dependency-aware style-reference chaining:
315
+ - added manifest `targetTemplates[]` with target-level `templateId`, `dependsOn`, and `styleReferenceFrom`,
316
+ - added deterministic dependency-aware generate staging with unresolved/cycle validation,
317
+ - added per-job provenance `styleReferenceLineage` records for effective style-reference inputs.
318
+ - Add consistency-group drift/outlier scoring with configurable warning and ranking influence controls:
319
+ - added CLIP/LPIPS sibling-group outlier scoring with aggregate warning/outlier summaries in eval/review artifacts,
320
+ - added `evaluationProfiles[].consistencyGroupScoring` controls (`warningThreshold`, `penaltyThreshold`, `penaltyWeight`) for deterministic ranking influence,
321
+ - added selection-lock traceability fields (`evalFinalScore`, `groupSignalTrace`) so group-signal ranking deltas remain auditable.
322
+ - Add bounded agentic auto-correction retries for VLM and edge-boundary hard-fails:
323
+ - added optional `generationPolicy.agenticRetry` controls (`enabled`, `maxRetries`) to drive bounded edit-first self-healing loops,
324
+ - auto-generated critique instructions from hard-fail signals (`vlm_gate_below_threshold`, alpha-boundary violations) and retried from selected candidate outputs,
325
+ - persisted attempt-level trigger/delta summaries in run provenance via `agenticRetry` records.
326
+ - Complete coarse-to-fine benchmark evidence and cost analysis tooling:
327
+ - added stage-weighted run-cost benchmarking utilities and a comparison script (`npm run benchmark:coarse-to-fine`),
328
+ - added integration benchmark coverage showing reduced cost-per-approved at equivalent acceptance for coarse-to-fine promotion flows,
329
+ - retained promotion/discarded candidate provenance records as benchmark input artifacts.
330
+ - Add deterministic topology and animation-drift QA follow-ups:
331
+ - added wrap-grid topology validation modes (`self`, `one-to-one`, `many-to-many`) with explicit mismatch-threshold diagnostics separate from seam scoring,
332
+ - added spritesheet continuity hard-gates for identity drift and pose drift with per-animation metrics (`maxIdentityDrift`, `maxPoseDrift`) in acceptance/eval artifacts.
333
+ - Add machine-checkable style-bible visual policy checks:
334
+ - added manifest style-policy contract (`styleKits[].visualPolicy`) for line contrast, shading complexity, and UI rectilinearity constraints,
335
+ - enforced deterministic acceptance/eval diagnostics with explicit metrics and hard rejection codes (`style_policy_*`).
336
+ - Add layered export + matting-assisted alpha QA pipeline:
337
+ - added first-class layered artifacts (`__layer_color`, `__layer_matte`) for sprite/UI/VFX workflows with deterministic export contracts,
338
+ - added matting-derived transparency diagnostics (`maskCoverage`, `semiTransparencyRatio`, `maskConsistency`, `hiddenRgbLeak`) with optional hard-gate thresholds in acceptance/eval artifacts.
339
+
340
+ Remaining queued items:
341
+
342
+ #### 2D Investigation Follow-ups (Visual QA + Policy)
343
+
344
+ - Add machine-checkable visual style-bible policy contracts:
345
+ - extend beyond current baseline thresholds with richer style-assertion primitives when needed (for example, per-kind policy profiles).
346
+ - Add sprite identity + pose adherence QA modules:
347
+ - extend beyond current drift thresholds with optional target-specific pose directives when prompts require strict choreography.
348
+
349
+ ## Future (After Upcoming)
350
+
351
+ These are high-impact but should follow once `0.2.0` and `0.3.0` stabilize.
352
+
353
+ ### `0.4.0` Future (Local Production Path / `Anvilheart`)
354
+
355
+ - Implement first-class ControlNet execution for local diffusion:
356
+ - map `targets[].controlImage` + `targets[].controlMode` to provider payloads for Canny/Depth/OpenPose.
357
+ - Add dual-guidance local conditioning workflows:
358
+ - combine structural ControlNet guidance with optional detail/edge guidance priors for boundary fidelity refinement.
359
+ - Implement IP-Adapter image-prompt integration for local diffusion:
360
+ - pass `styleKits[].styleReferenceImages` separately from structural ControlNet guide inputs.
361
+ - Implement two-pass Hires Fix workflows behind explicit high-quality policy flags:
362
+ - low-res generation -> latent upscale -> high-res denoise pass.
363
+ - Implement LoRA loading from style-kit manifest configuration:
364
+ - support `styleKits[].loraPath` and `styleKits[].loraStrength`,
365
+ - capture model/control/LoRA provenance per output for reproducibility.
366
+ - Publish local provider payload parity docs for ComfyUI/A1111-compatible mappings:
367
+ - control, style references, hires-fix, and LoRA field mapping expectations.
368
+
369
+ ### `0.5.0` Future (Team Scale and Integrations / `Runesmelter`)
370
+
371
+ - Add CI fixture packs, regression dashboards, and thresholded quality gates.
372
+ - Add quality/latency operating profiles:
373
+ - publish `fast`, `balanced`, and `high-fidelity` presets with explicit candidate-count, refinement-pass, and adapter-eval behavior.
374
+ - Add golden-set quality harness and nightly regression gates:
375
+ - maintain curated target/reference packs and detect score-quality regressions across providers/models,
376
+ - add calibration loop outputs for score-weight tuning over time.
377
+ - Add provider budget/rate telemetry and draft-vs-final operational controls.
378
+ - Harden release-grade CI and supply-chain posture:
379
+ - publish coverage reports with thresholds for critical pipeline modules,
380
+ - pin workflow action revisions and emit SBOM + build provenance artifacts,
381
+ - add policy checks for insecure soft-adapter execution configuration.
382
+ - Expand runtime export presets and metadata for Unity/Godot integration.
383
+
384
+ #### 2D Investigation Follow-ups (Runtime/Export)
385
+
386
+ - Add first-class autotile runtime contract exports:
387
+ - emit 4-neighbor bitmask metadata (`4 bits -> 16-entry LUT`) for deterministic tile-index selection,
388
+ - support tileset variant blocks (e.g., separate `4x4` banks for water-edge vs cliff-edge families) with runtime selection hints.
389
+ - define canonical neighbor bit ordering, map-boundary behavior, and deterministic variant-picking rules so runtime implementations stay consistent across engines.
390
+ - Add vector/layered asset interoperability gates:
391
+ - add first-class SVG target support (generation, validation, review, and package/export stages),
392
+ - validate SVG structure/layer hygiene before packaging and publish deterministic export conventions,
393
+ - define layered-artifact contracts for downstream toolchains that expect editable layered inputs.
394
+ - Add asset-license provenance release gates:
395
+ - require machine-readable provenance metadata for visual datasets, reference assets, and model families used per target,
396
+ - fail packaging/release checks when license status is unresolved or violates configured policy.
397
+ - Add atlas-capacity planning and multipack spillover safeguards:
398
+ - compute safe atlas frame capacity with padding/extrusion/mip constraints before pack build,
399
+ - warn/fail on atlas overcommit and auto-spill frames to additional atlas pages when enabled.
400
+ - Add visual review workspace improvements:
401
+ - thumbnail-first candidate browsing with side-by-side comparison and provenance/decision linkage.
402
+
403
+ ### `1.0.0` Future (General Availability / `Mythic Foundry`)
404
+
405
+ - Publish compatibility matrix, migration policy, and deprecation process.
406
+ - Formalize adapter/plugin compatibility contracts:
407
+ - versioned adapter I/O schema, compatibility guarantees, and deprecation path.
408
+ - Publish security/secrets/compliance and licensing documentation.
409
+ - Publish release operations playbook (release checklist, support runbook, onboarding path).
410
+ - Enforce roadmap delivery traceability:
411
+ - require each release item to map to issue(s), PR(s), tests, and KPI deltas.
@@ -0,0 +1,244 @@
1
+ # LootForge Prioritized Issue Backlog
2
+
3
+ Last updated: 2026-03-06
4
+
5
+ This list translates `docs/ROADMAP.md` into issue-ready work items with explicit acceptance criteria.
6
+
7
+ Recent completion (2026-02-20):
8
+
9
+ - Implemented stage-artifact contract schema coverage and fixture-pack compatibility checks.
10
+ - Implemented provider runtime contract enforcement across OpenAI/Nano/Local with capability parity checks.
11
+ - Implemented automated VLM candidate grading gates with score/threshold/reason traceability in eval/review.
12
+ - Implemented edge-aware alpha-boundary scoring and configurable hard-gate rejection thresholds.
13
+ - Implemented pack-level acceptance invariants, spritesheet continuity checks, and optional texture-memory budget gates.
14
+ - Implemented Manifest Policy Coverage Gate:
15
+ - added machine-checkable policy index (`docs/MANIFEST_POLICY_COVERAGE.md`),
16
+ - added release gate script (`npm run check:manifest-policy`) that enforces `implemented|reserved` status and test evidence for implemented fields,
17
+ - added CI report artifact output (`coverage/manifest-policy-coverage.json`).
18
+ - Implemented per-kind scoring presets and manifest-level scoring profile overrides:
19
+ - added deterministic default score-weight presets by target kind,
20
+ - added optional manifest `scoringProfiles[]` contract with per-kind overrides,
21
+ - validated `targets[].scoringProfile` references and normalized scoring resolution into planned targets.
22
+ - Implemented model capability introspection contract and endpoint for provider feature gating:
23
+ - added service discovery contract endpoint (`GET /v1/contracts/provider-capabilities`),
24
+ - added runtime introspection endpoint (`GET /v1/providers/capabilities`) with provider/model query support,
25
+ - exposed explicit provider-gating signals for `pixel`, `highRes`, and `references`.
26
+
27
+ Recent completion (2026-02-21):
28
+
29
+ - Implemented template-driven pack orchestration and dependency-aware style-reference chaining:
30
+ - added manifest `targetTemplates[]` contract with target-level `templateId`, `dependsOn`, and `styleReferenceFrom`,
31
+ - enforced deterministic dependency-aware execution stages with unresolved/cycle validation,
32
+ - recorded effective style-reference lineage in run provenance for each generated target.
33
+ - Implemented consistency-group drift/outlier scoring with deterministic ranking influence:
34
+ - added group-level CLIP/LPIPS outlier scoring across sibling targets with robust median/MAD-style normalization,
35
+ - emitted per-target diagnostics (`score`, `penalty`, reasons, metric deltas) in eval/review artifacts,
36
+ - applied deterministic outlier penalties to final ranking scores and emitted aggregate group summaries.
37
+ - Implemented aggregate consistency-group warning controls and selection traceability:
38
+ - added `evaluationProfiles[].consistencyGroupScoring` controls for warning threshold, penalty threshold, and penalty weight,
39
+ - emitted aggregate group warning/outlier summaries (counts, warned/outlier target ids, max score, total penalty) in eval/review artifacts,
40
+ - added selection-lock trace fields (`evalFinalScore`, `groupSignalTrace`) so group-level ranking effects are auditable in downstream decisions.
41
+ - Implemented bounded agentic auto-correction retries for VLM/edge hard-fails:
42
+ - added optional `generationPolicy.agenticRetry` controls (`enabled`, `maxRetries`) to trigger edit-first self-healing loops from failed candidates,
43
+ - generated critique instructions directly from VLM and edge-boundary hard-fail reasons and ran bounded edit-first regeneration attempts,
44
+ - recorded attempt-level before/after deltas and trigger reasons in provenance (`agenticRetry`) for deterministic auditability.
45
+ - Implemented coarse-to-fine benchmark evidence tooling:
46
+ - added stage-weighted cost model utilities for run-level cost-per-approved analysis,
47
+ - added integration benchmark coverage proving reduced cost-per-approved at equivalent acceptance using coarse-to-fine promotion,
48
+ - added `npm run benchmark:coarse-to-fine` script to compare baseline/coarse provenance runs.
49
+ - Implemented additional 2D visual QA gates for topology and animation drift:
50
+ - added wrap-grid topology modes (`self`, `one-to-one`, `many-to-many`) with explicit mismatch thresholds and eval diagnostics independent from seam metrics,
51
+ - added spritesheet continuity hard-gates for identity drift and pose drift (`spritesheetIdentityDriftMax`, `spritesheetPoseDriftMax`) with deterministic pack-invariant metrics and violations.
52
+ - Implemented machine-checkable style-bible visual policy checks:
53
+ - added manifest-level style constraints (`styleKits[].visualPolicy`) for line contrast, shading bands, and UI rectilinearity,
54
+ - enforced deterministic acceptance/eval diagnostics with explicit per-target metrics and rejection codes.
55
+ - Implemented layered export and matting-assisted alpha QA coverage:
56
+ - added deterministic layered variant exports (`__layer_color`, `__layer_matte`) with first-class manifest toggles,
57
+ - added matting diagnostics (`maskCoverage`, `semiTransparencyRatio`, `maskConsistency`, `hiddenRgbLeak`) and optional hard-gate thresholds in acceptance/eval artifacts.
58
+
59
+ ## P0 (Immediate: `0.3.0`)
60
+
61
+ ### 5) 2D Visual QA + Policy Follow-up Pack
62
+
63
+ - **Release target:** `0.3.0` stretch / `0.4.0` bridge
64
+ - **Why now:** Remaining visual QA gaps are still a source of production-quality drift.
65
+ - **Acceptance criteria:**
66
+ - Visual style-bible policy checks are machine-checkable (line/shading/UI geometry) with explicit validate/eval diagnostics. (implemented 2026-02-21)
67
+ - Sprite identity and optional pose adherence checks can score/reject animation-frame drift. (implemented 2026-02-21)
68
+ - Tile QA validates topology rules (self/one-to-one/many-to-many adjacency) separately from seam metrics. (implemented 2026-02-21)
69
+ - Layered export and matting-assisted alpha QA are covered by deterministic artifact contracts and eval diagnostics. (implemented 2026-02-21)
70
+
71
+ ## P1 (Next: `0.4.0`)
72
+
73
+ ### 7) Directed Synthesis Schema + Capability Gating
74
+
75
+ - **Release target:** `0.3.0` to `0.4.0` bridge
76
+ - **Why now:** Unlock deterministic control without breaking non-local providers.
77
+ - **Acceptance criteria:**
78
+ - Manifest supports `targets[].controlImage`, `targets[].controlMode`, `styleKits[].styleReferenceImages`, `styleKits[].loraPath`, `styleKits[].loraStrength`, and high-quality flags.
79
+ - Validation enforces path safety and enum/range constraints.
80
+ - Non-supporting providers emit explicit unsupported-feature warnings/errors.
81
+
82
+ ### 8) Local ControlNet + Dual Guidance Integration
83
+
84
+ - **Release target:** `0.4.0`
85
+ - **Why now:** Structural fidelity and edge/detail control are key differentiators.
86
+ - **Acceptance criteria:**
87
+ - Local provider maps control fields to payload for Canny/Depth/OpenPose.
88
+ - Optional detail/edge guidance path can run alongside structural guidance.
89
+ - Provenance captures full control stack used per output.
90
+
91
+ ### 9) IP-Adapter + LoRA Local Workflow
92
+
93
+ - **Release target:** `0.4.0`
94
+ - **Why now:** Style consistency across large packs requires stronger conditioning than prompt text.
95
+ - **Acceptance criteria:**
96
+ - Style reference images are sent as IP-Adapter conditioning separate from ControlNet controls.
97
+ - LoRA path/strength is included in local request payload and validation.
98
+ - Provenance captures model, IP-Adapter references, LoRA identity, and strength.
99
+
100
+ ### 10) 3D-to-2D Projection & Automating ControlNets
101
+
102
+ - **Release target:** `0.4.0`
103
+ - **Why now:** Drawing or gathering boundary maps manually for ControlNet scales poorly.
104
+ - **Acceptance criteria:**
105
+ - Node ingest layer handles `.obj` or voxel primitives and headless rendering scripts.
106
+ - Configurable isometric 8-way camera array directly outputs precise Depth/Normal rasterized maps to the pipeline's ControlNet payload queue.
107
+ - Target output perfectly preserves the 3D footprint constraint.
108
+
109
+ ### 11) Semantic Animation QA + Gait Scoring
110
+
111
+ - **Release target:** `0.4.0`
112
+ - **Why now:** Current spritesheet continuity gates can reject obvious drift, but they still cannot guarantee that a strip reads as a real walk cycle with the intended lead leg, facing, and forward lean.
113
+ - **Acceptance criteria:**
114
+ - `animationName: "walk"` targets are evaluated with semantic gait scoring that distinguishes believable stride phases from idle leg lifts.
115
+ - Facing semantics are judged against declared direction using subject-aware analysis rather than simple mirror heuristics alone.
116
+ - Eval/review artifacts expose semantic animation diagnostics clearly enough to explain why a walk strip passed or failed.
117
+
118
+ ### 12) Animation Multi-Attempt Selection + Canonical Fallback
119
+
120
+ - **Release target:** `0.4.0`
121
+ - **Why now:** Prompt tuning alone is still too stochastic for release-grade showcase capture, even with multiple attempts.
122
+ - **Acceptance criteria:**
123
+ - Capture orchestration can try multiple animation-strip attempts and rank them by semantic gait, facing, and motion quality.
124
+ - Release showcase capture can deterministically keep a previous known-good canonical strip or locked exemplar when no fresh attempt passes.
125
+ - Provenance and release evidence record attempt ranking, reject reasons, and the final canonical-selection decision.
126
+
127
+ ## P2 (Scale-up: `0.5.0` and `1.0.0`)
128
+
129
+ ### 13) Quality/Latency Operating Profiles
130
+
131
+ - **Release target:** `0.5.0`
132
+ - **Why now:** Teams need predictable throughput/quality tradeoffs.
133
+ - **Acceptance criteria:**
134
+ - Presets `fast`, `balanced`, and `high-fidelity` are exposed in CLI/manifest.
135
+ - Each preset defines candidate count, adapter pass behavior, and refinement policy.
136
+ - Preset behavior is documented and covered by integration tests.
137
+
138
+ ### 14) Golden-Set Regression Harness
139
+
140
+ - **Release target:** `0.5.0`
141
+ - **Why now:** Prevent silent quality regressions over time.
142
+ - **Acceptance criteria:**
143
+ - Curated golden targets and reference expectations are versioned in repo.
144
+ - Nightly job computes score deltas and fails on configured regressions.
145
+ - Output includes calibration data for score weight tuning.
146
+
147
+ ### 15) Release-Grade CI and Supply-Chain Hardening
148
+
149
+ - **Release target:** `0.5.0`
150
+ - **Why now:** Public adoption requires reproducibility and security evidence.
151
+ - **Acceptance criteria:**
152
+ - Coverage thresholds enforced on critical pipeline modules.
153
+ - Workflow actions pinned and audited.
154
+ - SBOM and build provenance artifacts produced for release builds.
155
+ - Adapter security policy checks run in CI.
156
+
157
+ ### 16) Visual Review Workspace
158
+
159
+ - **Release target:** `0.5.0`
160
+ - **Why now:** Human-in-loop review is a bottleneck for pack production.
161
+ - **Acceptance criteria:**
162
+ - Review UI supports thumbnail grids, side-by-side candidate comparison, and quick approve/reject flows.
163
+ - Decisions link back to provenance, metrics, and VLM/adapters rationale.
164
+ - Bulk actions exist for approve-passing and reject-outlier workflows.
165
+
166
+ ### 17) Atlas Capacity Planning and Multipack Spillover
167
+
168
+ - **Release target:** `0.5.0`
169
+ - **Why now:** Prevent runtime sampling artifacts and failed pack builds from overfilled atlases.
170
+ - **Acceptance criteria:**
171
+ - Atlas planner computes safe frame capacity using target size, padding/extrusion, and mip requirements.
172
+ - Pre-build validation warns or fails on frame-count overcommit for each atlas group.
173
+ - Optional auto-spill mode distributes overflow frames into deterministic additional atlas pages.
174
+ - Packaging outputs include atlas-page mapping metadata for spilled frames.
175
+
176
+ ### 18) Adapter/Plugin Compatibility Contract
177
+
178
+ - **Release target:** `1.0.0`
179
+ - **Why now:** Ensure long-term adapter ecosystem stability.
180
+ - **Acceptance criteria:**
181
+ - Versioned adapter I/O schema and compatibility guarantees are published.
182
+ - Deprecation policy includes grace periods and migration guidance.
183
+ - Conformance tests validate adapter implementations against contract versions.
184
+
185
+ ### 19) First-Class Audio Generation Pipeline
186
+
187
+ - **Release target:** `0.5.0`
188
+ - **Why now:** Games need unified aesthetics spanning both visual and auditory spheres.
189
+ - **Acceptance criteria:**
190
+ - Audio Target specifications support text prompts, timing instructions, and stem definitions.
191
+ - Pipeline connects to audio generation logic (SFX parameterized models + loop models).
192
+ - Implements ITU-R BS.1770 / EBU R128 loudness and true peak compliance QA.
193
+ - Automated loop seam Click/Warble anomaly detectors.
194
+ - Introduce LLM-driven generation to automatically create structured audio manifests.
195
+
196
+ ### 20) Generative Dependency DAG ("Asset Lineage")
197
+
198
+ - **Release target:** `0.5.0`
199
+ - **Why now:** True collection-level coherence requires downstream assets to inherit their predecessors perfectly.
200
+ - **Acceptance criteria:**
201
+ - Support execution DAG where target dependencies physically block child generators until the parent target is "Locked/Approved".
202
+ - Auto-injection of Parent Lock artifacts into Child inference (e.g., as IP-Adapter styling).
203
+
204
+ ### 21) Native Engine Editor Plugins
205
+
206
+ - **Release target:** `0.5.0`
207
+ - **Why now:** Reduce workflow friction between generating an asset and verifying it physically fits a map scene.
208
+ - **Acceptance criteria:**
209
+ - Godot and Unity plugins that wrap `/v1/` `serve` module endpoints.
210
+ - Developers can type prompts per-GameObject and directly fetch/auto-apply materials/sprites to the scene graph.
211
+
212
+ ### 22) Native SVG & UI Generation
213
+
214
+ - **Release target:** `0.5.0`
215
+ - **Why now:** Real UI components require cleanly separated vector layers, not just edge-traced bitmaps.
216
+ - **Acceptance criteria:**
217
+ - Diffusion-driven SVG tools (e.g., LayerTracer) explicitly emit manipulatable, grouped path files.
218
+ - Implementation of style-reference set distillation rules for icon packs mapping.
219
+
220
+ ### 23) The Multimodal Style Bible
221
+
222
+ - **Release target:** `1.0.0`
223
+ - **Why now:** Massive projects require absolute guardrails guaranteeing consistency across teams.
224
+ - **Acceptance criteria:**
225
+ - `styleKits` expands schema validating visual layout, palette rules, and global acoustic footprints.
226
+ - Validation physically halts runs whose generated artifacts violate the style bible assertions.
227
+
228
+ ### 24) Native 3D Asset Generation (`.gltf` / Three.js)
229
+
230
+ - **Release target:** `Post-1.0`
231
+ - **Why now:** Broaden the LootForge paradigm from purely 2D/Audio space into the lightweight web 3D ecosystem.
232
+ - **Acceptance criteria:**
233
+ - Supports structural definitions and LLM parsing to synthesize 3D models directly from prompt boundaries.
234
+ - Pipeline explicitly emits standard web-ready formats (e.g. `.gltf` or `.glb`).
235
+ - Validation metrics actively enforce polygon limits, detect broken UV layouts, and ensure standardized PBR materials.
236
+
237
+ ### 25) Roadmap-to-Delivery Traceability Policy
238
+
239
+ - **Release target:** `1.0.0`
240
+ - **Why now:** Keep roadmap trustworthy as scope expands.
241
+ - **Acceptance criteria:**
242
+ - Every roadmap item maps to issue(s), PR(s), test IDs, and KPI deltas.
243
+ - Release notes include traceability matrix for completed items.
244
+ - CI validates that merged milestone PRs reference a tracked roadmap issue.