{"submission_id":"6c8fc45e-f285-4f09-99fe-660c0cb8a0e3","submission_revision_id":"697543af-7440-47a1-9295-77e07502afe3","revision_version":44,"submission_status":"submitted","submitted_at":"2026-09-20T21:20:31.083176Z","submitter_name":"Chase Broderick","submitter_email":"chaseburnsbroderick@gmail.com","task":{"status":"submitted","version":44,"extra_fields":{"drive_link":"Files uploaded directly to portal","difficulty_self_test":{"model":"Gemini 3.1 Pro Preview","harness":"OpenClaw","estimated_score":"<1%"}},"submitted_at":"2026-09-20T21:20:31.083176+00:00","industry_domain":"Visual & Media Arts","task_short_name":"shakespeare_procedural_asset_assembly","operating_system":"Linux","task_description":"Expected Completion Time: 60-120 minutes\n\nObjective: Act as a Technical Level Designer. Engineer a Python script using the Blender API (bpy) to procedurally assemble a 3D scene (Kitbashing) for Shakespeare's Pericles by mathematically importing and placing pre-made 3D assets based exclusively on the provided JSON design document. (The raw play text is provided only as optional narrative context and is not used for semantic selection).\n\nStarting State: \n1. A structural mapping file (`design_document.json`). This JSON acts as the absolute and authoritative source of truth for the asset selection and spatial requirements.\n2. A local `asset_library_full/` folder containing 21 lightweight primitive proxy `.obj` files representing various props across the entire play (e.g., ships, tables, thrones, coffins). Note: These are intentionally low-poly primitive shapes designed for programmatic spatial reasoning and coordinate math testing, not visual fidelity.\n3. The raw play text (`pericles_script.txt`), provided purely for optional narrative flavor.\n\nInstructions & Rules:\n1. Procedural Geometry: Read `design_document.json` and write a Python script (`generate_kitbash_scene.py`) that uses `bpy` to generate a 25x25m procedural floor plane exactly centered at the origin (0,0,0).\n2. Data-Driven Import: You must read `design_document.json` to determine which architectural assets belong in the scene. Write Python logic to select and import ONLY the exact `.obj` files specified in the JSON from the 21-file `asset_library_full/` directory. Do not import unlisted distractor files. \n3. Spatial Logic & Translation: You are not provided with hardcoded coordinates. You must write mathematical logic to place your imported assets into a coherent architectural layout.\n    - Your logic must place the imported architectural supports (e.g., pillars/arches) symmetrically around the origin.\n    - Your logic must place the imported throne reasonably on the floor plane.\n    - ALL imported assets must have exact Z=0 floor contact (resting directly on the floor).\n    - ALL imported assets must be completely contained within the 25x25m floor boundary.\n    - ALL imported assets must not physically overlap each other.\n4. Artifact Export: Your script must save the fully assembled scene as a Blender file named exactly `pericles_kitbash_scene.blend` in the root execution directory.","software_licensing":"Free/Open Source","evaluation_criteria":null,"verification_method":"The task is evaluated out of 100 points, with a strict Pass/Fail threshold requiring a perfect 100/100 score. Failure of ANY spatial or import condition instantly fails the evaluation.\n1. Forbidden Asset & Centering Validation (Pass/Fail Gate): The automated headless grading script (`kitbash_grader.py`) verifies the 25x25m floor plane is exactly centered at (0,0,0) across all axes. It also scans the Blender outliner and fails the agent if *any* unlisted distractor assets (such as `wooden_table`, `ship_wheel`, etc.) were imported.\n2. Pipeline Execution & Genuine Import (20 Points): The script must successfully execute, load the exact expected base scene counts (1 throne, 4 pillars, 1 arch), verify the geometry of *every* imported instance against the exact source topology and 3D bounding box dimensions (rejecting primitive cubes or fabricated meshes), and save a valid `.blend` file.\n3. Data-Parsing Behavior Check (20 Points): The headless grading script evaluates the Python script's resistance to hardcoding by running it multiple times against undisclosed mutated versions of `design_document.json`. The agent's script must dynamically adjust the counts of assets based on the mutated JSON (e.g., 5 pillars vs 3 pillars) to prove true data-driven behavior.\n4. Spatial Symmetry, Containment & Geometry Check (60 Points): The grader mathematically evaluates constraints using world-space bounding boxes applied strictly to Mesh objects:\n   - Floor must be exactly 25x25m (+10 points).\n   - ALL imported assets must have a minimum Z-bounding box of exactly 0 to prove floor contact (+10 points).\n   - ALL imported assets must be strictly contained within the floor's XY boundary (+10 points).\n   - ALL imported assets must not overlap each other (+10 points).\n   - The Cartesian coordinates of the imported pillar meshes must form a true symmetric geometric rectangle centered at the origin (+20 points). \n\nSelf-test performed on OpenClaw using google/gemini-3.1-pro-preview using the pinned Blender 3.3.21 environment. The model successfully output a Python script that passed the initial generation step. However, it failed the spatial management pipeline completely. \n\nDespite successfully importing genuine OBJ geometry and matching base counts (passing Phase 1) and dynamically parsing the JSON (passing Phase 2), the agent lacked the spatial reasoning required to write mathematical placement logic. The floor was instantiated but left at the default 2x2m size instead of 25x25m. All imported assets were lazily stacked unsymmetrically at the exact origin point (0,0,0) and elevated on the Z-axis, causing massive bounding-box overlaps, failing Z=0 contact, and failing the bounding-box symmetry checks. Because it scored 10/60 on Phase 3 (Spatial Symmetry & Geometry), it failed the automated grader with a final score of 50/100, placing this task firmly in the highly difficult <1% tier. \n\n(The terminal output log matching this exact rubric is provided in the uploaded `SELF_TEST_EVIDENCE_EXPANDED.txt` attachment).","software_and_version":"OS Agnostic / Linux (Requires exact runtime: Blender 3.3.21 and its bundled Python 3.10)","specific_requirements":null,"expected_completion_time":null},"files":[{"file_id":"4944693b-3351-43ea-8ead-cb59e18cf02b","filename":"design_document.json","category":"input_materials","content_type":"application/json","size_bytes":815},{"file_id":"8ed37d27-78aa-4cb6-b697-911f535f3412","filename":"asset_library_full.zip","category":"input_materials","content_type":"application/zip","size_bytes":4432},{"file_id":"6ca1ac1d-aa05-4464-aaf9-f2fca6461553","filename":"pericles_script.txt","category":"input_materials","content_type":"text/plain","size_bytes":106219},{"file_id":"81263944-310a-4c92-86c2-2d0fec5b6d7b","filename":"pericles_kitbash_scene.blend","category":"reference_output","content_type":"application/octet-stream","size_bytes":574332},{"file_id":"23bd4e0e-283f-43a2-875f-9104ec13ce4a","filename":"GOLDEN_REFERENCE_VALIDATION_LOG.txt","category":"difficulty_self_test_evidence","content_type":"text/plain","size_bytes":1151},{"file_id":"5ebce605-b91a-4478-81a8-f4695e9b12e1","filename":"SELF_TEST_EVIDENCE_EXPANDED.txt","category":"difficulty_self_test_evidence","content_type":"text/plain","size_bytes":927},{"file_id":"c5768a7b-3544-402f-b629-84482aa3fa94","filename":"kitbash_grader.py","category":"reference_output","content_type":"text/x-python-script","size_bytes":8882}],"deep_review":{"overall_verdict":"Accept","review_text":"**Overall Verdict:** Accept — The submission is complete, internally coherent, safely reachable, and supported by a valid reference scene and objective automated evaluation.\n\n**Completeness Check:**\n- Instruction: Complete — Required script and Blender artifact names, authoritative data source, import restrictions, spatial constraints, and pass criteria are explicit.\n- Inputs: Complete — The valid JSON specifies one throne, four pillars, and one arch; the safe ZIP contains all 21 declared OBJ assets; the optional play text is readable and structurally complete.\n- Toolchain: Complete — Blender 3.3.21, bundled Python, Linux compatibility, and required `bpy` workflow are clearly identified without external services or commercial dependencies.\n- Reference output: Complete — The Blender 3.3 file contains exactly the floor and six required asset instances. Static parsing confirms a 25×25 floor at the origin, unit-scale source geometry, floor contact, nonoverlapping placements, and pillars at the four symmetric `(±8, ±8)` positions.\n- Rubric: Complete — The grader covers artifact generation, forbidden geometry, names, source topology, dimensions, two JSON mutations, floor geometry, contact, containment, overlap, and pillar symmetry, with the stated perfect-score threshold.\n\n**File and Task Reachability:**\nAttachment classification: `reachable`. Task classification: `reachable`. All attachments were inspected: `design_document.json`, `asset_library_full.zip`, `pericles_script.txt`, `pericles_kitbash_scene.blend`, `GOLDEN_REFERENCE_VALIDATION_LOG.txt`, `SELF_TEST_EVIDENCE_EXPANDED.txt`, and `kitbash_grader.py`. The ZIP is unencrypted, traversal-free, and contains 21 regular OBJ files; all members passed integrity checks. No attachment was omitted, although the optional play text was structurally and representatively sampled rather than read line by line. The reviewer environment lacked Blender, so the grader was not executed; the scene was instead inspected through non-executing binary and SDNA parsing, and its observed geometry agrees with the golden 100/100 log. External provenance and public-version availability were not independently searched under the review constraints.\n\nThe end-to-end path is viable: parse the JSON, import only its named OBJ assets, calculate valid placements, create the floor, save the requested script and Blender file, then run the supplied Blender grader against the base and mutated JSON cases. License keys, accounts, tokens, and other credentials are not required from the contributor. Confidential, proprietary, or internal material may be evaluated as submitted evidence without requiring additional disclosure.\n\n**Special Screening:**\nNone\n\n**Recommended Changes:**\nThe submission already provides valid inputs, a demonstrably conforming reference scene, and a usable evaluator. No material changes are required. As optional evaluator hardening, apply topology and spatial checks to the mutated-JSON runs as well as count checks, and continue keeping the reference scene, validation logs, and grader hidden from solvers.","reviewed_at":"2026-09-20T21:29:45.865915Z"},"claim":null}