{
  "run": "b0-poc",
  "date": "2026-09-06",
  "model": "PXG-Tiny (Tarul/pxg-tiny), NumPy CPU, 16x16, код+веса MIT/CC0",
  "pipeline": "cli.py -> review/*.png -> post.mjs (кроп альфы, nearest, квантизация palette.mjs) -> processed/",
  "criterion": ">= 30% спрайтов годных без ручной правки",
  "items": [
    { "file": "a_chest_s1.png", "prompt": "a chest", "seed": 1, "gate": "accept", "match": "good", "note": "золотой сундук, годен" },
    { "file": "a_chest_s2.png", "prompt": "a chest", "seed": 2, "gate": "accept", "match": "good", "note": "серебряный сундук, годен" },
    { "file": "a_rock_s1.png", "prompt": "a rock", "seed": 1, "gate": "accept", "match": "good", "note": "валун, годен" },
    { "file": "a_rock_s2.png", "prompt": "a rock", "seed": 2, "gate": "accept", "match": "good", "note": "валун, годен" },
    { "file": "a_table_s1.png", "prompt": "a table", "seed": 1, "gate": "accept", "match": "good", "note": "стол, годен" },
    { "file": "a_table_s2.png", "prompt": "a table", "seed": 2, "gate": "accept", "match": "good", "note": "стол, годен" },
    { "file": "102_a_golden_key.png", "prompt": "a golden key", "seed": 102, "gate": "accept", "match": "good", "note": "ключ, годен" },
    { "file": "111_an_iron_sword.png", "prompt": "an iron sword", "seed": 111, "gate": "accept", "match": "good", "note": "меч, годен" },
    { "file": "109_a_healing_potion_in_a_round_.png", "prompt": "a healing potion in a round bottle", "seed": 109, "gate": "accept", "match": "partial", "note": "форма ок, цвет ушёл в W3 при квантизации (зелёного в палитре нет)" },
    { "file": "107_a_wooden_chair.png", "prompt": "a wooden chair", "seed": 107, "gate": "accept", "match": "partial", "note": "похоже на табурет, читаемо" },
    { "file": "101_an_iron_chest_with_bronze_tr.png", "prompt": "an iron chest with bronze trim", "seed": 101, "gate": "accept", "match": "bad", "note": "сгенерировал рыцаря вместо сундука" },
    { "file": "a_coin_s1.png", "prompt": "a coin", "seed": 1, "gate": "accept", "match": "bad", "note": "табурет вместо монеты" },
    { "file": "a_coin_s2.png", "prompt": "a coin", "seed": 2, "gate": "accept", "match": "bad", "note": "табурет вместо монеты" },
    { "file": "an_oak_s1.png", "prompt": "an oak", "seed": 1, "gate": "accept", "match": "bad", "note": "нечитаемая каша" },
    { "file": "an_oak_s2.png", "prompt": "an oak", "seed": 2, "gate": "accept", "match": "bad", "note": "котелок вместо дерева" },
    { "file": "105_an_old_oak_tree.png", "prompt": "an old oak tree", "seed": 105, "gate": "accept", "match": "bad", "note": "рыжая каша" },
    { "file": "106_a_wooden_table.png", "prompt": "a wooden table", "seed": 106, "gate": "accept", "match": "partial", "note": "стол-табурет" },
    { "file": "108_a_small_grey_stone_house.png", "prompt": "a small grey stone house", "seed": 108, "gate": "accept", "match": "bad", "note": "наковальня-кувшин" },
    { "file": "110_a_wooden_staff.png", "prompt": "a wooden staff", "seed": 110, "gate": "accept", "match": "bad", "note": "доска вместо посоха" },
    { "file": "112_a_bronze_coin.png", "prompt": "a bronze coin", "seed": 112, "gate": "accept", "match": "bad", "note": "кирпич" }
  ],
  "refused": [
    { "prompt": "a grey crystal shard", "gate": "clarify", "note": "shard вне лексикона" },
    { "prompt": "a grey stone", "gate": "clarify", "note": "stone вне лексикона (rock — есть)" },
    { "prompt": "a bronze bell", "gate": "clarify", "note": "колокол нет в классах — ожидаемо" },
    { "prompt": "a yellow flower", "gate": "clarify", "note": "цветов нет в классах — критично для игры" }
  ],
  "verdict": {
    "good": 8,
    "partial": 3,
    "bad": 9,
    "total": 20,
    "goodShare": "40%",
    "conclusion": "Критерий 30% выполнен, стиль совпадает с игрой на 100% (чанки-пиксель, палитра). Но домен модели узкий: критичные для игры ассеты (колодец, столб, рычаг, колокольчик, моты, очаг, прилавок) вне 38 классов. Вывод: PXG-Tiny годна для инвентаря/декора из её классов; для доменных ассетов нужен дообученный генератор, платный RD API или ручной арт."
  }
}