[
  {
    "id": "plaque",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 38,
    "bytes": null
  },
  {
    "id": "regime-map",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 74,
    "bytes": null
  },
  {
    "id": "longtable",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 74,
    "bytes": null
  },
  {
    "id": "gurps-vtt",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 2,
    "bytes": null
  },
  {
    "id": "arcade",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 358,
    "bytes": null
  },
  {
    "id": "wyrmling",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 266,
    "bytes": null
  },
  {
    "id": "stacks",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 1488,
    "bytes": null
  },
  {
    "id": "alcove",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 422,
    "bytes": null
  },
  {
    "id": "lectern",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 86,
    "bytes": null
  },
  {
    "id": "booth",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 442,
    "bytes": null
  },
  {
    "id": "newspaper-stand",
    "method": "generated",
    "built_by": "Claude (library-ai-heroes session), picked by Devin over the code-built stand on 2026-10-22",
    "tool": "Hugging Face Spaces mcp-tools/Qwen-Image-Fast (rev 1260edfc8a) and trellis-community/TRELLIS (rev 91c1b5afbf); Blender 5.2.2; gltfpack 0.22",
    "model": "Reference image: Qwen/Qwen-Image (rev 75e0b4be04) with lightx2v/Qwen-Image-Lightning (rev d468c534b3), seed 615, 8 steps, 1:1. Mesh: microsoft/TRELLIS-image-large (rev 25e0d31ffb), seed 0, Space defaults, mesh_simplify 0.95, texture 512.",
    "licence": "Qwen-Image and Qwen-Image-Lightning Apache-2.0; TRELLIS-image-large MIT. Output used under those terms.",
    "prompt": "An antique library newspaper reading stand: a slanted oak reading desk on four sturdy legs with a brass rail along the lower edge and a lower shelf; a stack of folded newspapers with blank pages on the shelf. Low-poly 3D game asset, flat-shaded faceted surfaces, simple solid colours, warm honey oak wood and polished brass, single object, full object visible, three-quarter view from slightly above, centered, plain white background, soft even studio lighting.",
    "fixes": [
      "Merged duplicate vertices within 2 mm (5,273 removed).",
      "Decimated from 22,536 to 2,799 triangles to meet style A's 3,000 cap.",
      "Replaced the texture with one flat colour per face, sampled from the TRELLIS texture and reduced to 8 colours.",
      "Scaled to 80% (1.56 m wide, 1.97 m tall) and seated on the floor.",
      "Deleted 446 generated paper faces on the desk, because they poked through the live newspaper.",
      "Moved the live newspaper onto the generated desk: 35.4 degree tilt (the code stand's was 25.8), lifted 10 cm, shrunk to 1.2 x 0.88 m.",
      "Compressed with meshopt (gltfpack -cc)."
    ],
    "evidence": "docs/ai-heroes/ (scripts, reference image, generation log, comparison screenshots)",
    "triangles": 2353,
    "bytes": 55980
  },
  {
    "id": "wyrm",
    "method": "generated",
    "built_by": "Claude (library-ai-heroes and wyrm-v2 sessions) from Devin's reference image; the first generated wyrm was picked over the code-built brass scribe on 2026-10-23, and this second version replaced it the same day after Devin asked for a legless wyrm with attached wings",
    "tool": "ChatGPT image generation (Devin's reference); Hugging Face Spaces Qwen/Qwen-Image-Edit (rev 96113f3031) and microsoft/TRELLIS.2 (rev ebf60b20fc); Blender 5.2.2; gltfpack 0.22",
    "model": "Reference: an engraving-style image Devin made with ChatGPT (docs/ai-heroes/reference/wyrmling-reference.webp). Restyle: Qwen/Qwen-Image-Edit (rev ac7f9318f6), seed 616, guidance 4.0, 50 steps, prompt rewriting off. Mesh: microsoft/TRELLIS.2-4B (rev af44b45f2e), seed 0, resolution 1024, GLB extracted at 100,000 faces and 1,024 px texture.",
    "licence": "Reference image: made by Devin with ChatGPT; OpenAI's terms assign the output to the user. Qwen-Image-Edit Apache-2.0; TRELLIS.2 MIT. Output used under those terms.",
    "prompt": "Redraw this as a single low-poly 3D game asset render, flat-shaded faceted surfaces, simple solid colours, no outlines, no hatching. Keep the creature exactly as drawn: a legless winged serpent with a long thick snake body, no arms and no legs at all, two large raven-like wings of long layered black feathers growing from its back just behind the neck, a spiky crest, amber eyes, a cream banded throat and belly; its head bends low over an open book lying flat in front of it, and the tip of its tail coils around a black quill that writes on the page; the rest of the body curls in a loop behind the book. No desk, no table, no inkwell, no scrolls. The whole serpent, wings and book visible, three-quarter view from slightly above, centered, plain white background, soft even studio lighting, no text.",
    "fixes": [
      "The first generated wyrm had legs and its wings never formed in the mesh, so the restyle prompt was rewritten for a legless serpent with feathered wings and no desk or props; an earlier rewrite that still gave legs was rejected.",
      "TRELLIS.2 meshed the wyrm, its book and its tail-held quill but no desk, so it lies on the code-built desk.",
      "The raw mesh (98,864 triangles in many touching shells) would not decimate directly, so it was rebuilt as one surface by voxel remeshing, then decimated to 2,800 triangles to meet style A's 3,000 cap.",
      "Replaced the texture with one flat colour per face, sampled from the TRELLIS.2 texture and reduced to 10 colours; the near-black colours were repainted with the dark teal and cream of the restyled image.",
      "Scaled to 70% (1.12 m wide) and turned 126 degrees so it faces the visitor, as in the reference.",
      "The live replay page is a loose sheet in front of the generated book, because on the book its text would sit under the wyrm's head; the quill is the generated one, so no code-built pen is added.",
      "Compressed with meshopt (gltfpack -cc)."
    ],
    "evidence": "docs/ai-heroes/ (scripts, reference images, generation log, comparison screenshots)",
    "triangles": 2789,
    "bytes": 61532
  },
  {
    "id": "reading-table",
    "method": "generated",
    "built_by": "Claude (library-ai-heroes session), picked by Devin over the code-built Longtable on 2026-10-23",
    "tool": "Hugging Face Spaces mcp-tools/Qwen-Image-Fast (rev 1260edfc8a) and trellis-community/TRELLIS (rev 91c1b5afbf); Blender 5.2.2; gltfpack 0.22",
    "model": "Reference image: Qwen/Qwen-Image (rev 75e0b4be04) with lightx2v/Qwen-Image-Lightning (rev d468c534b3), seed 615, 8 steps, 1:1. Mesh: microsoft/TRELLIS-image-large (rev 25e0d31ffb), seed 0, Space defaults, mesh_simplify 0.95, texture 512.",
    "licence": "Qwen-Image and Qwen-Image-Lightning Apache-2.0; TRELLIS-image-large MIT. Output used under those terms.",
    "prompt": "A long rectangular oak library reading table, about three times longer than wide, with a bare empty flat tabletop and six simple wooden chairs evenly spaced along each long side, tucked in, seen as one set from the side at a slight angle. Low-poly 3D game asset, flat-shaded faceted surfaces, simple solid colours, warm honey oak wood and polished brass, single object, full object visible, three-quarter view from slightly above, centered, plain white background, soft even studio lighting.",
    "fixes": [
      "The first attempt, from a three-quarter reference, meshed two tables crossing in an X (docs/ai-heroes/longtable-x-failure.png); the prompt was rewritten for a side-on view and run again.",
      "The second reference has four chairs a side, not the six asked for, and a brass rail along the top.",
      "Merged duplicate vertices (6,617 removed).",
      "Decimated from 14,674 to 2,800 triangles, then deleted the 142 rail faces where the live projection lies.",
      "Replaced the texture with one flat colour per face, sampled from the TRELLIS texture and reduced to 10 colours.",
      "Shortened the legs (everything below 1.15 m scaled to 76.5%) so the top sits at about 0.93 m.",
      "Moved the live projection onto the generated top: 4.4 x 0.98 m at 0.955 m (code table 4.45 x 1.22 m).",
      "Compressed with meshopt (gltfpack -cc)."
    ],
    "evidence": "docs/ai-heroes/ (scripts, reference images, generation log, comparison screenshots)",
    "triangles": 2658,
    "bytes": 59796
  },
  {
    "id": "games-table",
    "method": "generated",
    "built_by": "Claude (library-ai-heroes session), picked by Devin over the code-built games table on 2026-10-23",
    "tool": "Hugging Face Spaces mcp-tools/Qwen-Image-Fast (rev 1260edfc8a) and trellis-community/TRELLIS (rev 91c1b5afbf); Blender 5.2.2; gltfpack 0.22",
    "model": "Reference image: Qwen/Qwen-Image (rev 75e0b4be04) with lightx2v/Qwen-Image-Lightning (rev d468c534b3), seed 615, 8 steps, 1:1. Mesh: microsoft/TRELLIS-image-large (rev 25e0d31ffb), seed 0, Space defaults, mesh_simplify 0.95, texture 512.",
    "licence": "Qwen-Image and Qwen-Image-Lightning Apache-2.0; TRELLIS-image-large MIT. Output used under those terms.",
    "prompt": "A round oak games table on a single thick central pedestal, with six brass miniature figurines and three colourful dice on top, and a small square side table holding a few thin rule books. Low-poly 3D game asset, flat-shaded faceted surfaces, simple solid colours, warm honey oak wood and polished brass, single object, full object visible, three-quarter view from slightly above, centered, plain white background, soft even studio lighting.",
    "fixes": [
      "The first attempt timed out on the Space; the second ran.",
      "Merged duplicate vertices (2,972 removed).",
      "Decimated from 10,556 to 2,800 triangles to meet style A's 3,000 cap.",
      "Replaced the texture with one flat colour per face, sampled from the TRELLIS texture and reduced to 10 colours.",
      "Shortened the pedestal (everything below 2.1 m of the raw mesh scaled to 48%), scaled to 88% and moved 19 cm, so the felt sits at about 1.01 m.",
      "Laid the hex board (1.2 x 1.1 m) on the generated felt.",
      "Compressed with meshopt (gltfpack -cc)."
    ],
    "evidence": "docs/ai-heroes/ (scripts, reference images, generation log, comparison screenshots)",
    "triangles": 2800,
    "bytes": 64636
  },
  {
    "id": "listening-booth",
    "method": "code",
    "built_by": "Codex (library-world dispatch)",
    "tool": null,
    "model": null,
    "licence": "same as site",
    "prompt": null,
    "fixes": [],
    "triangles": 442,
    "bytes": null
  }
]
