mustflow 2.117.1 → 2.118.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 (36) hide show
  1. package/README.md +1 -0
  2. package/dist/cli/commands/run/args.js +5 -0
  3. package/dist/cli/commands/run/execution.js +7 -6
  4. package/dist/cli/commands/run/preview.js +6 -5
  5. package/dist/cli/commands/run/receipt.js +1 -0
  6. package/dist/cli/commands/run.js +2 -1
  7. package/dist/cli/commands/workspace.js +216 -81
  8. package/dist/cli/i18n/en.js +1 -0
  9. package/dist/cli/i18n/es.js +1 -0
  10. package/dist/cli/i18n/fr.js +1 -0
  11. package/dist/cli/i18n/hi.js +1 -0
  12. package/dist/cli/i18n/ko.js +1 -0
  13. package/dist/cli/i18n/zh.js +1 -0
  14. package/dist/cli/lib/manifest-lock.js +10 -1
  15. package/dist/cli/lib/repo-map.js +5 -0
  16. package/dist/cli/lib/run-context.js +136 -0
  17. package/dist/cli/lib/run-root-trust.js +22 -15
  18. package/dist/cli/lib/validation/index.js +8 -0
  19. package/dist/core/config-loading.js +107 -14
  20. package/dist/core/run-receipt.js +1 -0
  21. package/dist/core/workspace-command-authority.js +98 -0
  22. package/package.json +1 -1
  23. package/schemas/run-receipt.schema.json +10 -0
  24. package/schemas/workspace-command-catalog.schema.json +3 -0
  25. package/schemas/workspace-command-fragments.schema.json +2 -0
  26. package/schemas/workspace-status.schema.json +4 -1
  27. package/schemas/workspace-verification-plan.schema.json +3 -0
  28. package/templates/default/common/.mustflow/config/mustflow.toml +2 -0
  29. package/templates/default/i18n.toml +7 -1
  30. package/templates/default/locales/en/.mustflow/skills/INDEX.md +2 -1
  31. package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/SKILL.md +209 -0
  32. package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/references/asset-contract-validation.md +106 -0
  33. package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/references/raster-alpha-atlas-checklist.md +109 -0
  34. package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/references/tile-animation-checklist.md +98 -0
  35. package/templates/default/locales/en/.mustflow/skills/routes.toml +6 -0
  36. package/templates/default/manifest.toml +6 -1
