{
  "assertions": [
    "motion(idle)",
    "responds(click)",
    "uses(webgl)"
  ],
  "attempts": 3,
  "attribution": "\u201ca marble race game on an isometric 3D course, move the marble to the\u2026\u201d \u2014 sketchgen entry 1431, prompted by profcarroll, written by qwen3-coder:30b-a3b-q4_K_M under the treatment rules file. https://profcarroll.github.io/sketchgen-gallery/e/1431/ Licensed CC BY 4.0.",
  "brief": "The canvas displays a multi-lane, isometric three-dimensional racetrack where multiple marbles compete. The track guides the marbles toward a visible finish goal. As the marbles travel, they leave a luminous, glowing trail of light that briefly persists in their wake. The game is competitive, and the user must guide the marble to the goal before a visible timer runs out.",
  "completion_tokens": 3673,
  "created_utc": "2026-09-23T10:03:19Z",
  "entry_id": 1431,
  "executor": "qwen3-coder:30b-a3b-q4_K_M",
  "executor_prompt_version": "executor-v3",
  "gate": [
    {
      "assertions": {
        "motion(idle)": true,
        "responds(click)": false,
        "uses(webgl)": true
      },
      "attempt": 1,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": true,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": null
      },
      "completion_tokens": 1227,
      "evidence": "Names this sketch shadows (checked before the gate ran):\npreflight: `sphere()` is called inside a loop inside `draw()`, so this sketch builds one lit mesh per item per frame; draw the items as one `beginShape(POINTS)` or build the mesh once in `setup()` with `buildGeometry()` (sketch.js line 64)\n\ngate exit 1: assertions failed: responds(click)\n\nAssertions that failed:\n- responds(click): click at canvas centre, 30 frames after: mean abs diff 0.0000/255, 0 of 1152000 pixels changed\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (86) with the end of it (122); at load it was 0\n",
      "exit": 1,
      "ghost": {
        "events": 16,
        "ms": 3320,
        "played": 16,
        "script": "click",
        "source": "default"
      },
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 13.6,
      "num_ctx": 16384,
      "preload_s": 0.047,
      "prompt_tokens": 2403,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-1",
      "total_s": 8.765,
      "wall_s": 76.315
    },
    {
      "assertions": {
        "motion(idle)": true,
        "responds(click)": false,
        "uses(webgl)": true
      },
      "attempt": 2,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": true,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": null
      },
      "completion_tokens": 1213,
      "evidence": "Names this sketch shadows (checked before the gate ran):\npreflight: `sphere()` is called inside a loop inside `draw()`, so this sketch builds one lit mesh per item per frame; draw the items as one `beginShape(POINTS)` or build the mesh once in `setup()` with `buildGeometry()` (sketch.js line 65)\n\ngate exit 1: assertions failed: responds(click)\n\nAssertions that failed:\n- responds(click): click at canvas centre, 30 frames after: mean abs diff 0.0000/255, 0 of 1152000 pixels changed\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (86) with the end of it (122); at load it was 0\n",
      "exit": 1,
      "ghost": {
        "events": 16,
        "ms": 3320,
        "played": 16,
        "script": "click",
        "source": "default"
      },
      "given": {
        "kind": "previous",
        "lines": 157,
        "sha256": "d46955e1984b286d65d622f35d5f65dce85f3d3a1d0a3449df940f2b9eb905a3",
        "shown": true
      },
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 13.5,
      "num_ctx": 16384,
      "preload_s": 0.046,
      "prompt_tokens": 3718,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-2",
      "total_s": 8.578,
      "wall_s": 107.732
    },
    {
      "assertions": {
        "motion(idle)": true,
        "responds(click)": false,
        "uses(webgl)": true
      },
      "attempt": 3,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": true,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": null
      },
      "completion_tokens": 1233,
      "evidence": "Names this sketch shadows (checked before the gate ran):\npreflight: `sphere()` is called inside a loop inside `draw()`, so this sketch builds one lit mesh per item per frame; draw the items as one `beginShape(POINTS)` or build the mesh once in `setup()` with `buildGeometry()` (sketch.js line 65)\n\ngate exit 1: assertions failed: responds(click)\n\nAssertions that failed:\n- responds(click): click at canvas centre, 30 frames after: mean abs diff 0.0000/255, 0 of 1152000 pixels changed\n\nRuntime state the gate read:\n- frame_advancing compares frameCount at frame 84 of the 120-frame idle window (86) with the end of it (122); at load it was 0\n",
      "exit": 1,
      "ghost": {
        "events": 16,
        "ms": 3320,
        "played": 16,
        "script": "click",
        "source": "default"
      },
      "given": {
        "kind": "previous",
        "lines": 158,
        "sha256": "d9477ab8b732818e2d584d29f136dc8911f58b2fe8fb8122053dcc1082db295f",
        "shown": true
      },
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 12.6,
      "num_ctx": 16384,
      "preload_s": 0.046,
      "prompt_tokens": 3719,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-3",
      "total_s": 8.577,
      "wall_s": 108.765
    }
  ],
  "ghost": {
    "by": "default",
    "events": 40,
    "script": "wander"
  },
  "job_id": 1442,
  "last_error": "rejected by operator",
  "licence": "CC BY 4.0",
  "lineage": {
    "children": [],
    "critique": null,
    "critique_by": null,
    "generation": 1,
    "inherits_source": false,
    "parent_entry_id": null,
    "root_entry_id": 1431
  },
  "loads": [],
  "note": null,
  "off_node": [],
  "planner": "gemma4:e4b",
  "planner_prompt_version": "planner-v2",
  "process": null,
  "prompt": "a marble race game on an isometric 3D course, move the marble to the goal before the timer runs out\n\nRevise: the same multi-lane race course, and this time the marble leaves a temporary trail of sparkly residue\n\nRevise: the same isometric view of a multi-lane race course for a marble, and this time the marble leaves a visible, solid bioluminescent path instead of sparkly residue\n\nRevise: the same isometric view of a multi-lane race course for a marble, and this time the bioluminescent path also attracts and glows from scattered iridescent specks of debris.\n\nRevise: the same isometric, multi-lane racetrack hosting a competitive marble race, and this time the marbles leave a glowing, transient trail of light in their wake.",
  "prompt_tokens": 9840,
  "publish_commit": "994041685ebbc34e9f11096dc8b27580b38a2fac",
  "published_utc": "2026-09-24T02:09:16Z",
  "rules_file": "treatment",
  "seed": 1,
  "shape": "VM.Standard.A1.Flex 16/96",
  "source": {
    "attempts": [
      "attempt-1",
      "attempt-2",
      "attempt-3"
    ],
    "entry": "https://profcarroll.github.io/sketchgen-gallery/e/1431/",
    "index_html": "sketch/index.html",
    "repository": "https://github.com/profcarroll/sketchgen-gallery/tree/main/e/1431",
    "sketch_js": "sketch/sketch.js"
  },
  "state": "rejected",
  "statement": "This sketch presents a competitive isometric racetrack game where three marbles navigate a multi-lane course toward a glowing finish line. The scene uses WebGL rendering to create a three-dimensional perspective with proper lighting and depth. Each marble leaves a luminous trail that fades as it moves, creating a sense of motion and history in the race. The game includes a countdown timer that adds urgency to the competition. The visual design emphasizes clean lines, contrasting colors, and glowing effects to make the racing elements stand out against a dark background. Performance is optimized to maintain smooth animation even with multiple moving objects and trails, using lower-detail sphere geometry and efficient trail rendering techniques.",
  "submitted_by": "profcarroll",
  "wall_s": 292.812
}
