Add Format Specification section 21 (Scenario Model 0.1) and the runtime that realizes it: the scenario director, seven trigger classes, timelines with repeats and branches, admission and concurrency control, nested ownership with bounded cleanup, and the production GC5 resource counters. Exhibit E provides a reproducible forty-minute long-scenario reference and scenario-challenge.xzbt covers the PRD 131 cases. A standalone acceptance/soak page is built by tools/build-scenario-acceptance.mjs. 252 automated checks pass. The two-hour real-duration development soak required by the GC6 schedule remains pending. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01M7dgfQ12mpM4JjSMv3inLA
340 lines
6.9 KiB
Plaintext
340 lines
6.9 KiB
Plaintext
{
|
|
"xzbt": "0.1",
|
|
"meta": {
|
|
"id": "exhibit-b",
|
|
"name": "Exhibit B — Deep Abstract Field",
|
|
"version": "0.1.0",
|
|
"description": "Procedural audiovisual reference with cadence and a temporary scenario override; final acceptance remains Phase 9."
|
|
},
|
|
"runtime": {
|
|
"seed": 42
|
|
},
|
|
"visuals": {
|
|
"scene": {
|
|
"coordinateSpace": "virtual",
|
|
"width": 960,
|
|
"height": 540,
|
|
"background": "#101d25"
|
|
},
|
|
"systems": {
|
|
"network": {
|
|
"type": "particles",
|
|
"count": 65,
|
|
"capacity": 96,
|
|
"distribution": {
|
|
"type": "rectangle",
|
|
"center": {
|
|
"x": 480,
|
|
"y": 270
|
|
},
|
|
"size": {
|
|
"width": 800,
|
|
"height": 410
|
|
}
|
|
},
|
|
"render": {
|
|
"type": "point",
|
|
"style": {
|
|
"fill": "#d8e9f5",
|
|
"pointSize": 4
|
|
}
|
|
},
|
|
"links": {
|
|
"rule": "nearest",
|
|
"count": 3,
|
|
"maxDistance": 180,
|
|
"maxLinks": 160,
|
|
"fadeWithDistance": true,
|
|
"style": {
|
|
"stroke": "#6899b7",
|
|
"strokeWidth": 1
|
|
}
|
|
},
|
|
"behaviors": [
|
|
{
|
|
"type": "noise-displace",
|
|
"amplitude": {
|
|
"x": 25,
|
|
"y": 25
|
|
},
|
|
"scale": 120,
|
|
"speed": 0.1
|
|
}
|
|
]
|
|
},
|
|
"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
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"effects": [
|
|
{
|
|
"type": "bloom",
|
|
"radius": 5,
|
|
"intensity": 0.5
|
|
}
|
|
]
|
|
},
|
|
"parameters": {
|
|
"activity": {
|
|
"type": "number",
|
|
"default": 0.4,
|
|
"min": 0,
|
|
"max": 1,
|
|
"label": "Activity"
|
|
}
|
|
},
|
|
"bindings": [
|
|
{
|
|
"source": "parameters.activity",
|
|
"target": "visuals.camera.zoom",
|
|
"scale": 0.25,
|
|
"offset": 1
|
|
}
|
|
],
|
|
"cadence": {
|
|
"intensity": {
|
|
"ref": "parameters.activity"
|
|
}
|
|
},
|
|
"audio": {
|
|
"buses": {
|
|
"ambient": {
|
|
"gain": 0.5
|
|
},
|
|
"effects": {
|
|
"gain": 0.5
|
|
}
|
|
}
|
|
},
|
|
"sounds": {
|
|
"bed": {
|
|
"name": "Distant hum",
|
|
"bus": "ambient",
|
|
"usage": [
|
|
"automatic"
|
|
],
|
|
"cadence": {
|
|
"class": "ambient"
|
|
},
|
|
"recipe": {
|
|
"mode": "continuous",
|
|
"release": "1s",
|
|
"nodes": {
|
|
"tone": {
|
|
"type": "oscillator",
|
|
"frequency": 55
|
|
},
|
|
"trim": {
|
|
"type": "gain",
|
|
"gain": 0.04
|
|
}
|
|
},
|
|
"routes": [
|
|
{
|
|
"from": "tone",
|
|
"to": "trim"
|
|
},
|
|
{
|
|
"from": "trim",
|
|
"to": "output"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"drone": {
|
|
"name": "Passing resonance",
|
|
"bus": "ambient",
|
|
"usage": [
|
|
"scenario"
|
|
],
|
|
"recipe": {
|
|
"mode": "continuous",
|
|
"release": "2s",
|
|
"nodes": {
|
|
"tone": {
|
|
"type": "oscillator",
|
|
"frequency": 165
|
|
},
|
|
"trim": {
|
|
"type": "gain",
|
|
"gain": 0.035
|
|
}
|
|
},
|
|
"routes": [
|
|
{
|
|
"from": "tone",
|
|
"to": "trim"
|
|
},
|
|
{
|
|
"from": "trim",
|
|
"to": "output"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"beat": {
|
|
"name": "Soft impulse",
|
|
"bus": "effects",
|
|
"usage": [
|
|
"automatic",
|
|
"scenario",
|
|
"manual"
|
|
],
|
|
"cadence": {
|
|
"class": "routine",
|
|
"overlap": false,
|
|
"cooldown": "3s"
|
|
},
|
|
"recipe": {
|
|
"mode": "oneshot",
|
|
"release": "50ms",
|
|
"nodes": {
|
|
"hit": {
|
|
"type": "impulse",
|
|
"duration": "8ms",
|
|
"amplitude": 0.06
|
|
}
|
|
},
|
|
"routes": [
|
|
{
|
|
"from": "hit",
|
|
"to": "output"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"scenarios": {
|
|
"disturbance": {
|
|
"name": "Temporary disturbance",
|
|
"trigger": {
|
|
"type": "random-interval",
|
|
"min": "30s",
|
|
"max": "90s"
|
|
},
|
|
"duration": "12s",
|
|
"cooldown": "20s",
|
|
"priority": 70,
|
|
"onStart": [
|
|
{
|
|
"type": "override",
|
|
"target": "parameters.activity",
|
|
"value": 0.95,
|
|
"scope": "scenario",
|
|
"transition": {
|
|
"in": "1s",
|
|
"out": "2s",
|
|
"easing": "ease-in-out"
|
|
}
|
|
},
|
|
{
|
|
"type": "sound",
|
|
"sound": "drone"
|
|
}
|
|
],
|
|
"timeline": []
|
|
}
|
|
}
|
|
}
|