@@ -59,6 +59,8 @@
59
59
  "properties": {
60
60
  "enabled": { "type": "boolean" },
61
61
  "roots": { "$ref": "#/$defs/stringArray" },
62
+ "authority_mode": { "enum": ["repository_local", "delegated_scoped"] },
63
+ "delegated_contract_count": { "type": "integer", "minimum": 0 },
62
64
  "max_depth": { "type": "integer", "minimum": 1 },
63
65
  "max_repositories": { "type": "integer", "minimum": 1 },
64
66
  "follow_symlinks": { "type": "boolean" },
@@ -32,6 +32,8 @@
32
32
  "properties": {
33
33
  "enabled": { "type": "boolean" },
34
34
  "roots": { "$ref": "#/$defs/stringArray" },
35
+ "authority_mode": { "enum": ["repository_local", "delegated_scoped"] },
36
+ "delegated_contract_count": { "type": "integer", "minimum": 0 },
35
37
  "max_depth": { "type": "integer", "minimum": 1 },
36
38
  "max_repositories": { "type": "integer", "minimum": 1 },
37
39
  "follow_symlinks": { "type": "boolean" },
@@ -122,9 +124,10 @@
122
124
  ],
123
125
  "properties": {
124
126
  "relative_path": { "type": "string" },
125
- "status": { "enum": ["mustflow_ready", "contract_missing", "contract_invalid"] },
127
+ "status": { "enum": ["mustflow_ready", "delegated_ready", "contract_missing", "contract_invalid"] },
126
128
  "git_repository": { "const": true },
127
129
  "mustflow": { "type": "boolean" },
130
+ "command_authority": { "enum": ["repository_local", "delegated_scoped", null] },
128
131
  "agent_rules": { "$ref": "#/$defs/nullableString" },
129
132
  "repo_map": { "$ref": "#/$defs/nullableString" },
130
133
  "mustflow_config": { "$ref": "#/$defs/nullableString" },
@@ -57,6 +57,8 @@
57
57
  "properties": {
58
58
  "enabled": { "type": "boolean" },
59
59
  "roots": { "$ref": "#/$defs/stringArray" },
60
+ "authority_mode": { "enum": ["repository_local", "delegated_scoped"] },
61
+ "delegated_contract_count": { "type": "integer", "minimum": 0 },
60
62
  "max_depth": { "type": "integer", "minimum": 1 },
61
63
  "max_repositories": { "type": "integer", "minimum": 1 },
62
64
  "follow_symlinks": { "type": "boolean" },
@@ -140,6 +142,7 @@
140
142
  "plan_unavailable"
141
143
  ]
142
144
  },
145
+ "command_authority": { "enum": ["repository_local", "delegated_scoped", null] },
143
146
  "command_contract": { "$ref": "#/$defs/commandSurface" },
144
147
  "changed_file_count": { "type": ["integer", "null"], "minimum": 0 },
145
148
  "changed_files": { "$ref": "#/$defs/stringArray" },
@@ -96,6 +96,8 @@ anchor_files = [
96
96
  [workspace]
97
97
  enabled = true
98
98
  roots = ["projects"]
99
+ authority_mode = "repository_local"
100
+ contracts = []
99
101
  max_depth = 4
100
102
  max_repositories = 50
101
103
  follow_symlinks = false
@@ -62,7 +62,7 @@ translations = {}
62
62
  [documents."skills.index"]
63
63
  source = "locales/en/.mustflow/skills/INDEX.md"
64
64
  source_locale = "en"
65
- revision = 293
65
+ revision = 294
66
66
  translations = {}
67
67
 
68
68
  [documents."skill.ada-code-change"]
@@ -1622,3 +1622,9 @@ source = "locales/en/.mustflow/skills/web-asset-optimization/SKILL.md"
1622
1622
  source_locale = "en"
1623
1623
  revision = 3
1624
1624
  translations = {}
1625
+
1626
+ [documents."skill.ai-game-asset-production"]
1627
+ source = "locales/en/.mustflow/skills/ai-game-asset-production/SKILL.md"
1628
+ source_locale = "en"
1629
+ revision = 1
1630
+ translations = {}
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skills.index
3
3
  locale: en
4
4
  canonical: true
5
- revision: 293
5
+ revision: 294
6
6
  authority: router
7
7
  lifecycle: mustflow-owned
8
8
  ---
@@ -847,6 +847,7 @@ routes. Event routes stay inactive until their event occurs.
847
847
  | Core Web Vitals, real-user web performance, CrUX, Search Console, Lighthouse-versus-field discrepancy, RUM instrumentation, LCP, INP, CLS, FID replacement, LCP subparts, interaction latency, Long Animation Frames, long tasks, bfcache, speculation rules, third-party scripts, tag managers, ads, web fonts, responsive hero media, layout shifts, or deployment performance regression needs field-data triage rather than a one-off lab score | `.mustflow/skills/core-web-vitals-field-review/SKILL.md` | User goal, current diff or target files, metric contract, field evidence ledger, LCP ledger, INP ledger, CLS ledger, lab and diagnostics ledger, current official threshold evidence when needed, and configured command intents | RUM instrumentation, metric payloads, route grouping, p75 reporting, field-versus-lab wording, LCP candidate attribution, Server-Timing, Resource Timing, LoAF or long-task capture, bfcache diagnostics, safe speculation rules, focused tests, and narrower render/image/frame/bundle fixes when selected | Lighthouse trophy claim, stale FID dashboard, averaged Web Vitals, hidden mobile failure, missing p75 split, uninstrumented RUM, lazy LCP media, undiscovered hero, render-blocked LCP, INP blocked by hydration or third-party scripts, GTM tag drift, long task without attribution, CLS from ads or skeleton mismatch, bfcache blocker, unsafe prerender side effect, single bundle-size budget, or unmonitored deploy regression | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Core Web Vitals field review, evidence level, threshold and percentile contract, mobile/desktop split, LCP/INP/CLS ledgers, fixes or recommendations, verification, and remaining CWV field risk |
848
848
  | Web page, frontend route, landing page, ecommerce page, dashboard, SSR/RSC/SPA route, hero image, LCP candidate, above-the-fold CSS, font, image, iframe, third-party script, chat widget, client bundle, hydration boundary, route prefetch, first-view data fetch, HTML streaming, CDN cache, resource hint, compression, content-visibility, long task, or Core Web Vitals test needs web-render-performance triage for first-render performance, LCP, CLS, FCP, TTFB, render-blocking CSS, asset priority, JavaScript execution cost, or cache and delivery risk | `.mustflow/skills/web-render-performance-review/SKILL.md` | User goal, current diff or target files, first viewport and LCP candidate ledger, critical resource discovery ledger, CSS/render-blocking ledger, font loading ledger, image/video/iframe ledger, third-party script ledger, JavaScript bundle and hydration ledger, data and HTML delivery ledger, cache/compression/resource-hint ledger, main-thread/long-task ledger, measurement or test evidence, and configured command intents | LCP image loading priority, preload and preconnect hints, critical CSS, route CSS splitting, font-display and font preload policy, font subsetting, responsive images, image CDN usage, lazy image and iframe dimensions, third-party script gating, chat widget loading, client/server component boundaries, dynamic imports, code splitting, modulepreload, first-view data fetching, streaming HTML, static shell and dynamic hole split, TTFB instrumentation, CDN and cache headers, compression, content-visibility, long task scheduling, route prefetch behavior, focused tests, and directly synchronized docs or templates | lazy LCP image, undiscovered background hero, fetchpriority everywhere, render-blocking global CSS, common/vendor CSS bloat, font FOIT or CLS, over-preloaded fonts, unsubset Korean or CJK font, oversized image, missing srcset or sizes, lazy image CLS, eager offscreen iframe, global third-party script, first-paint chat SDK, broad use-client boundary, eager modal/chart/editor/map import, tiny-chunk waterfall, modulepreload spam, client-effect first data, all-or-nothing HTML wait, personalized whole-page dynamic render, TTFB handwave, uncacheable static HTML, wrong immutable/no-store cache header, missing text compression, Early Hints or preconnect spam, below-fold DOM layout cost, long main-thread task, overbroad Link prefetch, or lab-only perf claim | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Web render performance reviewed, viewport/resource/CSS/font/media/third-party/JS/data/cache/main-thread map, findings, fixes or recommendation, measurement or test evidence, verification, and remaining web-render performance risk |
849
849
  | Web image, hero image, LCP image, product image, feed image, gallery, avatar, thumbnail, carousel image, CSS background hero, `img`, `picture`, `source`, `srcset`, `sizes`, framework image component, responsive preload, `imagesrcset`, `imagesizes`, `fetchpriority`, `loading`, `decoding`, intrinsic dimensions, DPR bucket, width bucket, AVIF/WebP/JPEG/PNG/SVG fallback, quality budget, blur placeholder, base64 inline image, image CDN transformation, derivative cache key, content-hash URL, `Accept` negotiation, image proxy allowlist, EXIF orientation, ICC profile, uploaded SVG handling, `elementtiming`, Resource Timing, DevTools image waterfall, or RUM image evidence needs image-delivery-performance triage for discovery, priority, candidate size, layout stability, cacheability, quality, or abuse risk | `.mustflow/skills/image-delivery-performance-review/SKILL.md` | User goal, current diff or target files, image role ledger, discovery and priority ledger, responsive candidate ledger, layout stability ledger, format and quality ledger, pipeline and metadata ledger, CDN and cache ledger, safety and abuse ledger, image measurement evidence or gap, and configured command intents | Image markup, `picture` source order, `srcset`, `sizes`, `loading`, `decoding`, `fetchpriority`, responsive preload, `imagesrcset`, `imagesizes`, intrinsic dimensions, `aspect-ratio`, placeholders, CSS background preload hints, framework image props, width and DPR buckets, format fallback policy, quality settings, metadata handling, cache headers, derivative cache key rules, `Accept` forwarding, remote image allowlists, transform limits, focused tests, and directly synchronized docs or templates | lazy LCP image, priority inflation, hidden background image discovery, responsive preload missing `imagesrcset` or `imagesizes`, multi-format preload, wrong `sizes`, framework fill without sizes, lazy image missing dimensions, unbounded 3x variants, arbitrary width bucket, CDN cache-key confetti, wrong format by content type, weak JPEG fallback, global quality constant, missing byte budget, EXIF rotation bug, color-profile loss, unsafe SVG serving, meaningful image hidden as CSS background, first-view lazy loading, giant lazy gallery, wrong `decoding` hint, oversized blur placeholder, base64 HTML bloat, missing content-hash URL, lost original, dropped `Accept` header, public image proxy, unbounded remote transform, Lighthouse-only claim, or duplicate image download | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Image delivery performance reviewed, image role/discovery/priority/candidate/layout/format/quality/cache/pipeline/safety map, findings, fixes or recommendation, measurement or static image-delivery evidence, verification, and remaining image-delivery performance risk |
850
+ | AI-generated 2D game assets, transparent PNGs, icons, sprites, sprite sheets, animation frames, tiles, terrain transitions, parallax backgrounds, props, VFX, texture atlases, pivots, trim metadata, alpha fringes, texture bleeding, foot sliding, loop discontinuity, or engine-ready image pipelines are planned, generated, integrated, reviewed, or validated | `.mustflow/skills/ai-game-asset-production/SKILL.md` | Asset roles, target engine and renderer version, camera and projection, final sizes and pixels per unit, alpha and color-space convention, master references, anchors, provenance ledger, source/work/output ownership, acceptance metrics, and configured command intents | Asset contracts, source manifests, masks, metadata, image-processing code, atlas and engine import settings, acceptance scenes, fixtures, tests, and directly synchronized docs within the selected asset scope | prompt-only production, baked background, matte fringe, unstable identity or scale, trim jitter, foot sliding, broken seams or loops, atlas bleed, collision derived from decorative pixels, stale legal claim, unknown provenance, or source-only verification | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `mustflow_check` | Asset and engine contract, provenance and stage boundaries, geometry/alpha/pivot/tile/animation/atlas findings, threshold sources, candidate disposition, verification, and remaining visual, gameplay, provenance, or runtime risk |
850
851
  | Frontend app, client package, route, design system, component library, import graph, package entrypoint, bundler config, shared vendor chunk, first-route JS, tree shaking, ESM/CJS dependency, barrel file, package exports, sideEffects metadata, PURE annotation, Next use-client boundary, Server Component split, dynamic import, React lazy, Angular defer, Vue route lazy loading, import modularization, icon import, date locale, syntax highlighter, markdown renderer, code editor, Node polyfill, browser target, Babel polyfill, dev-only branch, console stripping, Rollup manualChunks, Vite modulepreload, Tailwind extraction, safelist, or inline asset rule needs client-bundle-pruning triage for dead-code elimination, dependency bloat, initial JS, shared vendor, or route chunk risk | `.mustflow/skills/client-bundle-pruning-review/SKILL.md` | User goal, current diff or target files, bundle target ledger, entry and import graph ledger, dependency format ledger, framework boundary ledger, heavy-feature ledger, polyfill and target ledger, bundle budget or analyzer evidence, and configured command intents | Import paths, package entrypoints, subpath exports, barrel usage, ESM package choices, package `sideEffects`, Rollup `moduleSideEffects`, PURE annotations, client/server boundaries, dynamic imports, framework deferral boundaries, package import modularization, icon/date/highlighter/editor imports, Node polyfill fallbacks, browser and Babel targets, dev-only constants, logging wrapper behavior, manual chunk rules, modulepreload policy, Tailwind extraction shapes, asset inline thresholds, focused tests, and directly synchronized docs or templates | total-dist theater, no initial-JS budget, CJS package on client path, broad utility import, hot-path barrel, package-root import dragging design system, missing subpath export, unsafe `sideEffects: false`, CSS or polyfill shaken away, global `moduleSideEffects: false`, missing PURE hint, false PURE annotation, page-level `use client`, server-safe parser in client bundle, dynamic import with variable path, lazy component declared in render, eager modal/chart/editor/map/search/PDF import, library import before user intent, Angular defer leak, Vue eager route, unverified import modularization, icon catalog import, all date locales, all highlighter languages, Node polyfill bundle, old browser-target helper bloat, whole `core-js` import, dev branch not folded, unsafe console drop, one giant vendor chunk, modulepreload spam, dynamic Tailwind class miss, broad safelist, large inline SVG/font/image, or unmeasured bundle claim | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Client bundle pruning reviewed, first-route/shared-vendor/import/dependency/client-boundary/polyfill/chunk/CSS/asset map, findings, fixes or recommendation, measurement or test evidence, verification, and remaining client-bundle pruning risk |
851
852
  | Frontend route, component, animation, scroll path, input path, list, table, chart, map, canvas, media slot, modal, drawer, hydration boundary, DOM read/write path, CSS selector, class toggle, CSS custom property, containment, content-visibility, virtualization, observer, event listener, requestAnimationFrame loop, long task, worker boundary, ResizeObserver path, runtime CSS injection, React memo boundary, context provider, deferred update, transition, or DevTools rendering trace needs frame-render-performance triage for INP, animation smoothness, scroll responsiveness, style recalculation, layout, paint, compositing, main-thread, or hydration risk | `.mustflow/skills/frame-render-performance-review/SKILL.md` | User goal, current diff or target files, interaction and frame ledger, DOM and layout ledger, style and CSS ledger, paint and compositing ledger, event and scheduling ledger, framework render ledger, rendering evidence or measurement gap, and configured command intents | DOM read/write batching, layout-affecting writes, transform/opacity animations, will-change scope, containment, content-visibility and contain-intrinsic-size, virtualization, selector simplification, state-class scope, CSS variable scope, media geometry reservation, native lazy loading, IntersectionObserver, passive listeners, overscroll-behavior, requestAnimationFrame scheduling, long-task chunking, worker and OffscreenCanvas boundaries, ResizeObserver, runtime CSS rule reduction, React prop and context stability, deferred and transition updates, hydration narrowing, focused tests, and directly synchronized docs or templates | forced synchronous layout, layout thrashing, width/height/top/left animation, stale will-change, missing containment, unsafe contain side effect, content-visibility scroll jump, offscreen chart or canvas work, oversized DOM, deep wrapper tree, expensive selector, body/html state blast, root CSS variable churn, unreserved media slot, LCP concern misrouted as frame fix, JS lazy loader overhead, scroll polling, non-passive wheel/touch handler, JS scroll lock, setTimeout frame clock, long task, main-thread heavy compute, canvas blocking input, resize measurement loop, runtime style injection, ineffective memo, broad context rerender, urgent heavy result render, full hydration INP cost, Lighthouse-score-only claim, or unmeasured rendering win | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Frame render performance reviewed, interaction/DOM/style/layout/paint/compositing/event/framework map, findings, fixes or recommendation, measurement or static frame-risk evidence, verification, and remaining frame-render performance risk |
852
853
  | UI motion, animation, transition, microinteraction, motion recipe, motion design system, CSS animation or transition, WAAPI, Framer Motion, GSAP, View Transition, hover, press, focus, drag, viewport entry, loading, async success, async failure, reduced motion, interruption, cancellation, settlement, timeline track, transform, opacity, filter, layout animation, or additive composition is planned, edited, reviewed, or reported | `.mustflow/skills/motion-system-contract-review/SKILL.md` | User goal, current diff or target files, motion slot, source and target roles, semantic event class, logical from-state and to-state, timeline tracks, interruption policy, settlement policy, reduced-motion policy, binding approach, async signal owner, evidence level, and configured command intents | Motion recipes, component motion props, CSS keyframes and transitions, animation lifecycle handlers, reduced-motion rules, state and signal policies, role/ref/slot/data binding, story fixtures, focused tests, and directly synchronized docs or templates | motion owns product state, false success or failure feedback, timer pretending to be a signal, missing from-state or to-state, same target and channel collision, unsupported additive composition, layout-channel animation, `animation-fill-mode` state lie, missing reduced motion, hover-only access, brittle selector binding, production animation failure blocking core action, or unverified visual proof | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Motion contract reviewed, state/event/track/interruption/settlement/reduced-motion/binding ledgers, async and collision findings, evidence level, verification, and remaining motion contract risk |
@@ -0,0 +1,209 @@
1
+ ---
2
+ mustflow_doc: skill.ai-game-asset-production
3
+ locale: en
4
+ canonical: true
5
+ revision: 1
6
+ lifecycle: mustflow-owned
7
+ authority: procedure
8
+ name: ai-game-asset-production
9
+ description: Apply this skill when AI-generated 2D game assets such as transparent PNGs, icons, sprites, animation frames, tiles, backgrounds, atlases, or engine-ready textures are planned, generated, normalized, integrated, reviewed, or validated as a repeatable production pipeline.
10
+ metadata:
11
+ mustflow_schema: "1"
12
+ mustflow_kind: procedure
13
+ pack_id: mustflow.core
14
+ skill_id: mustflow.core.ai-game-asset-production
15
+ command_intents:
16
+ - changes_status
17
+ - changes_diff_summary
18
+ - lint
19
+ - build
20
+ - test_related
21
+ - test
22
+ - docs_validate_fast
23
+ - mustflow_check
24
+ ---
25
+
26
+ # AI Game Asset Production
27
+
28
+ <!-- mustflow-section: purpose -->
29
+ ## Purpose
30
+
31
+ Turn generated pictures into reproducible 2D game assets by making the project contract, source
32
+ provenance, geometry, alpha handling, pivots, animation semantics, engine import behavior, and
33
+ acceptance evidence authoritative instead of treating prompt wording or a visually pleasing master
34
+ image as the production contract.
35
+
36
+ <!-- mustflow-section: use-when -->
37
+ ## Use When
38
+
39
+ - AI-generated transparent PNGs, icons, sprites, sprite sheets, animation frames, tiles, terrain
40
+ transitions, parallax backgrounds, props, VFX, or texture atlases are created or revised for a game.
41
+ - Assets look acceptable alone but drift in projection, scale, lighting, palette, edge continuity,
42
+ pivot, ground contact, collision alignment, frame identity, or runtime filtering.
43
+ - A repository needs a repeatable raw-to-engine asset pipeline, asset contract, atlas metadata,
44
+ automatic image checks, contact sheets, or engine-scene acceptance fixtures.
45
+ - A bug reports baked checkerboards, matte fringes, texture bleeding, trim jitter, foot sliding,
46
+ broken animation loops, inconsistent directional sprites, or seams between tiles and backgrounds.
47
+
48
+ <!-- mustflow-section: do-not-use-when -->
49
+ ## Do Not Use When
50
+
51
+ - The task only optimizes website image delivery, responsive sources, LCP behavior, or browser cache
52
+ policy; use `web-asset-optimization` or `image-delivery-performance-review`.
53
+ - The task only creates a concept illustration with no game-engine integration, repeatability, or
54
+ asset acceptance requirement.
55
+ - The main deliverable is a 3D mesh, rig, topology, UV layout, shader, or physically based material;
56
+ this skill may use a 3D proxy as an input but does not own a full 3D production pipeline.
57
+ - The task asks for a legal conclusion about copyright, trademark, platform policy, or commercial
58
+ rights. Use current authoritative sources and `provenance-license-gate`; do not convert this
59
+ procedure into legal advice.
60
+ - The task only reviews UI motion state, interruption, or reduced-motion behavior rather than game
61
+ sprite frame production; use `motion-system-contract-review`.
62
+
63
+ <!-- mustflow-section: required-inputs -->
64
+ ## Required Inputs
65
+
66
+ - Asset inventory and role for each output: isolated cutout, opaque background, translucent effect,
67
+ repeating tile, transition mask, icon, pixel art, painted sprite, normal map, or data mask.
68
+ - Target engine and renderer version, camera or projection, final display sizes, pixels per world
69
+ unit, color-space and straight or premultiplied alpha convention, filtering, mipmap, wrap,
70
+ compression, and atlas policy.
71
+ - Existing asset contract, style references, turnaround or calibration set, palette, meaningful
72
+ anchors, collision ownership, and animation state definitions; missing decisions must be named.
73
+ - Source and provenance ledger for generators, model or checkpoint components, reference images,
74
+ licenses or permissions, human edits, and retained source files.
75
+ - Repository paths and ownership for immutable source material, editable work files, generated
76
+ engine outputs, metadata, tests, and review artifacts.
77
+ - Acceptance metrics with a source of truth, measurement scale, threshold, exception, and failure
78
+ action, plus configured command intents in the selected repository.
79
+
80
+ <!-- mustflow-section: preconditions -->
81
+ ## Preconditions
82
+
83
+ - The task matches the use conditions and does not match an exclusion.
84
+ - Higher-priority instructions, the selected repository's command contract, current engine setup,
85
+ and existing asset pipeline have been inspected.
86
+ - The final runtime scale and renderer behavior are known, or the work stops at a calibration plan
87
+ instead of inventing production thresholds.
88
+ - Reference inputs have usable provenance, or unknown-rights inputs are excluded from shipped
89
+ assets and reported.
90
+
91
+ <!-- mustflow-section: allowed-edits -->
92
+ ## Allowed Edits
93
+
94
+ - Add or update project-owned asset contracts, source manifests, masks, metadata, image-processing
95
+ code, atlas configuration, engine import settings, acceptance scenes, fixtures, tests, and directly
96
+ synchronized documentation within the user-selected asset scope.
97
+ - Preserve immutable generated originals and manually authored masters when the repository declares
98
+ them as sources. Treat derived engine output as regenerable unless the repository says otherwise.
99
+ - When durable automation is needed, use the repository's existing cross-platform toolchain; under
100
+ the host policy, new repository automation defaults to Bun-backed TypeScript unless a nearer rule
101
+ selects another runtime.
102
+ - Do not install dependencies, call online generators, upload reference material, change legal or
103
+ platform policy, regenerate broad asset catalogs, or run unconfigured engine tools.
104
+ - Do not derive gameplay collision directly from decorative alpha unless the project contract
105
+ explicitly defines that bounded case.
106
+
107
+ <!-- mustflow-section: procedure -->
108
+ ## Procedure
109
+
110
+ 1. Classify every requested asset by rendering role and reject a one-setting-for-every-PNG pipeline.
111
+ Color textures, normal or mask data, hard cutouts, soft VFX, repeatable tiles, icons, and animation
112
+ frames have different alpha, color-space, resize, compression, and verification contracts.
113
+ 2. Locate or define the smallest project-owned asset contract. Record canvas and target sizes,
114
+ projection and camera, pixels per unit, ground line, safe region, palette and value structure,
115
+ light direction, alpha convention, layers, anchors, sockets, collision profile, atlas rules, and
116
+ engine import expectations. Prompt text may derive from this contract but never replaces it.
117
+ 3. Build a provenance and replacement ledger before generation. Separate provider permission,
118
+ copyrightability, third-party infringement risk, and exclusivity. Record the exact generator and
119
+ component chain, reference rights, source hashes, human contributions, review status, output
120
+ hashes, and every shipped use so one disputed asset can be quarantined and replaced.
121
+ 4. Establish a calibration set before bulk generation: geometric primitives, a humanoid or object
122
+ scale reference, representative materials, smallest target-size previews, tile neighbors, and the
123
+ engine acceptance scene. Reject model, style, or post-processing combinations that cannot hold
124
+ geometry, scale, light, or identity across this set.
125
+ 5. Freeze invariants separately from variables. Projection, camera, scale, light, palette, outline,
126
+ body ratios, anchors, and master references stay fixed; pose, expression, equipment, damage, and
127
+ material variants change deliberately. Derive variants from the approved master and original
128
+ reference set, not from a chain of progressively drifted outputs.
129
+ 6. Preserve stages as source, work, and generated engine output. Keep generator settings and source
130
+ hashes with the immutable source; perform masks, paintover, segmentation, alignment, and palette
131
+ work in the editable stage; rebuild atlas and engine output from declared inputs.
132
+ 7. Apply the alpha, icon, separation, trim, resize, atlas, and runtime checks in
133
+ `references/raster-alpha-atlas-checklist.md`. Test isolated cutouts on light, dark, and saturated
134
+ backgrounds. Preserve soft foreground alpha for glass, smoke, fire, and light instead of forcing
135
+ a binary mask.
136
+ 8. Apply the tile, background, object-contact, and animation branches in
137
+ `references/tile-animation-checklist.md`. Generate tile topology and masks before surface detail,
138
+ align frames by semantic anchors, keep gameplay shapes separate from art, and preserve full
139
+ untrimmed-frame metadata after packing.
140
+ 9. Define the automatic acceptance contract from
141
+ `references/asset-contract-validation.md`. Every metric needs a named coordinate space, target
142
+ scale, threshold source, exception policy, and deterministic failure action. A candidate starting
143
+ value is calibration evidence, not a universal default.
144
+ 10. Validate the derived output after the same resize, premultiplication, packing, compression,
145
+ filtering, mipmap, and color-space conversions used by the shipped build. Inspect native and
146
+ reduced scales in the actual renderer; source-PNG inspection alone cannot prove engine behavior.
147
+ 11. Classify each candidate as accepted, rework, quarantined, or rejected. Do not move a failing
148
+ threshold to fit a favored image. If the contract is wrong, revise it with new gameplay or
149
+ rendering evidence and re-evaluate the full calibration set.
150
+ 12. Run only configured oneshot intents in the selected repository. Keep asset generation,
151
+ conversion, tests, builds, and engine verification local to that repository's command authority.
152
+
153
+ <!-- mustflow-section: postconditions -->
154
+ ## Postconditions
155
+
156
+ - Every shipped output is traceable to project-owned contract fields, source inputs, transformation
157
+ settings, metadata, and an acceptance result.
158
+ - Transparent edges, pivots, trim offsets, atlas padding, tile seams, frame identity, contact points,
159
+ and runtime import settings are verified at the target scale or explicitly reported as unverified.
160
+ - Gameplay collision and event timing remain project-owned semantic data rather than accidental
161
+ consequences of generated pixels.
162
+ - Missing provenance, engine evidence, thresholds, or configured verification causes a bounded stop,
163
+ quarantine, or calibration report rather than an unsupported completion claim.
164
+
165
+ <!-- mustflow-section: verification -->
166
+ ## Verification
167
+
168
+ Use configured oneshot command intents when available in the selected repository:
169
+
170
+ - `changes_status`
171
+ - `changes_diff_summary`
172
+ - `lint`
173
+ - `build`
174
+ - `test_related`
175
+ - `test`
176
+ - `docs_validate_fast`
177
+ - `mustflow_check`
178
+
179
+ Prefer the narrowest asset compiler, image validator, atlas, engine import, or acceptance-scene intent
180
+ declared by the project. A passing static PNG check does not replace renderer or engine evidence.
181
+
182
+ <!-- mustflow-section: failure-handling -->
183
+ ## Failure Handling
184
+
185
+ - If projection, target scale, alpha convention, pivot, or runtime import behavior is unknown, stop
186
+ production output and return the missing contract fields plus a calibration plan.
187
+ - If reference provenance or commercial-use evidence is missing, exclude that input and its
188
+ derivatives from shipped output; do not make a legal assumption from generator marketing copy.
189
+ - If an isolated cutout fails RGBA, border-alpha, fringe, clipping, or safe-margin checks, quarantine
190
+ it before atlas packing. If a translucent effect fails a cutout-only rule, fix the role contract
191
+ rather than destroying its soft alpha.
192
+ - If frames fail identity, anchor, foot-contact, skeleton, arc, timing, or loop gates, rework the
193
+ source frames or metadata before assembling the sheet.
194
+ - If source files pass but engine output fails, inspect premultiplication, color space, padding,
195
+ extrude, UVs, filtering, mipmaps, wrap, compression, and import version before regenerating art.
196
+ - If a needed validator or engine check lacks a configured intent, report the missing intent and the
197
+ exact unverified risk instead of running a guessed command.
198
+
199
+ <!-- mustflow-section: output-format -->
200
+ ## Output Format
201
+
202
+ - Asset roles and target engine contract
203
+ - Source, work, generated-output, and provenance boundaries
204
+ - Geometry, alpha, pivot, tile, animation, atlas, and engine findings
205
+ - Acceptance metrics, threshold sources, exceptions, and candidate disposition
206
+ - Files and metadata created or changed
207
+ - Command intents run
208
+ - Skipped checks and reasons
209
+ - Remaining visual, gameplay, provenance, or runtime risk
@@ -0,0 +1,106 @@
1
+ # Asset Contract and Validation Ledger
2
+
3
+ Use this reference to turn a visual request into project-owned inputs and observable acceptance
4
+ evidence. Values below are fields to decide, not Mustflow defaults.
5
+
6
+ ## Contract fields
7
+
8
+ Record the fields that apply to the selected asset role:
9
+
10
+ | Area | Contract fields |
11
+ | --- | --- |
12
+ | identity | asset ID, role, variant family, master source, replacement tier |
13
+ | geometry | canvas, intended occupied bounds, target display sizes, pixels per unit, world dimensions, projection, camera, horizon or ground line |
14
+ | presentation | palette, value bands, outline range, material simplification, light vector, shadow policy, allowed baked lighting |
15
+ | transparency | straight or premultiplied delivery, cutout or soft alpha, background model, matte policy, color dilation policy |
16
+ | alignment | root pivot, ground contact, center of mass, sockets, trim policy, untrimmed source size |
17
+ | gameplay | movement collider, hurtbox, hitbox, interaction region, occluder, z-sort anchor, event frames |
18
+ | texture | color space, bit depth, filter, mipmap, wrap, compression, atlas rotation, extrude, shape padding, border padding |
19
+ | lifecycle | raw source owner, editable master, derived output, generator version, transform version, reviewer, replacement map |
20
+
21
+ For perspective or isometric work, also record screen directions for world axes and the expected
22
+ projection of a calibration cube. A style name such as "isometric" or "three-quarter" is not a
23
+ projection contract.
24
+
25
+ ## Provenance and replacement ledger
26
+
27
+ Keep provenance evidence separate from visual approval:
28
+
29
+ - exact provider, model, checkpoint, adapter, VAE, pose or control input, and post-processor versions;
30
+ - account or license context needed by the project, captured at the generation date when required;
31
+ - source URL or file identity, hash, author or owner, license or permission, attribution, and use scope
32
+ for every reference input;
33
+ - prompt or prompt hash, seed when meaningful, settings hash, generation date, and immutable raw hash;
34
+ - human-authored blockout, silhouette, composition, paintover, palette, rig, frame alignment, and
35
+ gameplay metadata contributions;
36
+ - similarity, watermark, logo, trademark, platform disclosure, and human-review disposition;
37
+ - final file hash and every game, atlas, UI, store, marketing, and localization reference that must be
38
+ changed during quarantine or replacement.
39
+
40
+ Do not collapse provider permission, copyright ownership, non-infringement, and exclusivity into one
41
+ "commercial use" boolean. Time-sensitive legal, vendor, and platform claims require current
42
+ authoritative sources; this ledger records evidence and decisions but does not supply legal advice.
43
+
44
+ ## Metric contract
45
+
46
+ Every automated metric should declare:
47
+
48
+ | Field | Question |
49
+ | --- | --- |
50
+ | metric ID | What stable name identifies the rule? |
51
+ | asset roles | Which cutout, effect, tile, icon, frame, or atlas roles does it apply to? |
52
+ | coordinate space | Source pixels, target pixels, normalized canvas, world units, UVs, or color space? |
53
+ | sampling stage | Raw, work, resized, packed, compressed, imported, or rendered? |
54
+ | threshold | What exact bound causes pass, warning, review, quarantine, or rejection? |
55
+ | source | Project contract, engine rule, representative approved set, or measured runtime budget? |
56
+ | exception | Which intentional edge-touch, full-canvas effect, soft-alpha, or asymmetric pose is exempt? |
57
+ | evidence | Which report, image, contact sheet, metadata record, or engine scene proves the result? |
58
+ | action | Rework, quarantine, reject, or revise the contract with new evidence? |
59
+
60
+ ## Required metric families
61
+
62
+ Select only the families relevant to the asset role:
63
+
64
+ - file contract: exact canvas, color mode, RGBA presence, bit depth, color profile, byte budget, empty
65
+ output, duplicate hash, naming, and metadata completeness;
66
+ - alpha contract: corner and border alpha, border-connected background residue, low-alpha noise area,
67
+ alpha histogram, matte fringe on contrasting backgrounds, and hidden RGB policy;
68
+ - framing contract: occupied bounds, border contact, safe margin, ground contact, pivot, sockets,
69
+ source size, trim rectangle, and sprite-source position;
70
+ - icon contract: silhouette occupancy, minimum negative space, minimum stroke, connected-component
71
+ count, contrast, pixel-grid alignment, and size-specific detail budget;
72
+ - seam contract: opposite-edge color and gradient distance, corner closure, repeated-pattern peak,
73
+ topology validity, object-contact height, and worst-neighbor matrix;
74
+ - animation contract: root and pivot drift, support-foot world drift, silhouette-area change, landmark
75
+ and bone-length change, palette drift, motion-arc deviation, loop pose and velocity discontinuity,
76
+ optical-flow outliers, and event-frame completeness;
77
+ - runtime contract: atlas bleed, UV region, alpha blend agreement, filter and mipmap behavior, wrap,
78
+ compression artifacts, draw scale, pixel snap, import metadata, and engine-scene result.
79
+
80
+ ## Threshold calibration
81
+
82
+ Exact values belong to the project because a 16-pixel icon, a 256-pixel painted sprite, and a
83
+ full-canvas smoke effect cannot share one tolerance. Calibrate from target-size approved examples and
84
+ known-bad fixtures.
85
+
86
+ Useful starting hypotheses from the supplied production material include exact alpha zero at isolated
87
+ cutout corners, no unintended occupied border pixel, pivot or grounded-foot drift no greater than one
88
+ target pixel, silhouette-height drift around two percent, and light-direction drift around five
89
+ degrees. These are calibration candidates only. Record the tested scale and replace them with the
90
+ project's measured bounds before using them as release gates.
91
+
92
+ If no approved baseline or engine evidence exists, emit measurements and contact sheets as a
93
+ calibration report. Do not silently turn an arbitrary number into a pass or fail contract.
94
+
95
+ ## Acceptance matrix
96
+
97
+ Render or inspect at least:
98
+
99
+ - transparent cutouts on black, white, mid-gray, and saturated backgrounds;
100
+ - icons at every shipped optical size, not only a large master preview;
101
+ - tiles as same-tile repeats and worst valid neighbors, including all four corners;
102
+ - sprites at native, reduced, and enlarged scales with the shipped filter and mipmap policy;
103
+ - atlases before and after compression with adjacent high-contrast sprites;
104
+ - animation at intended frame durations, slow inspection speed, and the loop boundary;
105
+ - debug overlays for pivot, ground line, sockets, trim rectangle, collider, hurtbox, hitbox, occluder,
106
+ motion paths, light vector, and tile topology.
@@ -0,0 +1,109 @@
1
+ # Raster, Alpha, Icon, and Atlas Checklist
2
+
3
+ Use this checklist for isolated PNGs, translucent effects, icons, frame extraction, trimming, resizing,
4
+ packing, and engine import. Verify exact engine-version options from current project files or official
5
+ documentation before naming a setting.
6
+
7
+ ## Real transparency
8
+
9
+ 1. Decode the file and inspect its actual channel layout; a PNG extension or visible checkerboard is
10
+ not proof of an alpha channel.
11
+ 2. For an isolated cutout, require the contract's corner and border alpha. Do not apply the same rule
12
+ to full-canvas fog, light, edge effects, or intentionally edge-touching tiles.
13
+ 3. Inspect the alpha histogram and border-connected low-alpha regions. A large faint background can
14
+ pass a four-corner test, while a legitimate soft effect can have many distinct alpha values.
15
+ 4. Detect baked checkerboards as image content by looking for repeated alternating blocks in opaque
16
+ or near-opaque background regions; route suspicious cases to review instead of claiming a perfect
17
+ detector.
18
+ 5. Composite the decoded image on dark, light, neutral, and saturated backgrounds at target size.
19
+ Measure the edge band as well as reviewing it visually.
20
+
21
+ ## Straight and premultiplied alpha
22
+
23
+ - Record whether working images, resize operations, packed textures, renderer uploads, and blend
24
+ equations expect straight or premultiplied alpha.
25
+ - For color resampling, convert color to the correct linear-light working space when required,
26
+ premultiply RGB by alpha, resize color and alpha together, and unpremultiply only when the output
27
+ contract requires straight alpha. Protect alpha zero from division noise.
28
+ - A white, black, or gray halo usually means a matte color was mixed into antialiased pixels, hidden
29
+ transparent RGB entered filtering, or straight data was blended as premultiplied data or vice versa.
30
+ - Normal, roughness, ID, and mask textures are data, not display color. Do not apply sRGB color
31
+ transforms or color-image alpha repair to them without an explicit format rule.
32
+
33
+ ## Hidden RGB policy
34
+
35
+ Choose by runtime behavior:
36
+
37
+ - Clear RGB under alpha zero only for pipelines that never sample beyond visible texels and whose
38
+ compression or tooling contract requires canonical transparent bytes.
39
+ - Extend nearby visible color into transparent texels for linearly filtered, resized, mipmapped, or
40
+ atlased color sprites. Use nearest visible color or bounded edge dilation without changing alpha.
41
+ - Keep cutout-color dilation distinct from soft-effect matting. Smoke, glass, fire, glow, and hair
42
+ need foreground color and fractional alpha recovered together; hard thresholding deletes the
43
+ effect or leaves a matte.
44
+
45
+ ## Multi-object separation
46
+
47
+ For a sheet containing several generated objects:
48
+
49
+ 1. Estimate foreground alpha or foreground probability, preserving a soft channel for effects.
50
+ 2. Remove border-connected background residue and isolated components below a role-specific area
51
+ threshold.
52
+ 3. Run connected-component analysis at more than one alpha threshold so faint shadows and solid
53
+ objects can be reasoned about separately.
54
+ 4. Merge components only with semantic evidence such as a declared object group, containment,
55
+ proximity, shared anchor, or source mask. A detached weapon decoration may belong to the object;
56
+ smoke or a ground glow may require a separate blend layer.
57
+ 5. Split touching candidates with masks, contour concavities, watershed or distance fields, and a
58
+ review fallback. Do not slice solely through the narrowest pixel column.
59
+ 6. Dilate the accepted mask only enough to preserve antialiasing, then compute a safety margin and
60
+ reject any crop that touches the output border outside an intentional exception.
61
+ 7. Store the source image, extraction mask, component membership, original bounds, expanded bounds,
62
+ and confidence or review disposition.
63
+
64
+ ## Icons and optical sizes
65
+
66
+ - Do not downsample one detailed master into every size and call the result complete. Treat 16, 24,
67
+ 32, 64, 128, and larger outputs as optical-size families selected by the product, not as a mandatory
68
+ Mustflow size list.
69
+ - At the smallest sizes, prioritize silhouette, negative space, one dominant feature, strong value
70
+ separation, grid-aligned edges, and strokes that survive the target raster.
71
+ - Add secondary forms and material detail only as the target size can resolve them. Measure the final
72
+ raster rather than trusting a large preview.
73
+ - Generate each size from the largest approved source or a size-specific master in one resampling
74
+ step, then perform final-size cleanup. Do not repeatedly resize from the previous smaller output.
75
+
76
+ ## Trimming and atlas metadata
77
+
78
+ Trimming may remove transparent storage but must not erase placement:
79
+
80
+ - original source width and height;
81
+ - trimmed frame rectangle in the original canvas;
82
+ - sprite-source position or corner offset;
83
+ - pivot in normalized and source-pixel coordinates when useful;
84
+ - ground contact, center of mass, sockets, and semantic anchors;
85
+ - frame duration, loop range, animation event references, and gameplay shape references;
86
+ - atlas frame rectangle, rotation flag, extrude, shape padding, border padding, and page identity.
87
+
88
+ Apply identical trim and placement to paired color, normal, emissive, and mask textures. Disable atlas
89
+ rotation when direction, UI orientation, tiling, paired maps, or local axes make rotation unsafe.
90
+
91
+ ## Bleeding and engine import
92
+
93
+ - Transparent gaps alone do not stop sampling. Keep extruded edge color, spacing between packed
94
+ shapes, and atlas-border padding as separate values derived from filtering, mip depth, compression,
95
+ and maximum reduction.
96
+ - Do not use UV inset as the only repair; it can shrink or shimmer sprites and still fails at deeper
97
+ mips. Verify the packed result with deliberately high-contrast neighbors.
98
+ - Use clamp for independent sprites and repeat only for textures whose opposite edges are contracted
99
+ to repeat. Select nearest or linear filtering from the asset role and camera behavior; pixel art may
100
+ still need a deliberate mip strategy when heavily minified.
101
+ - For PixiJS, verify the installed renderer version's texture source, alpha, scale, mipmap, wrap, UV,
102
+ resolution, and atlas metadata behavior rather than copying properties from another major version.
103
+ - For Unity, verify sprite import mode, pixels per unit, pivot, mesh, filter, mipmaps, color space,
104
+ alpha handling, compression, atlas padding or extrude, rotation, and paired texture behavior.
105
+ - For Godot, verify texture import filtering, mipmaps, repeat, alpha-border repair, lossless or VRAM
106
+ compression, normal-map handling, region filtering, SpriteFrames metadata, offset, and pixel-snap
107
+ behavior for the installed major version.
108
+ - Compare the source, packed texture, imported resource, and rendered frame. Disk compression size is
109
+ not GPU-memory evidence.