{
  "schemaVersion": 1,
  "status": "review-only",
  "pixelRestorationComplete": false,
  "entry": "index.html",
  "titleZh": "帮派战争 · 界面参考图与对照",
  "titleEn": "Gang War · source art and comparisons",
  "sourceBuilder": "source/build_review_v14.py",
  "sourceBuilderSHA256": "15f78f1df045ad90dac53770cdab504c7551a50b614b8acf4026644da1da2523",
  "sharedThemeSHA256": "79b086f88712488d4f7fec5f14b1f07c0eabccab28a7877a835fbe251f9c9723",
  "initialStyle": "toy-city",
  "boards": [
    {
      "id": "toy-city",
      "nameZh": "玩具城市",
      "nameEn": "Toy city",
      "sourceFile": "toy-city-support-r4.png",
      "sourceSHA256": "ae6b338f1f4c99709fe75eba1dd3dd00913f37f0db50df66db70177fc447a3ac",
      "sourceBytes": 2191812,
      "previewFile": "previews/toy-city-support-r4.3d358d6402c1.webp",
      "previewSHA256": "3d358d6402c13abc33d127d3c61abdc7fe721f3f667c057a2ca27e73dd249643",
      "previewBytes": 1806100,
      "width": 1672,
      "height": 941,
      "decodedRGBAEqualsSource": true,
      "proofFile": "proof/toy-city-r3-vs-v12-native.0a8caeee83dc.webp",
      "proofWidth": 1000,
      "proofHeight": 260,
      "proofPNG": "archive/proof/toy-city-r3-vs-v12-native.png",
      "originalVisibleCrop": "archive/original-visible-crops/toy-city-r3-start-battle-visible-region.png",
      "promptFiles": [
        "archive/prompts/prompts-r4.json"
      ],
      "artworkLanguage": "zh",
      "status": "effect-review-only"
    },
    {
      "id": "comic-toy",
      "nameZh": "美漫 × 玩具城市",
      "nameEn": "Comic × toy city",
      "sourceFile": "comic-toy-support-r4.png",
      "sourceSHA256": "d57d5d6cda39a5c07ab772699abe2f6ed97d55374eb32428ad40c0c3761c09cd",
      "sourceBytes": 2211639,
      "previewFile": "previews/comic-toy-support-r4.d862ce5f7969.webp",
      "previewSHA256": "d862ce5f79699c6b681c72ec7477ac8df9a150213fab1d66febf6dfdb83191a1",
      "previewBytes": 1793666,
      "width": 1672,
      "height": 941,
      "decodedRGBAEqualsSource": true,
      "proofFile": "proof/comic-toy-r3-vs-v12-native.d195c6aca827.webp",
      "proofWidth": 1000,
      "proofHeight": 260,
      "proofPNG": "archive/proof/comic-toy-r3-vs-v12-native.png",
      "originalVisibleCrop": "archive/original-visible-crops/comic-toy-r3-start-battle-visible-region.png",
      "promptFiles": [
        "archive/prompts/prompts-r4.json"
      ],
      "artworkLanguage": "zh",
      "status": "effect-review-only"
    },
    {
      "id": "comic-clean",
      "nameZh": "清爽纽约美漫",
      "nameEn": "Clean NYC comic",
      "sourceFile": "comic-clean-support-r4.png",
      "sourceSHA256": "2cce90565b00909292413ac2f9f88d360a2f9e72bd4404a7ed48aa6da12ce5be",
      "sourceBytes": 2292106,
      "previewFile": "previews/comic-clean-support-r4.c46337fc6d75.webp",
      "previewSHA256": "c46337fc6d75bb7e676de91a1911dedecdd0b813b5430e3932758d3dc6e6ee2e",
      "previewBytes": 1842040,
      "width": 1672,
      "height": 941,
      "decodedRGBAEqualsSource": true,
      "proofFile": "proof/comic-clean-r3-vs-v12-native.99c2eef1a223.webp",
      "proofWidth": 1000,
      "proofHeight": 260,
      "proofPNG": "archive/proof/comic-clean-r3-vs-v12-native.png",
      "originalVisibleCrop": "archive/original-visible-crops/comic-clean-r3-start-battle-visible-region.png",
      "promptFiles": [
        "archive/prompts/prompts-r4.json"
      ],
      "artworkLanguage": "zh",
      "status": "effect-review-only"
    }
  ],
  "files": [
    {
      "file": "toy-city-support-r4.png",
      "bytes": 2191812,
      "sha256": "ae6b338f1f4c99709fe75eba1dd3dd00913f37f0db50df66db70177fc447a3ac",
      "mime": "image/png",
      "purpose": "source-board"
    },
    {
      "file": "previews/toy-city-support-r4.3d358d6402c1.webp",
      "bytes": 1806100,
      "sha256": "3d358d6402c13abc33d127d3c61abdc7fe721f3f667c057a2ca27e73dd249643",
      "mime": "image/webp",
      "purpose": "board-preview"
    },
    {
      "file": "proof/toy-city-r3-vs-v12-native.0a8caeee83dc.webp",
      "bytes": 52070,
      "sha256": "0a8caeee83dc220f076cfb9dec4213ea41547430a0053b87f0e9575e76f2b63c",
      "mime": "image/webp",
      "purpose": "proof"
    },
    {
      "file": "archive/proof/toy-city-r3-vs-v12-native.png",
      "bytes": 70186,
      "sha256": "800b243f3e62dae13b50cae728e7f2cc2db32ebd53c5e306b5a2873e2d864fd5",
      "mime": "image/png",
      "purpose": "archive"
    },
    {
      "file": "archive/original-visible-crops/toy-city-r3-start-battle-visible-region.png",
      "bytes": 42018,
      "sha256": "6644443eff726c75942c21fe6463779e05be6832715a544922fb1d7b11a21120",
      "mime": "image/png",
      "purpose": "archive"
    },
    {
      "file": "archive/prompts/prompts-r4.json",
      "bytes": 2637,
      "sha256": "9ec9f5fb1980047ceb2c4166d9caefe0efb948890aba6d9787c17d358b2818fd",
      "mime": "application/json",
      "purpose": "prompt"
    },
    {
      "file": "comic-toy-support-r4.png",
      "bytes": 2211639,
      "sha256": "d57d5d6cda39a5c07ab772699abe2f6ed97d55374eb32428ad40c0c3761c09cd",
      "mime": "image/png",
      "purpose": "source-board"
    },
    {
      "file": "previews/comic-toy-support-r4.d862ce5f7969.webp",
      "bytes": 1793666,
      "sha256": "d862ce5f79699c6b681c72ec7477ac8df9a150213fab1d66febf6dfdb83191a1",
      "mime": "image/webp",
      "purpose": "board-preview"
    },
    {
      "file": "proof/comic-toy-r3-vs-v12-native.d195c6aca827.webp",
      "bytes": 62660,
      "sha256": "d195c6aca8276afc5c580ab0a6de17c030944f7a0d29d44e4460e48a73bf22c4",
      "mime": "image/webp",
      "purpose": "proof"
    },
    {
      "file": "archive/proof/comic-toy-r3-vs-v12-native.png",
      "bytes": 84068,
      "sha256": "e7bf52e2a6671db3830693cab650a7747a41d33ed06071727a7979fc0951b559",
      "mime": "image/png",
      "purpose": "archive"
    },
    {
      "file": "archive/original-visible-crops/comic-toy-r3-start-battle-visible-region.png",
      "bytes": 51777,
      "sha256": "940a814236a64ac3c612baac4430ffe21a4714dd10208f33c9fdc3e14f2120a7",
      "mime": "image/png",
      "purpose": "archive"
    },
    {
      "file": "comic-clean-support-r4.png",
      "bytes": 2292106,
      "sha256": "2cce90565b00909292413ac2f9f88d360a2f9e72bd4404a7ed48aa6da12ce5be",
      "mime": "image/png",
      "purpose": "source-board"
    },
    {
      "file": "previews/comic-clean-support-r4.c46337fc6d75.webp",
      "bytes": 1842040,
      "sha256": "c46337fc6d75bb7e676de91a1911dedecdd0b813b5430e3932758d3dc6e6ee2e",
      "mime": "image/webp",
      "purpose": "board-preview"
    },
    {
      "file": "proof/comic-clean-r3-vs-v12-native.99c2eef1a223.webp",
      "bytes": 62882,
      "sha256": "99c2eef1a223d0bcfb73df63ddac09ae34177f81395f5e00976b26f0fa57e8a9",
      "mime": "image/webp",
      "purpose": "proof"
    },
    {
      "file": "archive/proof/comic-clean-r3-vs-v12-native.png",
      "bytes": 84523,
      "sha256": "6cf561c9cd4601ac5a123b256b13a4ed2dfdc2e544928ee4c8f4a566a31ba11d",
      "mime": "image/png",
      "purpose": "archive"
    },
    {
      "file": "archive/original-visible-crops/comic-clean-r3-start-battle-visible-region.png",
      "bytes": 51962,
      "sha256": "250d5354c13f9c0fb4c92587d3250ebef452cb9e77fad11734a463d0e8697cb4",
      "mime": "image/png",
      "purpose": "archive"
    },
    {
      "file": "archive/fidelity-audit.md",
      "bytes": 9973,
      "sha256": "3c1599d9b29af6a790b8c52ecb0344f2ebbbee89992a4b708ef145770369e53e",
      "mime": "text/markdown",
      "purpose": "archive"
    },
    {
      "file": "archive/resource-contract.json",
      "bytes": 5476,
      "sha256": "c781b4ffda5def9914b4adbfeeeb8599850975f752ccefd7b08628083a584bd4",
      "mime": "application/json",
      "purpose": "archive"
    },
    {
      "file": "archive/original-crop-manifest.json",
      "bytes": 5534,
      "sha256": "af80248150c368dc5ad3e4b681b6341872bb74ecc6fdfc78345e3bba17e6ed72",
      "mime": "application/json",
      "purpose": "archive"
    },
    {
      "file": "archive/original-crop-readme.md",
      "bytes": 2791,
      "sha256": "a4a47c4db969ce09dd4082c2b2bce77dec06547741e80fc0549661d7f91ba9e0",
      "mime": "text/markdown",
      "purpose": "archive"
    },
    {
      "file": "pixel-integrity.json",
      "bytes": 3028,
      "sha256": "4300d0eb278300ecc15723a4b90f0ce036ec23d005e780d64e4948bf1951aa9f",
      "mime": "application/json",
      "purpose": "archive"
    },
    {
      "file": "index.html",
      "bytes": 54419,
      "sha256": "056256642b6cc5aa41e169d124e6ef4de0a055d4b6829e5679bb206ae4e29802",
      "mime": "text/html",
      "purpose": "gallery"
    }
  ],
  "budgets": {
    "htmlBytes": 54419,
    "reviewTotalBytes": 12783367,
    "initialBoardBytes": 1806100,
    "allBoardPreviewBytes": 5441806,
    "archiveBytes": 591585
  },
  "notes": [
    "Static gallery; no iframe or runtime art replacement.",
    "Files is the exact publish allowlist; the manifest itself must be checked separately to avoid recursive hashing.",
    "Only active preview loads initially; no PNG preload/prefetch; proof art loads on explicit expansion.",
    "All image copies were decoded and compared using numpy.array_equal; raw evidence is pixel-integrity.json.",
    "R3 originals were not overwritten; visible original crops remain opaque samples, not production transparent sprites."
  ]
}
