{
  "assertions": [
    "motion(idle)",
    "uses(webgl)"
  ],
  "attempts": 2,
  "attribution": "\u201cgrant theft auto ported to p5.js. arrow keys control character or car\u2026\u201d \u2014 sketchgen entry 324, prompted by profcarroll, written by qwen3-coder:30b-a3b-q4_K_M under the control rules file. https://profcarroll.github.io/sketchgen-gallery/e/324/ Licensed CC BY 4.0.",
  "brief": "The viewer is presented with an immersive, sprawling cityscape viewed from an open perspective. Towers and buildings populate the ground, creating a detailed urban landscape. The scene is not static; the primary element of change is the dramatic interplay of light and shadow. As the simulated time progresses, the angle and length of the shadows cast by the buildings dynamically shift across the pavement and adjacent structures, giving the entire scene a cyclical, living movement.",
  "completion_tokens": 1398,
  "created_utc": "2026-09-15T20:47:11Z",
  "entry_id": 324,
  "executor": "qwen3-coder:30b-a3b-q4_K_M",
  "executor_prompt_version": "executor-v2",
  "gate": [
    {
      "assertions": {},
      "attempt": 1,
      "checks": {
        "audio_context_running": null,
        "console_clean": true,
        "frame_advancing": null,
        "frame_budget": false,
        "is_looping": null,
        "sound_lib_ok": null
      },
      "completion_tokens": 875,
      "evidence": "Names this sketch shadows (checked before the gate ran):\npreflight: your variable `height` hides p5's `height`; rename it (sketch.js line 13)\npreflight: `box()` 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 60)\npreflight: `box()` 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 70)\n\ngate exit 1: checks failed: frame_budget\n\nFixed checks that failed:\n- frame_budget = false\n    frame_budget: 394.2 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": 394.2,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1537,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-1",
      "total_s": 23.654,
      "wall_s": 86.088
    },
    {
      "assertions": {
        "motion(idle)": 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": 523,
      "evidence": null,
      "exit": 0,
      "ghost": null,
      "given": null,
      "model": "qwen3-coder:30b-a3b-q4_K_M",
      "ms_per_frame": 52.3,
      "num_ctx": null,
      "preload_s": null,
      "prompt_tokens": 1816,
      "resources_loaded": [],
      "rules_file": "control",
      "source": "attempt-2",
      "total_s": 12.702,
      "wall_s": 36.921
    }
  ],
  "ghost": {
    "by": "default",
    "events": 40,
    "script": "wander"
  },
  "job_id": 325,
  "last_error": "prompt drfit, no gameplay or interaction",
  "licence": "CC BY 4.0",
  "lineage": {
    "children": [],
    "critique": "the same sprawling, simulated open-world cityscape, and this time the buildings dynamically cast shadows based on the simulated time of day",
    "critique_by": "gemma4:e4b",
    "generation": 4,
    "inherits_source": false,
    "parent_entry_id": 285,
    "root_entry_id": 183
  },
  "loads": [],
  "note": null,
  "off_node": [],
  "planner": "gemma4:e4b",
  "planner_prompt_version": "planner-v1",
  "process": null,
  "prompt": "grant theft auto ported to p5.js. arrow keys control character or car. spacebar to attack.\n\nRevise: the same open-world cityscape, and this time the attack leaves behind scorch marks on the pavement\n\nRevise: the same open-world cityscape, and this time the buildings dynamically cast shadows based on the simulated time of day\n\nRevise: start over and go back to the original prompt, too much prompt drift\n\nRevise: the same sprawling, simulated open-world cityscape, and this time the buildings dynamically cast shadows based on the simulated time of day",
  "prompt_tokens": 3353,
  "publish_commit": "65ea75e719379bc2c35b277f3893cff78d2b7b00",
  "published_utc": "2026-09-16T00:32:54Z",
  "rules_file": "control",
  "seed": 1,
  "shape": "VM.Standard.A1.Flex 16/94",
  "source": {
    "attempts": [
      "attempt-1",
      "attempt-2"
    ],
    "entry": "https://profcarroll.github.io/sketchgen-gallery/e/324/",
    "index_html": "sketch/index.html",
    "repository": "https://github.com/profcarroll/sketchgen-gallery/tree/main/e/324",
    "sketch_js": "sketch/sketch.js"
  },
  "state": "rejected",
  "statement": "This sketch renders an immersive urban landscape using p5.js's WEBGL mode, where buildings of varying heights are arranged in a grid across the scene. The composition simulates a dynamic day-night cycle through the shifting angle of a directional light source that acts as the sun, casting moving shadows beneath each structure. As time progresses, the interplay between light and shadow creates a living, evolving cityscape that changes continuously without any user input. The visual effect emphasizes the cyclical nature of urban environments, where the passage of time is reflected not just in the sky but in how light interacts with architecture.",
  "submitted_by": "profcarroll",
  "wall_s": 123.009
}
