{
  "assertions": [
    "responds(drag)",
    "no_motion"
  ],
  "attempts": 3,
  "attribution": "\u201ca fun cursor follow toy Revise: the same particle system, and this ti\u2026\u201d \u2014 sketchgen entry 938, prompted by profcarroll, written by qwen3-coder:30b-a3b-q4_K_M under the treatment rules file. https://profcarroll.github.io/sketchgen-gallery/e/938/ Licensed CC BY 4.0.",
  "brief": "Under the mouse cursor, thousands of brightly colored particles trail dynamically, creating a continuous, ephemeral wake. As the cursor moves across the canvas, these particles quickly scatter and fade, but before they vanish, they momentarily stain the background. This leaves behind a faint, residual line of deep ink that hangs on the canvas, slowly dissipating over time and subtly darkening the passage the cursor has recently made. The drawing is entirely dependent on the user's movement.",
  "completion_tokens": 2209,
  "created_utc": "2026-09-18T22:34:38Z",
  "entry_id": 938,
  "executor": "qwen3-coder:30b-a3b-q4_K_M",
  "executor_prompt_version": "executor-v3",
  "gate": [
    {
      "assertions": {
        "no_motion": false,
        "responds(drag)": 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": 672,
      "evidence": "gate exit 1: assertions failed: no_motion\n\nAssertions that failed:\n- no_motion: idle 0->120 frames: mean abs diff 0.2173/255, 4356 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": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2388,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-1",
      "total_s": 1.367,
      "wall_s": 49.106
    },
    {
      "assertions": {
        "no_motion": false,
        "responds(drag)": true
      },
      "attempt": 2,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": null,
        "frame_budget": true,
        "is_looping": false,
        "sound_lib_ok": null
      },
      "completion_tokens": 692,
      "evidence": "gate exit 1: assertions failed: no_motion\n\nAssertions that failed:\n- no_motion: idle 0->120 frames: mean abs diff 0.2173/255, 4356 of 1152000 pixels changed\n",
      "exit": 1,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 3.0,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2506,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-2",
      "total_s": 2.849,
      "wall_s": 51.414
    },
    {
      "assertions": {
        "no_motion": true,
        "responds(drag)": true
      },
      "attempt": 3,
      "checks": {
        "audio_context_running": null,
        "console_clean": false,
        "frame_advancing": true,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": null
      },
      "completion_tokens": 845,
      "evidence": "gate exit 1: checks failed: console_clean\n\nFixed checks that failed:\n- console_clean = false\n\nConsole (2 error lines, first 2 shown):\n- [pageerror] userStartAudio is not defined\n- [pageerror] userStartAudio is not defined\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": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2458,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-3",
      "total_s": 1.4,
      "wall_s": 57.143
    }
  ],
  "ghost": {
    "by": "default",
    "events": 30,
    "script": "drag"
  },
  "job_id": 940,
  "last_error": null,
  "licence": "CC BY 4.0",
  "lineage": {
    "children": [
      983
    ],
    "critique": "the same dynamic, ephemeral trail of particles, and this time they briefly leave a faint, residual line of ink on the canvas where they passed.",
    "critique_by": "gemma4:e4b",
    "generation": 7,
    "inherits_source": false,
    "parent_entry_id": 880,
    "root_entry_id": 543
  },
  "loads": [],
  "note": null,
  "off_node": [],
  "planner": "gemma4:e4b",
  "planner_prompt_version": "planner-v1+lenient",
  "process": null,
  "prompt": "a fun cursor follow toy\n\nRevise: the same particle system, and this time the particles organize into a visible, dissipating wake directly trailing the cursor.\n\nRevise: the same particle system, and this time the particles change color from a bright primary hue at the cursor to a soft pastel shade before fully fading.\n\nRevise: the same dynamic and ephemeral wake of particles, and this time the particles grow noticeably larger in size from the moment of creation until they fully fade away.\n\nRevise: the same dynamic, dissipating trail of particles, and this time the particles momentarily form a noticeable ring shape upon reaching peak size.\n\nRevise: the same visible, dynamic wake of dissipating particles, and this time the particles leave behind a smoky, transparent afterglow that fades slightly slower than the particles themselves.\n\nRevise: animate the background so that the cursor toy interacts with it as it moves\n\nRevise: the same dynamic, ephemeral trail of particles, and this time they briefly leave a faint, residual line of ink on the canvas where they passed.",
  "prompt_tokens": 7352,
  "publish_commit": "c7379ec69d6203af65ea96e7188a27f3c4627eb0",
  "published_utc": "2026-09-19T03:55:17Z",
  "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/938/",
    "index_html": "sketch/index.html",
    "repository": "https://github.com/profcarroll/sketchgen-gallery/tree/main/e/938",
    "sketch_js": "sketch/sketch.js"
  },
  "state": "published",
  "statement": "This sketch creates an interactive particle system that responds to mouse movement. Thousands of colorful particles emerge from the cursor position and scatter outward with physics-based motion, leaving a lingering trail that gradually fades. The particles are dynamically generated and managed in a fixed pool, creating an ephemeral wake effect. As the cursor moves across the canvas, particles quickly disperse and fade, but before disappearing they briefly stain the background with their color, forming a persistent visual trace. The system uses a combination of physics simulation and temporal fading to create a continuous, evolving pattern that captures the essence of motion through particle dynamics.",
  "submitted_by": "profcarroll",
  "wall_s": 157.663
}
