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.
- package/CHANGELOG.md +87 -0
- package/README.md +764 -0
- package/bin/lootforge.js +28 -0
- package/dist/benchmarks/coarseToFineCost.d.ts +21 -0
- package/dist/benchmarks/coarseToFineCost.js +49 -0
- package/dist/benchmarks/coarseToFineCost.js.map +1 -0
- package/dist/checks/boundaryMetrics.d.ts +12 -0
- package/dist/checks/boundaryMetrics.js +102 -0
- package/dist/checks/boundaryMetrics.js.map +1 -0
- package/dist/checks/candidateScore.d.ts +11 -0
- package/dist/checks/candidateScore.js +462 -0
- package/dist/checks/candidateScore.js.map +1 -0
- package/dist/checks/commandParser.d.ts +5 -0
- package/dist/checks/commandParser.js +99 -0
- package/dist/checks/commandParser.js.map +1 -0
- package/dist/checks/consistencyOutliers.d.ts +42 -0
- package/dist/checks/consistencyOutliers.js +156 -0
- package/dist/checks/consistencyOutliers.js.map +1 -0
- package/dist/checks/imageAcceptance.d.ts +67 -0
- package/dist/checks/imageAcceptance.js +967 -0
- package/dist/checks/imageAcceptance.js.map +1 -0
- package/dist/checks/packInvariants.d.ts +56 -0
- package/dist/checks/packInvariants.js +1064 -0
- package/dist/checks/packInvariants.js.map +1 -0
- package/dist/checks/softAdapters.d.ts +25 -0
- package/dist/checks/softAdapters.js +275 -0
- package/dist/checks/softAdapters.js.map +1 -0
- package/dist/checks/vlmGate.d.ts +8 -0
- package/dist/checks/vlmGate.js +200 -0
- package/dist/checks/vlmGate.js.map +1 -0
- package/dist/cli/commands/atlas.d.ts +5 -0
- package/dist/cli/commands/atlas.js +18 -0
- package/dist/cli/commands/atlas.js.map +1 -0
- package/dist/cli/commands/eval.d.ts +6 -0
- package/dist/cli/commands/eval.js +23 -0
- package/dist/cli/commands/eval.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +18 -0
- package/dist/cli/commands/generate.js +66 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +15 -0
- package/dist/cli/commands/init.js +146 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/package.d.ts +6 -0
- package/dist/cli/commands/package.js +27 -0
- package/dist/cli/commands/package.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +16 -0
- package/dist/cli/commands/plan.js +49 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/process.d.ts +14 -0
- package/dist/cli/commands/process.js +29 -0
- package/dist/cli/commands/process.js.map +1 -0
- package/dist/cli/commands/regenerate.d.ts +29 -0
- package/dist/cli/commands/regenerate.js +244 -0
- package/dist/cli/commands/regenerate.js.map +1 -0
- package/dist/cli/commands/review.d.ts +5 -0
- package/dist/cli/commands/review.js +18 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/select.d.ts +6 -0
- package/dist/cli/commands/select.js +21 -0
- package/dist/cli/commands/select.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +16 -0
- package/dist/cli/commands/serve.js +100 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +17 -0
- package/dist/cli/commands/validate.js +108 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +157 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parseArgs.d.ts +3 -0
- package/dist/cli/parseArgs.js +37 -0
- package/dist/cli/parseArgs.js.map +1 -0
- package/dist/contracts/stageArtifacts.d.ts +4031 -0
- package/dist/contracts/stageArtifacts.js +663 -0
- package/dist/contracts/stageArtifacts.js.map +1 -0
- package/dist/manifest/load.d.ts +3 -0
- package/dist/manifest/load.js +50 -0
- package/dist/manifest/load.js.map +1 -0
- package/dist/manifest/normalize-palette.d.ts +17 -0
- package/dist/manifest/normalize-palette.js +235 -0
- package/dist/manifest/normalize-palette.js.map +1 -0
- package/dist/manifest/normalize-policy.d.ts +48 -0
- package/dist/manifest/normalize-policy.js +239 -0
- package/dist/manifest/normalize-policy.js.map +1 -0
- package/dist/manifest/normalize-prompt.d.ts +14 -0
- package/dist/manifest/normalize-prompt.js +73 -0
- package/dist/manifest/normalize-prompt.js.map +1 -0
- package/dist/manifest/normalize-target.d.ts +49 -0
- package/dist/manifest/normalize-target.js +542 -0
- package/dist/manifest/normalize-target.js.map +1 -0
- package/dist/manifest/schema.d.ts +7570 -0
- package/dist/manifest/schema.js +373 -0
- package/dist/manifest/schema.js.map +1 -0
- package/dist/manifest/semantic-validation.d.ts +4 -0
- package/dist/manifest/semantic-validation.js +526 -0
- package/dist/manifest/semantic-validation.js.map +1 -0
- package/dist/manifest/types.d.ts +263 -0
- package/dist/manifest/types.js +2 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/manifest/validate.d.ts +12 -0
- package/dist/manifest/validate.js +221 -0
- package/dist/manifest/validate.js.map +1 -0
- package/dist/output/assetPackManifest.d.ts +19 -0
- package/dist/output/assetPackManifest.js +20 -0
- package/dist/output/assetPackManifest.js.map +1 -0
- package/dist/output/catalog.d.ts +60 -0
- package/dist/output/catalog.js +107 -0
- package/dist/output/catalog.js.map +1 -0
- package/dist/output/contactSheet.d.ts +13 -0
- package/dist/output/contactSheet.js +124 -0
- package/dist/output/contactSheet.js.map +1 -0
- package/dist/output/phaserManifest.d.ts +8 -0
- package/dist/output/phaserManifest.js +25 -0
- package/dist/output/phaserManifest.js.map +1 -0
- package/dist/output/pixiManifest.d.ts +8 -0
- package/dist/output/pixiManifest.js +37 -0
- package/dist/output/pixiManifest.js.map +1 -0
- package/dist/output/provenance.d.ts +121 -0
- package/dist/output/provenance.js +10 -0
- package/dist/output/provenance.js.map +1 -0
- package/dist/output/runtimeManifests.d.ts +21 -0
- package/dist/output/runtimeManifests.js +82 -0
- package/dist/output/runtimeManifests.js.map +1 -0
- package/dist/output/unityImportManifest.d.ts +10 -0
- package/dist/output/unityImportManifest.js +58 -0
- package/dist/output/unityImportManifest.js.map +1 -0
- package/dist/output/zip.d.ts +5 -0
- package/dist/output/zip.js +68 -0
- package/dist/output/zip.js.map +1 -0
- package/dist/pipeline/atlas.d.ts +33 -0
- package/dist/pipeline/atlas.js +286 -0
- package/dist/pipeline/atlas.js.map +1 -0
- package/dist/pipeline/eval.d.ts +104 -0
- package/dist/pipeline/eval.js +246 -0
- package/dist/pipeline/eval.js.map +1 -0
- package/dist/pipeline/generate.d.ts +44 -0
- package/dist/pipeline/generate.js +1088 -0
- package/dist/pipeline/generate.js.map +1 -0
- package/dist/pipeline/package.d.ts +18 -0
- package/dist/pipeline/package.js +218 -0
- package/dist/pipeline/package.js.map +1 -0
- package/dist/pipeline/process.d.ts +15 -0
- package/dist/pipeline/process.js +776 -0
- package/dist/pipeline/process.js.map +1 -0
- package/dist/pipeline/review.d.ts +10 -0
- package/dist/pipeline/review.js +341 -0
- package/dist/pipeline/review.js.map +1 -0
- package/dist/pipeline/seamHeal.d.ts +2 -0
- package/dist/pipeline/seamHeal.js +70 -0
- package/dist/pipeline/seamHeal.js.map +1 -0
- package/dist/pipeline/select.d.ts +39 -0
- package/dist/pipeline/select.js +79 -0
- package/dist/pipeline/select.js.map +1 -0
- package/dist/providers/job.d.ts +29 -0
- package/dist/providers/job.js +113 -0
- package/dist/providers/job.js.map +1 -0
- package/dist/providers/localDiffusion.d.ts +28 -0
- package/dist/providers/localDiffusion.js +235 -0
- package/dist/providers/localDiffusion.js.map +1 -0
- package/dist/providers/nano.d.ts +36 -0
- package/dist/providers/nano.js +402 -0
- package/dist/providers/nano.js.map +1 -0
- package/dist/providers/openai.d.ts +37 -0
- package/dist/providers/openai.js +378 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/policy.d.ts +9 -0
- package/dist/providers/policy.js +192 -0
- package/dist/providers/policy.js.map +1 -0
- package/dist/providers/prompt.d.ts +3 -0
- package/dist/providers/prompt.js +63 -0
- package/dist/providers/prompt.js.map +1 -0
- package/dist/providers/registry.d.ts +24 -0
- package/dist/providers/registry.js +92 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/runtime.d.ts +15 -0
- package/dist/providers/runtime.js +101 -0
- package/dist/providers/runtime.js.map +1 -0
- package/dist/providers/runtimeConfig.d.ts +20 -0
- package/dist/providers/runtimeConfig.js +146 -0
- package/dist/providers/runtimeConfig.js.map +1 -0
- package/dist/providers/types-core.d.ts +514 -0
- package/dist/providers/types-core.js +60 -0
- package/dist/providers/types-core.js.map +1 -0
- package/dist/providers/types.d.ts +4 -0
- package/dist/providers/types.js +5 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/service/generationRequest.d.ts +58 -0
- package/dist/service/generationRequest.js +203 -0
- package/dist/service/generationRequest.js.map +1 -0
- package/dist/service/providerCapabilities.d.ts +40 -0
- package/dist/service/providerCapabilities.js +114 -0
- package/dist/service/providerCapabilities.js.map +1 -0
- package/dist/service/server.d.ts +31 -0
- package/dist/service/server.js +774 -0
- package/dist/service/server.js.map +1 -0
- package/dist/shared/errors.d.ts +13 -0
- package/dist/shared/errors.js +24 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/fs.d.ts +6 -0
- package/dist/shared/fs.js +30 -0
- package/dist/shared/fs.js.map +1 -0
- package/dist/shared/image.d.ts +25 -0
- package/dist/shared/image.js +136 -0
- package/dist/shared/image.js.map +1 -0
- package/dist/shared/paths.d.ts +30 -0
- package/dist/shared/paths.js +103 -0
- package/dist/shared/paths.js.map +1 -0
- package/dist/shared/schemas.d.ts +209 -0
- package/dist/shared/schemas.js +93 -0
- package/dist/shared/schemas.js.map +1 -0
- package/dist/shared/typeGuards.d.ts +1 -0
- package/dist/shared/typeGuards.js +4 -0
- package/dist/shared/typeGuards.js.map +1 -0
- package/dist/shared/zod.d.ts +1 -0
- package/dist/shared/zod.js +14 -0
- package/dist/shared/zod.js.map +1 -0
- package/dist/showcase/format.d.ts +9 -0
- package/dist/showcase/format.js +61 -0
- package/dist/showcase/format.js.map +1 -0
- package/dist/showcase/panelRenderer.d.ts +59 -0
- package/dist/showcase/panelRenderer.js +294 -0
- package/dist/showcase/panelRenderer.js.map +1 -0
- package/dist/showcase/releaseConfig.d.ts +233 -0
- package/dist/showcase/releaseConfig.js +75 -0
- package/dist/showcase/releaseConfig.js.map +1 -0
- package/dist/showcase/releaseEvidence.d.ts +25 -0
- package/dist/showcase/releaseEvidence.js +540 -0
- package/dist/showcase/releaseEvidence.js.map +1 -0
- package/dist/showcase/releaseEvidenceSchema.d.ts +1611 -0
- package/dist/showcase/releaseEvidenceSchema.js +165 -0
- package/dist/showcase/releaseEvidenceSchema.js.map +1 -0
- package/dist/showcase/scenarioRenderer.d.ts +19 -0
- package/dist/showcase/scenarioRenderer.js +488 -0
- package/dist/showcase/scenarioRenderer.js.map +1 -0
- package/docs/ADAPTER_CONTRACT.md +141 -0
- package/docs/ENGINE_TARGETING.md +86 -0
- package/docs/MANIFEST_POLICY_COVERAGE.md +130 -0
- package/docs/RELEASE_WORKFLOW.md +117 -0
- package/docs/ROADMAP.md +411 -0
- package/docs/ROADMAP_ISSUES.md +244 -0
- package/docs/SERVICE_MODE.md +137 -0
- package/docs/manifest-schema.md +254 -0
- 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.
|