Fourteen visual challenge fixtures and the first visuals for reference exhibits A through D, all executing without a line of subject-specific renderer code — which is the claim slice 4g exists to test. A subject the engine needs special handling for is a subject the format cannot express. The standalone CLI validator no longer disagrees with the production one. It had been falling through to ERR_UNSUPPORTED_TARGET for every `visuals.*` binding target, so legal exhibits — including the committed minimal-visual fixture — failed the CLI while passing the runtime. The four section 8.1 visual target families are now recognized in both, and a test runs the CLI validator across every exhibit and challenge fixture so the two paths cannot drift apart again. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ShxxFqFmCUDQnQvFNm4TKy
114 lines
2.1 KiB
Plaintext
114 lines
2.1 KiB
Plaintext
{
|
|
"xzbt": "0.1",
|
|
"meta": {
|
|
"id": "deep-parallax-starfield",
|
|
"name": "Deep parallax starfield",
|
|
"version": "1.0.0",
|
|
"description": "PRD 130 challenge 1; generic visual primitives only."
|
|
},
|
|
"runtime": {
|
|
"seed": 4200
|
|
},
|
|
"visuals": {
|
|
"scene": {
|
|
"coordinateSpace": "virtual",
|
|
"width": 960,
|
|
"height": 540,
|
|
"background": "#101d25"
|
|
},
|
|
"layers": {
|
|
"far": {
|
|
"parallax": 0.2
|
|
},
|
|
"near": {
|
|
"parallax": 1
|
|
}
|
|
},
|
|
"camera": {
|
|
"projection": "perspective",
|
|
"focalLength": 1000
|
|
},
|
|
"automation": [
|
|
{
|
|
"target": "camera.x",
|
|
"loop": {
|
|
"mode": "ping-pong"
|
|
},
|
|
"interpolation": "smooth",
|
|
"points": [
|
|
{
|
|
"at": "0ms",
|
|
"value": 400
|
|
},
|
|
{
|
|
"at": "12s",
|
|
"value": 570
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"systems": {
|
|
"far": {
|
|
"type": "particles",
|
|
"count": 250,
|
|
"capacity": 256,
|
|
"distribution": {
|
|
"type": "uniform",
|
|
"min": {
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"max": {
|
|
"x": 960,
|
|
"y": 540
|
|
}
|
|
},
|
|
"render": {
|
|
"type": "point",
|
|
"style": {
|
|
"fill": "#8c9ebf",
|
|
"pointSize": 2
|
|
}
|
|
},
|
|
"layer": "far",
|
|
"z": {
|
|
"random": {
|
|
"min": 300,
|
|
"max": 1200
|
|
}
|
|
}
|
|
},
|
|
"near": {
|
|
"type": "particles",
|
|
"count": 90,
|
|
"capacity": 256,
|
|
"distribution": {
|
|
"type": "uniform",
|
|
"min": {
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"max": {
|
|
"x": 960,
|
|
"y": 540
|
|
}
|
|
},
|
|
"render": {
|
|
"type": "point",
|
|
"style": {
|
|
"fill": "#ecdfc1",
|
|
"pointSize": 3
|
|
}
|
|
},
|
|
"layer": "near",
|
|
"z": {
|
|
"random": {
|
|
"min": 0,
|
|
"max": 200
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|