{
  "assertions": [
    "motion(idle)",
    "uses(webgl)"
  ],
  "attempts": 4,
  "attribution": "\u201csimulation of slime mold growth on a substrate rendered with a realis\u2026\u201d \u2014 sketchgen entry 360, prompted by profcarroll, written by qwen3-coder:30b-a3b-q4_K_M under the control rules file. https://profcarroll.github.io/sketchgen-gallery/e/360/ Licensed CC BY 4.0.",
  "brief": "The viewer observes an organic substrate surface that is slowly covered by amorphous, colorful growth resembling a slime mold. The scene utilizes advanced three-dimensional lighting to emphasize the wet, tactile surface qualities and irregular structures of the mold. The composition dynamically expands, showing the constant, shifting nature of biological growth. The simulation's primary visual impact comes from the continuous, natural expansion and subtle texture changes of the structures over time.",
  "completion_tokens": 3231,
  "created_utc": "2026-09-16T00:52:38Z",
  "entry_id": 360,
  "executor": "qwen3-coder:30b-a3b-q4_K_M",
  "executor_prompt_version": "executor-v2",
  "gate": [
    {
      "assertions": {
        "motion(idle)": true,
        "uses(webgl)": true
      },
      "attempt": 1,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": true,
        "frame_budget": false,
        "is_looping": true,
        "sound_lib_ok": null
      },
      "completion_tokens": 1043,
      "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 69)\n\ngate exit 1: checks failed: frame_budget\n\nFixed checks that failed:\n- frame_budget = false\n    frame_budget: 138.3 ms per frame over the 120-frame idle window, budget 100 ms \u2014 batch points and lines into one shape, no sphere() per particle, no all-pairs loop\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": 138.3,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1532,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-1",
      "total_s": 31.134,
      "wall_s": 91.533
    },
    {
      "assertions": {
        "motion(idle)": true,
        "uses(webgl)": true
      },
      "attempt": 2,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": true,
        "frame_budget": false,
        "is_looping": true,
        "sound_lib_ok": null
      },
      "completion_tokens": 770,
      "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 57)\n\ngate exit 1: checks failed: frame_budget\n\nFixed checks that failed:\n- frame_budget = false\n    frame_budget: 172.7 ms per frame over the 120-frame idle window, budget 100 ms \u2014 batch points and lines into one shape, no sphere() per particle, no all-pairs loop\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": 172.7,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1735,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-2",
      "total_s": 36.633,
      "wall_s": 47.638
    },
    {
      "assertions": {},
      "attempt": 3,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": null,
        "frame_budget": false,
        "is_looping": null,
        "sound_lib_ok": null
      },
      "completion_tokens": 680,
      "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 39)\n\ngate exit 1: checks failed: frame_budget\n\nFixed checks that failed:\n- frame_budget = false\n    frame_budget: 742.6 ms per frame over the first 42 frames of the 120-frame idle window, budget 100 ms \u2014 batch points and lines into one shape, no sphere() per particle, no all-pairs loop\n    frame_budget: the run stopped at 42 of the 120 idle frames and did not finish the probes or the assertions\n",
      "exit": 1,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 742.6,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1735,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-3",
      "total_s": 51.859,
      "wall_s": 42.051
    },
    {
      "assertions": {
        "motion(idle)": true,
        "uses(webgl)": true
      },
      "attempt": 4,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": true,
        "frame_budget": true,
        "is_looping": true,
        "sound_lib_ok": null
      },
      "completion_tokens": 738,
      "evidence": null,
      "exit": 0,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 5.2,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1723,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-4",
      "total_s": 3.01,
      "wall_s": 43.421
    }
  ],
  "ghost": {
    "by": "default",
    "events": 40,
    "script": "wander"
  },
  "job_id": 361,
  "last_error": null,
  "licence": "CC BY 4.0",
  "lineage": {
    "children": [
      414,
      547
    ],
    "critique": null,
    "critique_by": null,
    "generation": 1,
    "inherits_source": false,
    "parent_entry_id": null,
    "root_entry_id": 360
  },
  "loads": [],
  "note": null,
  "off_node": [],
  "planner": "gemma4:e4b",
  "planner_prompt_version": "planner-v1",
  "process": null,
  "prompt": "simulation of slime mold growth on a substrate rendered with a realistic 3D lighting effect revealing the structure's surface qualities",
  "prompt_tokens": 6725,
  "publish_commit": "e8661c6835312511c8208e89a951b12fb6e0ab8c",
  "published_utc": "2026-09-16T01:34:49Z",
  "rules_file": "control",
  "seed": 1,
  "shape": "VM.Standard.A1.Flex 16/94",
  "source": {
    "attempts": [
      "attempt-1",
      "attempt-2",
      "attempt-3",
      "attempt-4"
    ],
    "entry": "https://profcarroll.github.io/sketchgen-gallery/e/360/",
    "index_html": "sketch/index.html",
    "repository": "https://github.com/profcarroll/sketchgen-gallery/tree/main/e/360",
    "sketch_js": "sketch/sketch.js"
  },
  "state": "published",
  "statement": "This sketch simulates the slow, organic growth of a slime mold on a substrate, using procedural techniques to create an evolving, textured surface. It employs WebGL rendering for depth and lighting effects, with particles dynamically expanding and interacting to form irregular, wet-looking structures. The visual experience emphasizes continuous motion and tactile surface qualities through subtle color shifts, layered geometry, and time-based transformations.",
  "submitted_by": "profcarroll",
  "wall_s": 224.643
}
