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 @@
1
+ {"version":3,"file":"scenarioRenderer.js","sourceRoot":"","sources":["../../src/showcase/scenarioRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ # Eval Adapter Contract
2
+
3
+ LootForge can run optional soft adapters during `lootforge eval` for CLIP/LPIPS/SSIM style scoring.
4
+
5
+ ## Enable + Configure
6
+
7
+ Enable adapters:
8
+
9
+ - `LOOTFORGE_ENABLE_CLIP_ADAPTER=1`
10
+ - `LOOTFORGE_ENABLE_LPIPS_ADAPTER=1`
11
+ - `LOOTFORGE_ENABLE_SSIM_ADAPTER=1`
12
+
13
+ Configure each enabled adapter with one of:
14
+
15
+ - `LOOTFORGE_<NAME>_ADAPTER_CMD` command (reads JSON from stdin, writes JSON to stdout)
16
+ - `LOOTFORGE_<NAME>_ADAPTER_URL` HTTP endpoint (POST JSON, return JSON)
17
+
18
+ Timeouts:
19
+
20
+ - Per-adapter: `LOOTFORGE_<NAME>_ADAPTER_TIMEOUT_MS`
21
+ - Global fallback: `LOOTFORGE_ADAPTER_TIMEOUT_MS`
22
+
23
+ ## Request Payload
24
+
25
+ LootForge sends one request per target image per enabled adapter.
26
+
27
+ ```json
28
+ {
29
+ "adapter": "clip",
30
+ "imagePath": "/abs/path/to/processed/image.png",
31
+ "prompt": "Use case: ...\nPrimary request: ...",
32
+ "referenceImages": ["/abs/path/to/reference.png"],
33
+ "target": {
34
+ "id": "hero",
35
+ "kind": "sprite",
36
+ "out": "hero.png",
37
+ "styleKitId": "default-topdown",
38
+ "consistencyGroup": "heroes",
39
+ "evaluationProfileId": "default-sprite-quality"
40
+ }
41
+ }
42
+ ```
43
+
44
+ Notes:
45
+
46
+ - `adapter` is one of `clip`, `lpips`, `ssim`.
47
+ - `referenceImages` is derived from non-mask `edit.inputs`.
48
+ - `imagePath` and `referenceImages` are absolute filesystem paths.
49
+ - `referenceImages` paths must remain inside the active `--out` root; unsafe paths fail eval.
50
+
51
+ ## Response Contract
52
+
53
+ Adapters must return JSON object with at least one numeric metric or numeric `score`.
54
+
55
+ Accepted forms:
56
+
57
+ ```json
58
+ { "metrics": { "alignment": 0.82 }, "score": 5 }
59
+ ```
60
+
61
+ ```json
62
+ { "alignment": 0.82, "score": 5 }
63
+ ```
64
+
65
+ Rules:
66
+
67
+ - Numeric fields in `metrics` are recorded under `adapterMetrics`.
68
+ - `score` is optional and contributes to additive soft score using target adapter weights.
69
+ - Non-numeric fields are ignored.
70
+ - Empty/non-JSON/error responses are treated as adapter failure and captured in warnings.
71
+
72
+ ## Eval Report Health
73
+
74
+ `checks/eval-report.json` includes adapter health summary:
75
+
76
+ - `adapterHealth.configured`: enabled adapters with command/URL configured.
77
+ - `adapterHealth.active`: adapters with at least one successful response.
78
+ - `adapterHealth.failed`: adapters that failed at least once or were enabled but unconfigured.
79
+ - `adapterHealth.adapters[]`: per-adapter mode (`command`/`http`/`unconfigured`), target attempt/success/fail counters, and warnings.
80
+
81
+ ## Runnable Examples
82
+
83
+ - Command/stdio adapter: `examples/adapters/stdin-adapter-example.js`
84
+ - HTTP adapter: `examples/adapters/http-adapter-example.js`
85
+
86
+ ## VLM Candidate Gate Contract
87
+
88
+ LootForge can run an optional VLM hard gate during candidate selection when `targets[].generationPolicy.vlmGate` is configured.
89
+
90
+ ### Configure Transport
91
+
92
+ Set one transport (command is preferred when both are set):
93
+
94
+ - `LOOTFORGE_VLM_GATE_CMD`
95
+ - `LOOTFORGE_VLM_GATE_URL`
96
+
97
+ Optional timeout override:
98
+
99
+ - `LOOTFORGE_VLM_GATE_TIMEOUT_MS`
100
+
101
+ ### Request Payload
102
+
103
+ LootForge sends one request per candidate image:
104
+
105
+ ```json
106
+ {
107
+ "imagePath": "/abs/path/to/candidate.png",
108
+ "prompt": "Use case: ...\nPrimary request: ...",
109
+ "threshold": 4,
110
+ "maxScore": 5,
111
+ "rubric": "Score silhouette clarity and framing quality from 0 to 5.",
112
+ "target": {
113
+ "id": "hero",
114
+ "kind": "sprite",
115
+ "out": "hero.png",
116
+ "styleKitId": "default-topdown",
117
+ "consistencyGroup": "heroes",
118
+ "evaluationProfileId": "default-sprite-quality"
119
+ }
120
+ }
121
+ ```
122
+
123
+ Notes:
124
+
125
+ - `imagePath` is absolute and must resolve inside the active `--out` root.
126
+ - `threshold` defaults to `4` (range `0..5`) when omitted in manifest.
127
+ - `rubric` is optional and comes from `generationPolicy.vlmGate.rubric`.
128
+
129
+ ### Response Contract
130
+
131
+ VLM gate must return JSON with numeric `score` (`0..5`) and optional `reason`:
132
+
133
+ ```json
134
+ { "score": 4.4, "reason": "clear silhouette and framing" }
135
+ ```
136
+
137
+ Rules:
138
+
139
+ - Candidates below threshold are rejected before final candidate selection.
140
+ - Rejection reason is recorded in provenance/eval/review artifacts.
141
+ - Invalid/empty responses fail generation for that target (no silent fallback).
@@ -0,0 +1,86 @@
1
+ # Engine Targeting Audit
2
+
3
+ Last updated: 2026-02-17
4
+
5
+ ## Question
6
+
7
+ Are we targeting the right framework(s), and is support for Unity + Pixi + Phaser mostly the same work?
8
+
9
+ ## Short Answer
10
+
11
+ - Phaser-only is too narrow for the current market.
12
+ - The pipeline core is highly reusable, but runtime integration is not uniformly "90% the same" across engines.
13
+ - A practical strategy is:
14
+ - keep Phaser as baseline,
15
+ - add Pixi as near-term parity (high overlap),
16
+ - add Unity via import recipe + editor script path (lower overlap but high market reach).
17
+
18
+ ## Market Signals (Current)
19
+
20
+ - GDC 2026 survey reports Unreal as most-used engine (`42%`) and Unity second (`30%`). [1]
21
+ - Same survey reports web browser platform usage rose from `16%` (2025) to `19%` (2026). [1]
22
+ - JavaScript ecosystem demand remains active:
23
+ - `pixi.js` weekly downloads: `408,138` (`2026-02-09` to `2026-02-15`). [2]
24
+ - `phaser` weekly downloads: `106,341` (same week). [3]
25
+ - `@pixi/assets` weekly downloads: `103,096` (same week). [4]
26
+
27
+ ## Technical Similarity: What Is Actually Shared
28
+
29
+ Shared across Phaser, Pixi, Unity:
30
+
31
+ - generation, post-processing, acceptance checks, eval/ranking, selection locks, provenance.
32
+ - atlas/image artifact creation.
33
+ - pack-level metadata and catalog semantics.
34
+
35
+ Mostly shared between Phaser and Pixi:
36
+
37
+ - both load JSON atlas/image assets in straightforward web runtime pipelines.
38
+ - Phaser loader supports atlas JSON + texture URLs. [5]
39
+ - Pixi Assets supports manifest bundles and Spritesheet loading from JSON. [6]
40
+ - TexturePacker supports both Phaser JSON and Pixi JSON exports. [7]
41
+
42
+ Unity-specific deltas (less shared):
43
+
44
+ - Unity runtime consumption is usually mediated by import settings/editor workflows, not direct web-loader JSON contracts.
45
+ - Texture import configuration (sprite mode, pivots, mesh type) is an editor-side responsibility. [8]
46
+ - TexturePacker documents Unity export as a distinct format (`Unity – Texture2D.sprite`) and calls out plugin usage in the Unity pipeline. [7]
47
+
48
+ ## Similarity Estimate by Layer
49
+
50
+ - `~90% shared`: generation/eval/pipeline core.
51
+ - `~70-85% shared`: Phaser vs Pixi runtime manifest/export logic.
52
+ - `~50-65% shared`: Phaser/Pixi vs Unity runtime integration (due editor/import contract differences).
53
+
54
+ ## Gaps Before Broad Engine Coverage
55
+
56
+ - Runtime exports were previously Phaser-only in package output.
57
+ - No explicit runtime target abstraction in packaging.
58
+ - Unity-oriented export metadata was not first-class.
59
+ - Anchor metadata from manifest runtime spec was not preserved into planned targets.
60
+
61
+ ## What This Branch Adds
62
+
63
+ - Runtime manifest transpiler layer in packaging.
64
+ - `--runtimes` support on `lootforge package` (`phaser` baseline + optional `pixi`, `unity`).
65
+ - New runtime artifacts:
66
+ - `manifest/phaser.json` (baseline),
67
+ - `manifest/pixi.json` (when requested),
68
+ - `manifest/unity-import.json` (when requested).
69
+ - Anchor metadata (`runtimeSpec.anchorX/anchorY`) now preserved through normalization and available to runtime exports.
70
+
71
+ ## Recommended Next Steps
72
+
73
+ 1. Ship a Unity Editor importer script that consumes `unity-import.json` and applies pivots/import settings automatically.
74
+ 2. Add Godot runtime export (`godot-import.json`) to cover another high-growth OSS engine lane.
75
+ 3. Add runtime adapter conformance tests that validate each manifest against a sample consumer loader/importer.
76
+
77
+ ## Sources
78
+
79
+ [1] GDC 2026 State of the Game Industry key findings: https://gdconf.com/state-game-industry/
80
+ [2] npm downloads API (`pixi.js`, last-week): https://api.npmjs.org/downloads/point/last-week/pixi.js
81
+ [3] npm downloads API (`phaser`, last-week): https://api.npmjs.org/downloads/point/last-week/phaser
82
+ [4] npm downloads API (`@pixi/assets`, last-week): https://api.npmjs.org/downloads/point/last-week/@pixi/assets
83
+ [5] Phaser loader docs (`load.atlas`): https://docs.phaser.io/phaser/concepts/loader#texture-atlas
84
+ [6] Pixi Assets + Spritesheet docs: https://pixijs.com/8.x/guides/components/assets and https://pixijs.download/dev/docs/assets.Spritesheet.html
85
+ [7] TexturePacker framework export formats (Phaser/Pixi/Unity): https://www.codeandweb.com/texturepacker/documentation/free-split
86
+ [8] Unity Texture Importer manual: https://docs.unity3d.com/Manual/class-TextureImporter.html
@@ -0,0 +1,130 @@
1
+ # Manifest Policy Coverage Index
2
+
3
+ This index is machine-checked by `npm run check:manifest-policy`.
4
+
5
+ Rules enforced by the gate:
6
+
7
+ - Every documented policy field must be marked as `implemented` or `reserved`.
8
+ - `implemented` fields must cite implementation paths and test paths.
9
+ - The gate fails if referenced implementation/test files do not exist.
10
+
11
+ | Field | Status | Implementation | Tests | Notes |
12
+ | ---------------------------------------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------- |
13
+ | `providers.openai.endpoint` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | runtime endpoint override |
14
+ | `providers.nano.endpoint` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | runtime endpoint override |
15
+ | `providers.local.endpoint` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | runtime endpoint override |
16
+ | `providers.local.baseUrl` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | alias normalization |
17
+ | `providers.openai.timeoutMs` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider timeout contract |
18
+ | `providers.nano.timeoutMs` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider timeout contract |
19
+ | `providers.local.timeoutMs` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider timeout contract |
20
+ | `providers.openai.maxRetries` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider retry contract |
21
+ | `providers.nano.maxRetries` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider retry contract |
22
+ | `providers.local.maxRetries` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider retry contract |
23
+ | `providers.openai.minDelayMs` | implemented | `src/providers/types.ts` | `test/integration/generate-safety.test.ts` | provider spacing contract |
24
+ | `providers.nano.minDelayMs` | implemented | `src/providers/types.ts` | `test/integration/generate-safety.test.ts` | provider spacing contract |
25
+ | `providers.local.minDelayMs` | implemented | `src/providers/types.ts` | `test/integration/generate-safety.test.ts` | provider spacing contract |
26
+ | `providers.openai.defaultConcurrency` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider concurrency contract |
27
+ | `providers.nano.defaultConcurrency` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider concurrency contract |
28
+ | `providers.local.defaultConcurrency` | implemented | `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | provider concurrency contract |
29
+ | `styleKits[].styleReferenceImages` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | directed style scaffolding |
30
+ | `styleKits[].loraPath` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | local lora path contract |
31
+ | `styleKits[].loraStrength` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | local lora strength contract |
32
+ | `styleKits[].visualPolicy.lineContrastMin` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | style-bible line-contrast threshold |
33
+ | `styleKits[].visualPolicy.shadingBandCountMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | style-bible shading-band threshold |
34
+ | `styleKits[].visualPolicy.uiRectilinearityMin` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | style-bible UI-geometry rectilinearity threshold |
35
+ | `targetTemplates[].dependsOn` | implemented | `src/manifest/schema.ts`, `src/manifest/semantic-validation.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | reusable dependency policy template |
36
+ | `targetTemplates[].styleReferenceFrom` | implemented | `src/manifest/schema.ts`, `src/manifest/semantic-validation.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | reusable style-reference chaining template |
37
+ | `targets[].templateId` | implemented | `src/manifest/schema.ts`, `src/manifest/semantic-validation.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | target template binding |
38
+ | `targets[].dependsOn` | implemented | `src/manifest/schema.ts`, `src/manifest/semantic-validation.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts`, `test/integration/generate-safety.test.ts` | dependency-aware execution staging |
39
+ | `targets[].styleReferenceFrom` | implemented | `src/manifest/schema.ts`, `src/manifest/semantic-validation.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts`, `test/integration/generate-safety.test.ts` | style-reference lineage chaining |
40
+ | `targets[].generationMode` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/integration/generate-safety.test.ts` | text/edit-first mode |
41
+ | `targets[].scoringProfile` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | scoring profile override |
42
+ | `targets[].tileable` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/image-acceptance.test.ts` | seam-aware behavior |
43
+ | `targets[].seamThreshold` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/image-acceptance.test.ts` | seam hard gate |
44
+ | `targets[].seamStripPx` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/image-acceptance.test.ts` | seam strip width |
45
+ | `targets[].seamHeal.enabled` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/seamHeal.ts` | `test/unit/seam-heal.test.ts` | tile seam-heal gate |
46
+ | `targets[].seamHeal.stripPx` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/seamHeal.ts` | `test/unit/seam-heal.test.ts` | tile seam-heal strip |
47
+ | `targets[].seamHeal.strength` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/seamHeal.ts` | `test/unit/seam-heal.test.ts` | tile seam-heal blend |
48
+ | `targets[].wrapGrid.columns` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | wrap-grid policy |
49
+ | `targets[].wrapGrid.rows` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | wrap-grid policy |
50
+ | `targets[].wrapGrid.seamThreshold` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | wrap-grid seam override |
51
+ | `targets[].wrapGrid.seamStripPx` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | wrap-grid seam strip override |
52
+ | `targets[].wrapGrid.topology.mode` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | wrap-grid topology mode |
53
+ | `targets[].wrapGrid.topology.maxMismatchRatio` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | wrap-grid topology threshold |
54
+ | `targets[].wrapGrid.topology.colorTolerance` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | wrap-grid topology channel tolerance |
55
+ | `targets[].palette.mode` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/manifest-validate.test.ts` | palette mode contract |
56
+ | `targets[].palette.colors` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/manifest-validate.test.ts` | exact palette colors |
57
+ | `targets[].palette.maxColors` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/manifest-validate.test.ts` | max-color policy |
58
+ | `targets[].palette.dither` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/manifest-validate.test.ts` | dither policy |
59
+ | `targets[].palette.strict` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/manifest-validate.test.ts` | strict exact palette compliance |
60
+ | `targets[].generationPolicy.size` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/manifest-validate.test.ts` | size policy normalization |
61
+ | `targets[].generationPolicy.background` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/integration/generate-safety.test.ts` | background capability gate |
62
+ | `targets[].generationPolicy.outputFormat` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/integration/generate-safety.test.ts` | output format capability gate |
63
+ | `targets[].generationPolicy.quality` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/manifest-validate.test.ts` | quality normalization |
64
+ | `targets[].generationPolicy.highQuality` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/manifest-validate.test.ts` | directed-synthesis scaffold |
65
+ | `targets[].generationPolicy.hiresFix.enabled` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/manifest-validate.test.ts` | hires-fix scaffold |
66
+ | `targets[].generationPolicy.hiresFix.upscale` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/manifest-validate.test.ts` | hires-fix scaffold |
67
+ | `targets[].generationPolicy.hiresFix.denoiseStrength` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/manifest-validate.test.ts` | hires-fix scaffold |
68
+ | `targets[].generationPolicy.draftQuality` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts` | coarse-to-fine draft pass |
69
+ | `targets[].generationPolicy.finalQuality` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts` | coarse-to-fine refine pass |
70
+ | `targets[].generationPolicy.candidates` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/integration/generate-safety.test.ts` | multi-candidate policy |
71
+ | `targets[].generationPolicy.maxRetries` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | retry policy |
72
+ | `targets[].generationPolicy.fallbackProviders` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/integration/generate-safety.test.ts` | fallback chain policy |
73
+ | `targets[].generationPolicy.providerConcurrency` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | per-target concurrency override |
74
+ | `targets[].generationPolicy.rateLimitPerMinute` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/providers/types.ts` | `test/unit/provider-runtime-config.test.ts` | per-target rate policy |
75
+ | `targets[].generationPolicy.vlmGate.threshold` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/vlmGate.ts` | `test/unit/candidate-score.test.ts` | VLM threshold gate |
76
+ | `targets[].generationPolicy.vlmGate.rubric` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/vlmGate.ts` | `test/unit/candidate-score.test.ts` | VLM rubric propagation |
77
+ | `targets[].generationPolicy.coarseToFine.enabled` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts` | coarse-to-fine enablement |
78
+ | `targets[].generationPolicy.coarseToFine.promoteTopK` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts` | coarse-to-fine promotion count |
79
+ | `targets[].generationPolicy.coarseToFine.minDraftScore` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts` | coarse-to-fine threshold |
80
+ | `targets[].generationPolicy.coarseToFine.requireDraftAcceptance` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts` | coarse-to-fine acceptance precondition |
81
+ | `targets[].generationPolicy.agenticRetry.enabled` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts`, `test/integration/generate-safety.test.ts` | agentic retry enablement |
82
+ | `targets[].generationPolicy.agenticRetry.maxRetries` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/generate.ts` | `test/unit/manifest-validate.test.ts`, `test/integration/generate-safety.test.ts` | bounded agentic retry loop |
83
+ | `targets[].postProcess.resizeTo` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | resize contract |
84
+ | `targets[].postProcess.algorithm` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | resize algorithm contract |
85
+ | `targets[].postProcess.stripMetadata` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | metadata stripping contract |
86
+ | `targets[].postProcess.pngPaletteColors` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | png palette cap |
87
+ | `targets[].postProcess.operations.smartCrop.enabled` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | smart-crop policy |
88
+ | `targets[].postProcess.operations.smartCrop.mode` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | smart-crop mode |
89
+ | `targets[].postProcess.operations.smartCrop.padding` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | smart-crop padding |
90
+ | `targets[].postProcess.operations.pixelPerfect.enabled` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | pixel-perfect policy |
91
+ | `targets[].postProcess.operations.pixelPerfect.scale` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | pixel-perfect scale |
92
+ | `targets[].postProcess.operations.emitVariants.raw` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | explicit raw variant output |
93
+ | `targets[].postProcess.operations.emitVariants.pixel` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | explicit pixel variant output |
94
+ | `targets[].postProcess.operations.emitVariants.styleRef` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts` | `test/integration/process-pipeline.test.ts` | explicit style-ref variant output |
95
+ | `targets[].postProcess.operations.emitVariants.layerColor` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts`, `src/output/catalog.ts` | `test/integration/process-pipeline.test.ts`, `test/unit/manifest-validate.test.ts` | layered export color artifact |
96
+ | `targets[].postProcess.operations.emitVariants.layerMatte` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/process.ts`, `src/output/catalog.ts` | `test/integration/process-pipeline.test.ts`, `test/unit/manifest-validate.test.ts` | layered export matte artifact |
97
+ | `targets[].controlImage` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | control image path gate |
98
+ | `targets[].controlMode` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | control mode enum gate |
99
+ | `evaluationProfiles[].hardGates.requireAlpha` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/image-acceptance.test.ts` | alpha hard gate |
100
+ | `evaluationProfiles[].hardGates.maxFileSizeKB` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/image-acceptance.test.ts` | file size hard gate |
101
+ | `evaluationProfiles[].hardGates.seamThreshold` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/image-acceptance.test.ts` | seam threshold gate |
102
+ | `evaluationProfiles[].hardGates.seamStripPx` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/image-acceptance.test.ts` | seam strip gate |
103
+ | `evaluationProfiles[].hardGates.paletteComplianceMin` | reserved | - | - | documented compatibility placeholder for upcoming gate tuning |
104
+ | `evaluationProfiles[].hardGates.alphaHaloRiskMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/candidate-score.test.ts` | edge-aware halo gate |
105
+ | `evaluationProfiles[].hardGates.alphaStrayNoiseMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/candidate-score.test.ts` | edge-aware stray noise gate |
106
+ | `evaluationProfiles[].hardGates.alphaEdgeSharpnessMin` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/candidateScore.ts` | `test/unit/candidate-score.test.ts` | edge-aware sharpness gate |
107
+ | `evaluationProfiles[].hardGates.mattingHiddenRgbLeakMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | matting hidden-RGB leak gate |
108
+ | `evaluationProfiles[].hardGates.mattingMaskConsistencyMin` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | matting mask-consistency gate |
109
+ | `evaluationProfiles[].hardGates.mattingSemiTransparencyRatioMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/imageAcceptance.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | matting semi-transparency ratio gate |
110
+ | `evaluationProfiles[].hardGates.packTextureBudgetMB` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/packInvariants.ts` | `test/unit/image-acceptance.test.ts` | pack memory hard gate |
111
+ | `evaluationProfiles[].hardGates.spritesheetSilhouetteDriftMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/packInvariants.ts` | `test/unit/image-acceptance.test.ts` | spritesheet continuity hard gate |
112
+ | `evaluationProfiles[].hardGates.spritesheetAnchorDriftMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/packInvariants.ts` | `test/unit/image-acceptance.test.ts` | spritesheet continuity hard gate |
113
+ | `evaluationProfiles[].hardGates.spritesheetIdentityDriftMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/packInvariants.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | spritesheet identity drift hard gate |
114
+ | `evaluationProfiles[].hardGates.spritesheetPoseDriftMax` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/checks/packInvariants.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/image-acceptance.test.ts` | spritesheet pose drift hard gate |
115
+ | `evaluationProfiles[].consistencyGroupScoring.warningThreshold` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/eval.ts`, `src/checks/consistencyOutliers.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/consistency-outliers.test.ts` | group warning threshold |
116
+ | `evaluationProfiles[].consistencyGroupScoring.penaltyThreshold` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/eval.ts`, `src/checks/consistencyOutliers.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/consistency-outliers.test.ts` | group ranking penalty threshold |
117
+ | `evaluationProfiles[].consistencyGroupScoring.penaltyWeight` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts`, `src/pipeline/eval.ts`, `src/checks/consistencyOutliers.ts` | `test/unit/manifest-validate.test.ts`, `test/unit/consistency-outliers.test.ts` | group ranking influence weight |
118
+ | `evaluationProfiles[].scoreWeights.readability` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | score weight profile |
119
+ | `evaluationProfiles[].scoreWeights.fileSize` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | score weight profile |
120
+ | `evaluationProfiles[].scoreWeights.consistency` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | score weight profile |
121
+ | `evaluationProfiles[].scoreWeights.clip` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | score weight profile |
122
+ | `evaluationProfiles[].scoreWeights.lpips` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | score weight profile |
123
+ | `evaluationProfiles[].scoreWeights.ssim` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | score weight profile |
124
+ | `scoringProfiles[].scoreWeights.readability` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | scoring profile override |
125
+ | `scoringProfiles[].scoreWeights.fileSize` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | scoring profile override |
126
+ | `scoringProfiles[].scoreWeights.consistency` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | scoring profile override |
127
+ | `scoringProfiles[].scoreWeights.clip` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | scoring profile override |
128
+ | `scoringProfiles[].scoreWeights.lpips` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | scoring profile override |
129
+ | `scoringProfiles[].scoreWeights.ssim` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | scoring profile override |
130
+ | `scoringProfiles[].kindScoreWeights.<kind>.<weight>` | implemented | `src/manifest/schema.ts`, `src/manifest/validate.ts` | `test/unit/manifest-validate.test.ts` | per-kind scoring profile override |
@@ -0,0 +1,117 @@
1
+ # Release Workflow
2
+
3
+ This workflow keeps release docs, changelog entries, and showcase images consistent.
4
+
5
+ ## Branch Strategy (`0.3.0`)
6
+
7
+ Use a release-train branch model so `main` stays stable until release cut:
8
+
9
+ - `main` is release-only (no feature merges while `0.3.0` is in flight).
10
+ - `release/0.3` is the integration branch for all `0.3.0` work.
11
+ - Feature branches are short-lived and branch from `release/0.3`.
12
+ - PR targets should be `release/0.3` until release readiness.
13
+
14
+ Cut `0.3.0` with:
15
+
16
+ 1. Freeze `release/0.3` and ensure release checks pass.
17
+ 2. Open a release PR from `release/0.3` to `main`.
18
+ 3. Merge the release PR and tag `v0.3.0` from `main`.
19
+
20
+ Recommended branch protection:
21
+
22
+ - `main`: block direct pushes, require PR + required checks.
23
+ - `release/0.3`: block direct pushes, require PR + required checks.
24
+
25
+ ## Codename Policy
26
+
27
+ Codenames are docs-only labels. Semver remains authoritative for npm/git releases.
28
+
29
+ Current codename map:
30
+
31
+ - `0.2.0` -> `Emberforge`
32
+ - `0.3.0` -> `Tempered Steel`
33
+ - `0.4.0` -> `Anvilheart`
34
+ - `0.5.0` -> `Runesmelter`
35
+ - `1.0.0` -> `Mythic Foundry`
36
+
37
+ If you add a new planned version, assign its codename in:
38
+
39
+ - `docs/ROADMAP.md`
40
+ - `README.md` (Status / Roadmap)
41
+ - `CHANGELOG.md` release heading
42
+
43
+ ## Changelog Update Pattern
44
+
45
+ For each release:
46
+
47
+ 1. Collect completed items from roadmap/progress and group by:
48
+ - `Added`
49
+ - `Changed`
50
+ - `Fixed`
51
+ - `Docs`
52
+ - `CI/Security`
53
+ 2. Move relevant entries from `Unreleased` to a new heading:
54
+ - `## [<semver>] - <YYYY-MM-DD> - <Codename>`
55
+ 3. Reset `Unreleased` to the empty template placeholders.
56
+ 4. Keep entries concrete and user-visible (avoid internal-only noise).
57
+
58
+ ## Showcase Image Pattern
59
+
60
+ Showcase images are versioned under `docs/showcase/<version>/`.
61
+
62
+ Release-evidence pipeline entrypoint:
63
+
64
+ - Orchestrator: `scripts/release-showcase.ts`
65
+ - Scenario renderer: `src/showcase/scenarioRenderer.ts`
66
+ - Panel renderer: `src/showcase/panelRenderer.ts`
67
+ - Evidence builder: `src/showcase/releaseEvidence.ts`
68
+ - Release config root: `examples/showcase/releases/<version>/release.json`
69
+
70
+ `release.json` defines:
71
+
72
+ - provider runs (manifest path + provider + label),
73
+ - baseline evidence path,
74
+ - scenario list and stable `panelFile` names,
75
+ - README panel order.
76
+
77
+ Recommended flow:
78
+
79
+ 1. Generate/update baseline evidence:
80
+
81
+ ```bash
82
+ npm run release:showcase -- --release 0.2.0 --mode all --providers openai-baseline
83
+ ```
84
+
85
+ 2. Capture + compare + render release evidence:
86
+
87
+ ```bash
88
+ npm run release:showcase -- --release 0.3.0 --mode all
89
+ ```
90
+
91
+ 3. Validate docs/evidence links and metadata consistency:
92
+
93
+ ```bash
94
+ npm run check:release:metadata
95
+ npm run check:release-showcase
96
+ ```
97
+
98
+ Outputs per release:
99
+
100
+ - README panels in `docs/showcase/<version>/*.png`
101
+ - evidence JSON in `docs/showcase/<version>/evidence/report.json`
102
+ - evidence summary in `docs/showcase/<version>/evidence/summary.md`
103
+
104
+ ## Release Validation Checklist
105
+
106
+ Run before cutting a release:
107
+
108
+ ```bash
109
+ npm run check:release
110
+ ```
111
+
112
+ Then verify:
113
+
114
+ - README image links exist and render.
115
+ - Current package version, README release badge/current version banner, and latest changelog release heading stay aligned.
116
+ - Showcase release config version/codename stay aligned with the README showcase section.
117
+ - `CHANGELOG.md` heading format remains consistent.