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
127 lines
2.8 KiB
Plaintext
127 lines
2.8 KiB
Plaintext
{
|
|
"xzbt": "0.1",
|
|
"meta": {
|
|
"id": "morphing-art",
|
|
"name": "Morphing geometric art",
|
|
"version": "1.0.0",
|
|
"description": "PRD 130 challenge 11; generic visual primitives only."
|
|
},
|
|
"runtime": {
|
|
"seed": 4210
|
|
},
|
|
"visuals": {
|
|
"scene": {
|
|
"coordinateSpace": "virtual",
|
|
"width": 960,
|
|
"height": 540,
|
|
"background": "#101d25"
|
|
},
|
|
"systems": {
|
|
"morph": {
|
|
"type": "graphic",
|
|
"content": {
|
|
"shape": {
|
|
"type": "spline",
|
|
"points": [
|
|
{
|
|
"x": 100,
|
|
"y": 250
|
|
},
|
|
{
|
|
"x": 195,
|
|
"y": 344.2081569929845
|
|
},
|
|
{
|
|
"x": 290,
|
|
"y": 225.72359530745103
|
|
},
|
|
{
|
|
"x": 385,
|
|
"y": 162.0476051788654
|
|
},
|
|
{
|
|
"x": 480,
|
|
"y": 296.94076835816776
|
|
},
|
|
{
|
|
"x": 575,
|
|
"y": 325.85627569923156
|
|
},
|
|
{
|
|
"x": 670,
|
|
"y": 183.51190467861346
|
|
},
|
|
{
|
|
"x": 765,
|
|
"y": 191.27697433748185
|
|
},
|
|
{
|
|
"x": 860,
|
|
"y": 331.6203724113671
|
|
}
|
|
],
|
|
"style": {
|
|
"stroke": "#ecbf85",
|
|
"strokeWidth": 4
|
|
},
|
|
"behaviors": [
|
|
{
|
|
"type": "morph",
|
|
"to": "target",
|
|
"duration": "6s",
|
|
"loop": "ping-pong"
|
|
}
|
|
]
|
|
},
|
|
"target": {
|
|
"type": "spline",
|
|
"points": [
|
|
{
|
|
"x": 100,
|
|
"y": 420
|
|
},
|
|
{
|
|
"x": 195,
|
|
"y": 363.24149524059965
|
|
},
|
|
{
|
|
"x": 290,
|
|
"y": 235.91968579603693
|
|
},
|
|
{
|
|
"x": 385,
|
|
"y": 134.38917869744083
|
|
},
|
|
{
|
|
"x": 480,
|
|
"y": 135.48623754987796
|
|
},
|
|
{
|
|
"x": 575,
|
|
"y": 238.38063008538305
|
|
},
|
|
{
|
|
"x": 670,
|
|
"y": 365.2039313913952
|
|
},
|
|
{
|
|
"x": 765,
|
|
"y": 419.97879545751226
|
|
},
|
|
{
|
|
"x": 860,
|
|
"y": 361.25269717983815
|
|
}
|
|
],
|
|
"style": {
|
|
"stroke": "#82b7c7",
|
|
"strokeWidth": 2
|
|
},
|
|
"visible": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|