Files
XZBT-NGN/test-fixtures/evidence/step5-closure-haunted-house.json
T
2026-09-14 13:01:45 -07:00

18 lines
27 KiB
JSON

{
"capturedAt": "2026-09-14T19:57:02.871Z",
"checks": [
{
"phase": "held Manifest",
"snapshot": "- banner:\n - heading \"XZBT-NGN Exhibit Engine\" [level=1]\n - paragraph: Contract 5.2 · One exhibit at a time\n- main:\n - heading \"Connection\" [level=2]\n - generic: Exhibit URL (same origin)\n - textbox \"Exhibit URL (same origin)\":\n - /placeholder: /public/exhibits/example/index.html\n - text: /test-fixtures/reference-exhibits/haunted-house/index.html\n - button \"Load exhibit\"\n - button \"Reconnect\"\n - button \"Disconnect\"\n - paragraph: Enter a trusted exhibit's local served path or a URL on this origin. Load exhibit also switches exhibits. Reconnect starts a new session, or reloads the last exhibit after disconnect.\n - status: connected · synchronized\n - paragraph: Haunted House · 1.0.0 · Contract 5.2\n - paragraph: \"Exhibit location: http://127.0.0.1:4173/test-fixtures/reference-exhibits/haunted-house/index.html\"\n - iframe:\n - banner:\n - heading \"Haunted House\" [level=1]\n - generic: Fifth room — live haunt\n - generic: host attached\n - main:\n - generic \"Haunted house room view\"\n - complementary:\n - heading \"Presence\" [level=2]\n - generic: Room\n - combobox \"Room\":\n - option \"Foyer\"\n - option \"Library\" [selected]\n - option \"Cellar\"\n - option \"Attic\"\n - option \"Nursery\"\n - generic: Spirit\n - combobox \"Spirit\":\n - option \"Restless\" [selected]\n - option \"Vengeful\"\n - option \"Mourning\"\n - option \"Mischievous\"\n - generic: Haunt level\n - generic: 100%\n - slider \"Haunt level 100%\"\n - heading \"Atmosphere\" [level=2]\n - generic: Fog density\n - generic: 25%\n - slider \"Fog density 25%\"\n - generic: Candlelight\n - generic: 55%\n - slider \"Candlelight 55%\"\n - text: \"Audio engine:\"\n - strong: available\n - button \"Audio on\" [pressed]\n - generic: Simulation\n - button \"Resume\" [pressed]\n - heading \"Actions\" [level=2]\n - button \"Moan\"\n - button \"Slam door\"\n - button \"Manifest\"\n - button \"Calm\"\n - contentinfo:\n - generic: House\n - generic: The apparition manifests fully.\n - heading \"Exhibit controls (13)\" [level=2]\n - generic \"Capabilities\"\n - paragraph: Reported values are authoritative. New values are drafts; select Set or Invoke to submit. Rediscovery resets drafts.\n - heading \"room\" [level=3]\n - article:\n - heading \"Room\" [level=3]\n - code: room.current\n - paragraph: selection · readable · writable\n - status: \"Reported value: \\\"library\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - combobox \"New value\":\n - option \"Foyer\"\n - option \"Library\" [selected]\n - option \"Cellar\"\n - option \"Attic\"\n - option \"Nursery\"\n - button \"Set\"\n - article:\n - heading \"Spirit\" [level=3]\n - code: room.spirit\n - paragraph: selection · readable · writable\n - status: \"Reported value: \\\"restless\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - combobox \"New value\":\n - option \"Restless\" [selected]\n - option \"Vengeful\"\n - option \"Mourning\"\n - option \"Mischievous\"\n - button \"Set\"\n - article:\n - heading \"Haunt level\" [level=3]\n - code: room.haunt-level\n - paragraph: range · readable · writable\n - status: \"Reported value: 1\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.5\"\n - button \"Set\"\n - article:\n - heading \"Fog density\" [level=3]\n - code: room.fog-density\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.25\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.25\"\n - button \"Set\"\n - article:\n - heading \"Candlelight\" [level=3]\n - code: room.candlelight\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.55\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.55\"\n - button \"Set\"\n - article:\n - heading \"Audio enabled\" [level=3]\n - code: room.audio-enabled\n - paragraph: state · readable · writable\n - status: \"Reported value: true\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - checkbox \"New value\" [checked]\n - button \"Set\"\n - article:\n - heading \"Held\" [level=3]\n - code: room.paused\n - paragraph: state · readable · writable\n - status: \"Reported value: true\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - checkbox \"New value\" [checked]\n - button \"Set\"\n - heading \"action\" [level=3]\n - article:\n - heading \"Moan\" [level=3]\n - code: action.moan\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Slam door\" [level=3]\n - code: action.slam-door\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Manifest\" [level=3]\n - code: action.manifest\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Calm\" [level=3]\n - code: action.calm\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - heading \"telemetry\" [level=3]\n - article:\n - heading \"Audio engine state\" [level=3]\n - code: telemetry.audio-state\n - paragraph: state · readable · not writable\n - status: \"Reported value: \\\"available\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - article:\n - heading \"Room damping\" [level=3]\n - code: telemetry.room-damp\n - paragraph: state · readable · not writable\n - status: \"Reported value: 0.6\"\n - generic \"Target descriptor\"\n - paragraph\n - heading \"State and metadata\" [level=2]\n - button \"Refresh state\"\n - generic \"Session and exhibit metadata\"\n - generic: \"{ \\\"sessionId\\\": \\\"sess-12844\\\", \\\"contract\\\": { \\\"major\\\": 5, \\\"minor\\\": 2 }, \\\"exhibit\\\": { \\\"product\\\": \\\"Haunted House\\\", \\\"version\\\": \\\"1.0.0\\\", \\\"build\\\": \\\"reference-exhibit\\\" }, \\\"registryRevision\\\": 1, \\\"stateRevision\\\": 3, \\\"sequence\\\": 4 }\"\n - generic \"Current persistent state\" [active]\n - paragraph: Last reported exhibit values. This host view may be uncertain while resynchronizing.\n - generic: \"{ \\\"room.current\\\": \\\"library\\\", \\\"room.spirit\\\": \\\"restless\\\", \\\"room.haunt-level\\\": 1, \\\"room.fog-density\\\": 0.25, \\\"room.candlelight\\\": 0.55, \\\"room.audio-enabled\\\": true, \\\"room.paused\\\": true, \\\"telemetry.audio-state\\\": \\\"available\\\", \\\"telemetry.room-damp\\\": 0.6 }\"\n - heading \"Protocol diagnostics\" [level=2]\n - generic \"Incoming events\"\n - paragraph: Latest 200 session events, including source, sequence, revision, and correlation when supplied.\n - generic \"Incoming events\": \"[ { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"state.changed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 1, \\\"timestamp\\\": 1789415741975, \\\"stateRevision\\\": 1, \\\"target\\\": \\\"room.paused\\\", \\\"value\\\": true, \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-4\\\" }, { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"state.changed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 2, \\\"timestamp\\\": 1789415742259, \\\"stateRevision\\\": 2, \\\"target\\\": \\\"room.haunt-level\\\", \\\"value\\\": 0.5, \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-6\\\" }, { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"selection.changed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 3, \\\"timestamp\\\": 1789415742544, \\\"stateRevision\\\": 3, \\\"target\\\": \\\"room.current\\\", \\\"value\\\": \\\"library\\\", \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-8\\\" }, { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"action.executed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 4, \\\"timestamp\\\": 1789415793706, \\\"target\\\": \\\"action.manifest\\\", \\\"args\\\": {}, \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-10\\\" } ]\"\n - generic \"Protocol and errors\"\n - paragraph: Latest 200 entries across connections in this page. Timestamps identify earlier failures.\n - button \"Clear log\"\n - log: \"[ { \\\"time\\\": \\\"2026-09-14T19:55:08.301Z\\\", \\\"code\\\": \\\"SESSION\\\", \\\"message\\\": \\\"Exhibit session established.\\\", \\\"detail\\\": { \\\"sessionId\\\": \\\"sess-12844\\\" } } ]\""
},
{
"phase": "drifting after Manifest",
"snapshot": "- banner:\n - heading \"XZBT-NGN Exhibit Engine\" [level=1]\n - paragraph: Contract 5.2 · One exhibit at a time\n- main:\n - heading \"Connection\" [level=2]\n - generic: Exhibit URL (same origin)\n - textbox \"Exhibit URL (same origin)\":\n - /placeholder: /public/exhibits/example/index.html\n - text: /test-fixtures/reference-exhibits/haunted-house/index.html\n - button \"Load exhibit\"\n - button \"Reconnect\"\n - button \"Disconnect\"\n - paragraph: Enter a trusted exhibit's local served path or a URL on this origin. Load exhibit also switches exhibits. Reconnect starts a new session, or reloads the last exhibit after disconnect.\n - status: connected · synchronized\n - paragraph: Haunted House · 1.0.0 · Contract 5.2\n - paragraph: \"Exhibit location: http://127.0.0.1:4173/test-fixtures/reference-exhibits/haunted-house/index.html\"\n - iframe:\n - banner:\n - heading \"Haunted House\" [level=1]\n - generic: Fifth room — live haunt\n - generic: host attached\n - main:\n - generic \"Haunted house room view\"\n - complementary:\n - heading \"Presence\" [level=2]\n - generic: Room\n - combobox \"Room\":\n - option \"Foyer\"\n - option \"Library\" [selected]\n - option \"Cellar\"\n - option \"Attic\"\n - option \"Nursery\"\n - generic: Spirit\n - combobox \"Spirit\":\n - option \"Restless\" [selected]\n - option \"Vengeful\"\n - option \"Mourning\"\n - option \"Mischievous\"\n - generic: Haunt level\n - generic: 100%\n - slider \"Haunt level 100%\"\n - heading \"Atmosphere\" [level=2]\n - generic: Fog density\n - generic: 25%\n - slider \"Fog density 25%\"\n - generic: Candlelight\n - generic: 55%\n - slider \"Candlelight 55%\"\n - text: \"Audio engine:\"\n - strong: available\n - button \"Audio on\" [pressed]\n - generic: Simulation\n - button \"Hold\"\n - heading \"Actions\" [level=2]\n - button \"Moan\"\n - button \"Slam door\"\n - button \"Manifest\"\n - button \"Calm\"\n - contentinfo:\n - generic: House\n - generic: The house is quiet — awaiting instruction.\n - heading \"Exhibit controls (13)\" [level=2]\n - generic \"Capabilities\"\n - paragraph: Reported values are authoritative. New values are drafts; select Set or Invoke to submit. Rediscovery resets drafts.\n - heading \"room\" [level=3]\n - article:\n - heading \"Room\" [level=3]\n - code: room.current\n - paragraph: selection · readable · writable\n - status: \"Reported value: \\\"library\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - combobox \"New value\":\n - option \"Foyer\"\n - option \"Library\" [selected]\n - option \"Cellar\"\n - option \"Attic\"\n - option \"Nursery\"\n - button \"Set\"\n - article:\n - heading \"Spirit\" [level=3]\n - code: room.spirit\n - paragraph: selection · readable · writable\n - status: \"Reported value: \\\"restless\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - combobox \"New value\":\n - option \"Restless\" [selected]\n - option \"Vengeful\"\n - option \"Mourning\"\n - option \"Mischievous\"\n - button \"Set\"\n - article:\n - heading \"Haunt level\" [level=3]\n - code: room.haunt-level\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.26\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.5\"\n - button \"Set\"\n - article:\n - heading \"Fog density\" [level=3]\n - code: room.fog-density\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.25\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.25\"\n - button \"Set\"\n - article:\n - heading \"Candlelight\" [level=3]\n - code: room.candlelight\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.55\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.55\"\n - button \"Set\"\n - article:\n - heading \"Audio enabled\" [level=3]\n - code: room.audio-enabled\n - paragraph: state · readable · writable\n - status: \"Reported value: true\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - checkbox \"New value\" [checked]\n - button \"Set\"\n - article:\n - heading \"Held\" [level=3]\n - code: room.paused\n - paragraph: state · readable · writable\n - status: \"Reported value: false\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - checkbox \"New value\"\n - button \"Set\"\n - heading \"action\" [level=3]\n - article:\n - heading \"Moan\" [level=3]\n - code: action.moan\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Slam door\" [level=3]\n - code: action.slam-door\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Manifest\" [level=3]\n - code: action.manifest\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Calm\" [level=3]\n - code: action.calm\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - heading \"telemetry\" [level=3]\n - article:\n - heading \"Audio engine state\" [level=3]\n - code: telemetry.audio-state\n - paragraph: state · readable · not writable\n - status: \"Reported value: \\\"available\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - article:\n - heading \"Room damping\" [level=3]\n - code: telemetry.room-damp\n - paragraph: state · readable · not writable\n - status: \"Reported value: 0.6\"\n - generic \"Target descriptor\"\n - paragraph\n - heading \"State and metadata\" [level=2]\n - button \"Refresh state\" [active]\n - generic \"Session and exhibit metadata\"\n - generic: \"{ \\\"sessionId\\\": \\\"sess-12844\\\", \\\"contract\\\": { \\\"major\\\": 5, \\\"minor\\\": 2 }, \\\"exhibit\\\": { \\\"product\\\": \\\"Haunted House\\\", \\\"version\\\": \\\"1.0.0\\\", \\\"build\\\": \\\"reference-exhibit\\\" }, \\\"registryRevision\\\": 1, \\\"stateRevision\\\": 4, \\\"sequence\\\": 5 }\"\n - generic \"Current persistent state\"\n - paragraph: Last reported exhibit values. This host view may be uncertain while resynchronizing.\n - generic: \"{ \\\"room.current\\\": \\\"library\\\", \\\"room.spirit\\\": \\\"restless\\\", \\\"room.haunt-level\\\": 0.26, \\\"room.fog-density\\\": 0.25, \\\"room.candlelight\\\": 0.55, \\\"room.audio-enabled\\\": true, \\\"room.paused\\\": false, \\\"telemetry.audio-state\\\": \\\"available\\\", \\\"telemetry.room-damp\\\": 0.6 }\"\n - heading \"Protocol diagnostics\" [level=2]\n - generic \"Incoming events\"\n - paragraph: Latest 200 session events, including source, sequence, revision, and correlation when supplied.\n - generic \"Incoming events\": \"[ { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"state.changed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 1, \\\"timestamp\\\": 1789415741975, \\\"stateRevision\\\": 1, \\\"target\\\": \\\"room.paused\\\", \\\"value\\\": true, \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-4\\\" }, { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"state.changed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 2, \\\"timestamp\\\": 1789415742259, \\\"stateRevision\\\": 2, \\\"target\\\": \\\"room.haunt-level\\\", \\\"value\\\": 0.5, \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-6\\\" }, { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"selection.changed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 3, \\\"timestamp\\\": 1789415742544, \\\"stateRevision\\\": 3, \\\"target\\\": \\\"room.current\\\", \\\"value\\\": \\\"library\\\", \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-8\\\" }, { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"action.executed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 4, \\\"timestamp\\\": 1789415793706, \\\"target\\\": \\\"action.manifest\\\", \\\"args\\\": {}, \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-10\\\" }, { \\\"xzbt\\\": \\\"5.2\\\", \\\"type\\\": \\\"state.changed\\\", \\\"sessionId\\\": \\\"sess-12844\\\", \\\"sequence\\\": 5, \\\"timestamp\\\": 1789415795623, \\\"stateRevision\\\": 4, \\\"target\\\": \\\"room.paused\\\", \\\"value\\\": false, \\\"source\\\": \\\"host\\\", \\\"correlationId\\\": \\\"ngn-2-13\\\" } ]\"\n - generic \"Protocol and errors\"\n - paragraph: Latest 200 entries across connections in this page. Timestamps identify earlier failures.\n - button \"Clear log\"\n - log: \"[ { \\\"time\\\": \\\"2026-09-14T19:55:08.301Z\\\", \\\"code\\\": \\\"SESSION\\\", \\\"message\\\": \\\"Exhibit session established.\\\", \\\"detail\\\": { \\\"sessionId\\\": \\\"sess-12844\\\" } } ]\""
},
{
"phase": "reconnected",
"snapshot": "- banner:\n - heading \"XZBT-NGN Exhibit Engine\" [level=1]\n - paragraph: Contract 5.2 · One exhibit at a time\n- main:\n - heading \"Connection\" [level=2]\n - generic: Exhibit URL (same origin)\n - textbox \"Exhibit URL (same origin)\":\n - /placeholder: /public/exhibits/example/index.html\n - text: /test-fixtures/reference-exhibits/haunted-house/index.html\n - button \"Load exhibit\"\n - button \"Reconnect\"\n - button \"Disconnect\"\n - paragraph: Enter a trusted exhibit's local served path or a URL on this origin. Load exhibit also switches exhibits. Reconnect starts a new session, or reloads the last exhibit after disconnect.\n - status: connected · synchronized\n - paragraph: Haunted House · 1.0.0 · Contract 5.2\n - paragraph: \"Exhibit location: http://127.0.0.1:4173/test-fixtures/reference-exhibits/haunted-house/index.html\"\n - iframe:\n - banner:\n - heading \"Haunted House\" [level=1]\n - generic: Fifth room — live haunt\n - generic: host attached\n - main:\n - generic \"Haunted house room view\"\n - complementary:\n - heading \"Presence\" [level=2]\n - generic: Room\n - combobox \"Room\":\n - option \"Foyer\"\n - option \"Library\" [selected]\n - option \"Cellar\"\n - option \"Attic\"\n - option \"Nursery\"\n - generic: Spirit\n - combobox \"Spirit\":\n - option \"Restless\" [selected]\n - option \"Vengeful\"\n - option \"Mourning\"\n - option \"Mischievous\"\n - generic: Haunt level\n - generic: 100%\n - slider \"Haunt level 100%\"\n - heading \"Atmosphere\" [level=2]\n - generic: Fog density\n - generic: 25%\n - slider \"Fog density 25%\"\n - generic: Candlelight\n - generic: 55%\n - slider \"Candlelight 55%\"\n - text: \"Audio engine:\"\n - strong: available\n - button \"Audio on\" [pressed]\n - generic: Simulation\n - button \"Hold\"\n - heading \"Actions\" [level=2]\n - button \"Moan\"\n - button \"Slam door\"\n - button \"Manifest\"\n - button \"Calm\"\n - contentinfo:\n - generic: House\n - generic: The house is quiet — awaiting instruction.\n - heading \"Exhibit controls (13)\" [level=2]\n - generic \"Capabilities\"\n - paragraph: Reported values are authoritative. New values are drafts; select Set or Invoke to submit. Rediscovery resets drafts.\n - heading \"room\" [level=3]\n - article:\n - heading \"Room\" [level=3]\n - code: room.current\n - paragraph: selection · readable · writable\n - status: \"Reported value: \\\"library\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - combobox \"New value\":\n - option \"Foyer\"\n - option \"Library\" [selected]\n - option \"Cellar\"\n - option \"Attic\"\n - option \"Nursery\"\n - button \"Set\"\n - article:\n - heading \"Spirit\" [level=3]\n - code: room.spirit\n - paragraph: selection · readable · writable\n - status: \"Reported value: \\\"restless\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - combobox \"New value\":\n - option \"Restless\" [selected]\n - option \"Vengeful\"\n - option \"Mourning\"\n - option \"Mischievous\"\n - button \"Set\"\n - article:\n - heading \"Haunt level\" [level=3]\n - code: room.haunt-level\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.26\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.26\"\n - button \"Set\"\n - article:\n - heading \"Fog density\" [level=3]\n - code: room.fog-density\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.25\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.25\"\n - button \"Set\"\n - article:\n - heading \"Candlelight\" [level=3]\n - code: room.candlelight\n - paragraph: range · readable · writable\n - status: \"Reported value: 0.55\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - spinbutton \"New value\": \"0.55\"\n - button \"Set\"\n - article:\n - heading \"Audio enabled\" [level=3]\n - code: room.audio-enabled\n - paragraph: state · readable · writable\n - status: \"Reported value: true\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - checkbox \"New value\" [checked]\n - button \"Set\"\n - article:\n - heading \"Held\" [level=3]\n - code: room.paused\n - paragraph: state · readable · writable\n - status: \"Reported value: false\"\n - generic \"Target descriptor\"\n - paragraph\n - text: New value\n - checkbox \"New value\"\n - button \"Set\"\n - heading \"action\" [level=3]\n - article:\n - heading \"Moan\" [level=3]\n - code: action.moan\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Slam door\" [level=3]\n - code: action.slam-door\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Manifest\" [level=3]\n - code: action.manifest\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - article:\n - heading \"Calm\" [level=3]\n - code: action.calm\n - paragraph: impulse · not readable · not writable\n - status: No persistent value reported.\n - generic \"Target descriptor\"\n - paragraph\n - button \"Invoke\"\n - heading \"telemetry\" [level=3]\n - article:\n - heading \"Audio engine state\" [level=3]\n - code: telemetry.audio-state\n - paragraph: state · readable · not writable\n - status: \"Reported value: \\\"available\\\"\"\n - generic \"Target descriptor\"\n - paragraph\n - article:\n - heading \"Room damping\" [level=3]\n - code: telemetry.room-damp\n - paragraph: state · readable · not writable\n - status: \"Reported value: 0.6\"\n - generic \"Target descriptor\"\n - paragraph\n - heading \"State and metadata\" [level=2]\n - button \"Refresh state\"\n - generic \"Session and exhibit metadata\"\n - generic: \"{ \\\"sessionId\\\": \\\"sess-29bfc\\\", \\\"contract\\\": { \\\"major\\\": 5, \\\"minor\\\": 2 }, \\\"exhibit\\\": { \\\"product\\\": \\\"Haunted House\\\", \\\"version\\\": \\\"1.0.0\\\", \\\"build\\\": \\\"reference-exhibit\\\" }, \\\"registryRevision\\\": 1, \\\"stateRevision\\\": 4, \\\"sequence\\\": null }\"\n - generic \"Current persistent state\"\n - paragraph: Last reported exhibit values. This host view may be uncertain while resynchronizing.\n - generic: \"{ \\\"room.current\\\": \\\"library\\\", \\\"room.spirit\\\": \\\"restless\\\", \\\"room.haunt-level\\\": 0.26, \\\"room.fog-density\\\": 0.25, \\\"room.candlelight\\\": 0.55, \\\"room.audio-enabled\\\": true, \\\"room.paused\\\": false, \\\"telemetry.audio-state\\\": \\\"available\\\", \\\"telemetry.room-damp\\\": 0.6 }\"\n - heading \"Protocol diagnostics\" [level=2]\n - generic \"Incoming events\"\n - paragraph: Latest 200 session events, including source, sequence, revision, and correlation when supplied.\n - generic \"Incoming events\": \"[]\"\n - generic \"Protocol and errors\"\n - paragraph: Latest 200 entries across connections in this page. Timestamps identify earlier failures.\n - button \"Clear log\"\n - log: \"[ { \\\"time\\\": \\\"2026-09-14T19:55:08.301Z\\\", \\\"code\\\": \\\"SESSION\\\", \\\"message\\\": \\\"Exhibit session established.\\\", \\\"detail\\\": { \\\"sessionId\\\": \\\"sess-12844\\\" } }, { \\\"time\\\": \\\"2026-09-14T19:56:46.979Z\\\", \\\"code\\\": \\\"SESSION\\\", \\\"message\\\": \\\"Exhibit session established.\\\", \\\"detail\\\": { \\\"sessionId\\\": \\\"sess-29bfc\\\" } } ]\""
}
]
}