generated from Labyricorn/labyricorn-project-template
72 lines
3.3 KiB
Markdown
72 lines
3.3 KiB
Markdown
_model: project
|
|
---
|
|
schema_version: 1
|
|
---
|
|
project_id: xzbt-ngn
|
|
---
|
|
title: XZBT-NGN Exhibit Engine
|
|
---
|
|
summary:
|
|
|
|
A generic single-exhibit host for XZBT Exhibit Contract 5.3: session negotiation, descriptor-driven control discovery, presentation-surface rendering, state inspection, and set/invoke operations, with no exhibit-specific vocabulary in the host.
|
|
---
|
|
status: active
|
|
---
|
|
started: 2026-09-13
|
|
---
|
|
author: cgcha
|
|
---
|
|
repository_url: https://git.labyricorn.com/Labyricorn/XZBT-NGN
|
|
---
|
|
default_branch: main
|
|
---
|
|
tags: xzbt, xzbt-ngn, exhibit-engine, contract-5-3, multi-surface, javascript
|
|
---
|
|
body: |
|
|
XZBT-NGN is the host, orchestration and integration environment for exhibits that
|
|
speak the XZBT Exhibit Contract. It does not replace an exhibit; it extends one.
|
|
Everything an exhibit offers is discovered through the contract's target surface
|
|
and rendered generically, so no exhibit-specific vocabulary is hard-coded
|
|
anywhere in the host.
|
|
|
|
## Completed work
|
|
|
|
The contract-boundary MVP is implemented and verified. A single unmodified host
|
|
negotiates a session, requests `describe`, renders discovered capabilities and
|
|
targets grouped by the exhibit's own categories, reads authoritative state,
|
|
submits set and invoke operations with full descriptor validation, displays
|
|
events with source and sequence, tracks registry and state revisions, and
|
|
recovers from synchronization loss. That same unmodified host drives five
|
|
maintained reference exhibits -- Aquarium, Planetarium, Haunted House, Museum
|
|
Gallery and SciFi-XZBT -- with no fixture-specific logic.
|
|
|
|
Contract 5.3 multi-surface support is complete. The host discovers presentation
|
|
surfaces from `describe`, resolves their URLs against the supplying exhibit's
|
|
document URL inside a same-origin boundary, and renders each in a local pane
|
|
that carries no contract session of its own. Museum Gallery exercises three
|
|
surfaces; SciFi-XZBT declares a console surface plus an Observation surface that
|
|
attaches to the console's single authority and never creates a second one.
|
|
|
|
Verification is automated and repeatable: 154 tests pass under `node --test`
|
|
with no npm dependencies and no build step, and the loopback server exposes only
|
|
`public/`, `src/` and `test-fixtures/` while denying paths that escape them.
|
|
|
|
## Formal design work
|
|
|
|
This repository is the canonical home of the XZBT Exhibit Contract Specification
|
|
(5.3 current; 5.2 retained as its historical predecessor, additively superseded),
|
|
the XZBT Exhibit Authoring Guide, and the NGN Implementation Plan. The
|
|
multi-surface architectural model was specified in full before implementation
|
|
and fixes the Step 6 / Step 7 boundary at the schema level: a surface descriptor
|
|
may name a document the host can load, and may never name a display transport,
|
|
casting protocol, network endpoint or device class.
|
|
|
|
## Future work
|
|
|
|
Step 7 -- display endpoints, meaning where a surface is physically shown -- is
|
|
specified by contrast in the multi-surface model but is not started. Casting and
|
|
remote displays, MIDI, MCP, webhooks, scenario authoring, recording, telemetry
|
|
connectors, integration adapters, packaging, multi-exhibit orchestration and
|
|
persistence all remain unimplemented; the host keeps in-memory state only. Five
|
|
non-blocking follow-up items requiring sustained human observation remain open
|
|
from the Step 6 closure. |