{
  "assertions": [
    "uses(webgl)",
    "responds(drag)",
    "motion(idle)"
  ],
  "attempts": 3,
  "attribution": "\u201ca marble race game on an isometric 3D course, move the marble to the\u2026\u201d \u2014 sketchgen entry 479, prompted by profcarroll, written by qwen3-coder:30b-a3b-q4_K_M under the treatment rules file. https://profcarroll.github.io/sketchgen-gallery/e/479/ Licensed CC BY 4.0.",
  "brief": "The canvas displays an isometric view of a multi-lane race course for a marble. The course is filled with intricate paths and obstacles, and the marble moves along these lanes toward a goal area. As the marble progresses, it leaves a visible, temporary trail of sparkly residue. The viewer interacts by controlling the marble's path, guiding it by dragging their mouse across the course to navigate the marble through the challenging race before the timer expires.",
  "completion_tokens": 3563,
  "created_utc": "2026-09-16T14:10:27Z",
  "entry_id": 479,
  "executor": "qwen3-coder:30b-a3b-q4_K_M",
  "executor_prompt_version": "executor-v2",
  "gate": [
    {
      "assertions": {
        "motion(idle)": false,
        "responds(drag)": true,
        "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": 970,
      "evidence": "gate exit 1: assertions failed: motion(idle)\n\nAssertions that failed:\n- motion(idle): idle 0->120 frames: 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": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 15.7,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2234,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-1",
      "total_s": 6.744,
      "wall_s": 103.45
    },
    {
      "assertions": {
        "motion(idle)": false,
        "responds(drag)": true,
        "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": 1128,
      "evidence": "gate exit 1: assertions failed: motion(idle)\n\nAssertions that failed:\n- motion(idle): idle 0->120 frames: 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": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 5.0,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2351,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-2",
      "total_s": 3.311,
      "wall_s": 72.013
    },
    {
      "assertions": {
        "motion(idle)": true,
        "responds(drag)": true,
        "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": 1465,
      "evidence": null,
      "exit": 0,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 7.3,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2351,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-3",
      "total_s": 3.867,
      "wall_s": 78.088
    }
  ],
  "ghost": {
    "by": "default",
    "events": 30,
    "script": "drag"
  },
  "job_id": 480,
  "last_error": null,
  "licence": "CC BY 4.0",
  "lineage": {
    "children": [
      584
    ],
    "critique": "the same multi-lane race course, and this time the marble leaves a temporary trail of sparkly residue",
    "critique_by": "gemma4:e4b",
    "generation": 1,
    "inherits_source": false,
    "parent_entry_id": 435,
    "root_entry_id": 435
  },
  "loads": [],
  "note": null,
  "off_node": [],
  "planner": "gemma4:e4b",
  "planner_prompt_version": "planner-v1",
  "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",
  "prompt_tokens": 6936,
  "publish_commit": "95d87bc86ebc2245eed254ef390dec4600621371",
  "published_utc": "2026-09-16T14:28:15Z",
  "rules_file": "treatment",
  "seed": 1,
  "shape": "VM.Standard.A1.Flex 16/94",
  "source": {
    "attempts": [
      "attempt-1",
      "attempt-2",
      "attempt-3"
    ],
    "entry": "https://profcarroll.github.io/sketchgen-gallery/e/479/",
    "index_html": "sketch/index.html",
    "repository": "https://github.com/profcarroll/sketchgen-gallery/tree/main/e/479",
    "sketch_js": "sketch/sketch.js"
  },
  "state": "published",
  "statement": "This sketch creates an isometric marble racing course with a multi-lane path, obstacles, and a goal area. The viewer controls the marble's movement by dragging their mouse across the screen, guiding it through the challenging race. As the marble moves forward along the course, it leaves behind a glowing trail of sparkles that fade over time. The experience is timed, with a 30-second countdown that adds urgency to navigation. The visual design emphasizes depth and spatial awareness through the use of 3D rendering and perspective, while the interactive element makes each playthrough unique as players must navigate around obstacles to reach the goal area. The sparkly residue effect creates a sense of motion and progress through the course.",
  "submitted_by": "profcarroll",
  "wall_s": 253.551
}
