{
  "assertions": [
    "motion(idle)",
    "responds(drag)"
  ],
  "attempts": 3,
  "attribution": "\u201ca fun cursor follow toy Revise: the same particle system, and this ti\u2026\u201d \u2014 sketchgen entry 864, prompted by profcarroll, written by qwen3-coder:30b-a3b-q4_K_M under the treatment rules file. https://profcarroll.github.io/sketchgen-gallery/e/864/ Licensed CC BY 4.0.",
  "brief": "When the mouse moves across the canvas, it generates a dynamic wake of shimmering particles. These particles instantly trail the cursor, appearing in vivid form before dissipating. As they fade into the background, they leave behind a faint, smoky, and transparent afterglow. This soft residue persists longer than the actual particles, creating an ethereal, visibly dissipating trail that follows and reflects the entire path of the cursor\u2019s movement.",
  "completion_tokens": 1953,
  "created_utc": "2026-09-18T10:36:12Z",
  "entry_id": 864,
  "executor": "qwen3-coder:30b-a3b-q4_K_M",
  "executor_prompt_version": "executor-v2",
  "gate": [
    {
      "assertions": {
        "motion(idle)": 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": 640,
      "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": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2207,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-1",
      "total_s": 2.239,
      "wall_s": 43.165
    },
    {
      "assertions": {
        "motion(idle)": false,
        "responds(drag)": 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": 818,
      "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": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2324,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-2",
      "total_s": 1.38,
      "wall_s": 54.234
    },
    {
      "assertions": {
        "motion(idle)": false,
        "responds(drag)": 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": 495,
      "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": 0.1,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 2324,
      "resources_loaded": [],
      "rules_file": "treatment",
      "source": "attempt-3",
      "total_s": 1.377,
      "wall_s": 24.107
    }
  ],
  "ghost": {
    "by": "default",
    "events": 30,
    "script": "drag"
  },
  "job_id": 865,
  "last_error": null,
  "licence": "CC BY 4.0",
  "lineage": {
    "children": [
      880
    ],
    "critique": "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.",
    "critique_by": "gemma4:e4b",
    "generation": 5,
    "inherits_source": false,
    "parent_entry_id": 814,
    "root_entry_id": 543
  },
  "loads": [],
  "note": null,
  "off_node": [],
  "planner": "gemma4:e4b",
  "planner_prompt_version": "planner-v1",
  "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.",
  "prompt_tokens": 6855,
  "publish_commit": "6aa0d8b23f131a0cc2ef33d3647ed03b975a6a70",
  "published_utc": "2026-09-18T14:52:44Z",
  "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/864/",
    "index_html": "sketch/index.html",
    "repository": "https://github.com/profcarroll/sketchgen-gallery/tree/main/e/864",
    "sketch_js": "sketch/sketch.js"
  },
  "state": "published",
  "statement": "This sketch creates a dynamic particle trail that follows the mouse cursor as it moves across the canvas. The particles appear vividly at the cursor's position and then gradually fade out while shrinking, leaving behind a lingering afterglow effect. The system maintains a fixed maximum number of particles to ensure smooth performance, with each particle having its own fading and scaling behavior. The result is an ethereal, dissipating trail that reflects the entire path of mouse movement, creating a visually pleasing and responsive interactive experience.",
  "submitted_by": "profcarroll",
  "wall_s": 121.506
}
