Manifest reference

Prompt and override resolution

{
  "styles": {
    "base": { "generator": "map", "outDir": "art/base", "promptPrefix": "pixel-art prop", "promptSuffix": "transparent background" },
    "mono": { "extends": "base", "outDir": "art/mono", "promptSuffix": "one-bit, transparent background" }
  },
  "assets": {
    "star": {
      "prompt": "a golden star",
      "promptByStyle": { "mono": "a five-pointed star" }   // colour words would fight the style
    }
  }
}

Prefix, subject, and suffix are trimmed and joined with ", ": base/star is sent as "pixel-art prop, a golden star, transparent background" and mono/star as "pixel-art prop, a five-pointed star, one-bit, transparent background". For each participating style/asset pair:

  1. Resolve the style provider, falling back to the top-level default.
  2. Choose promptByStyle[styleId] when present, otherwise prompt.
  3. Apply the style prefix and suffix.
  4. Apply generator dimensions and the effective provider's settings.
  5. Merge style and asset tags.
  6. Resolve and hash revision parents and masks, when declared.
  7. Derive a deterministic spec hash from every setting that changes generated pixels, including style-image and revision-input hashes.

Project root, output path, and tags are excluded from the pixel identity, so moving a checkout or retagging does not buy new art. Prompt, size, palette, seed, view, provider choice, reference-image bytes, and revision input bytes do change identity.