generated from Labyricorn/labyricorn-project-template
Steps 6.4-6.7B — Local surfaces, reference-exhibit validation, SciFi Observation surface
One commit for the work accumulated in the working tree since Step 6.3, which had never been split into per-step commits: - src/local-surfaces.js + src/surface-url.js (new); src/ui.js, src/validation.js, src/connection.js and public/index.html updated for local-surface hosting and generic surface rendering - tests: local-surfaces (20), scifi-surfaces (24) and postmessage-interop (7) new; connection/museum-gallery/surface-validation suites updated - reference exhibits: shared/contract-core.js defaults to Contract 5.3 (major 5, minor 3, xzbt 5.3); museum-gallery advertises its surface catalog; aquarium/haunted-house/planetarium adapters updated - SciFi-XZBT (Step 6.7A/6.7B): surface-mode.js + surface-bus.js, Observation-surface boot branch, local-change hooks, view.pillars / view.warp-flight targets; fixture byte-identical to G:/.vibe/SciFi-XZBT - SciFi-XZBT contract adapter handshake fix: the inbound bridge filter no longer gates on an exact advisory xzbt value (Contract 5.3 §6.5), only on its presence/type, matching the host's own envelope validation; the adapter now advertises contract minor 3 / version 5.3.0, which it already implemented via the 5.3 surfaces field. Root cause of the five failing postmessage-interop tests (host hello was silently dropped). - docs: architecture 6.4 and 6.7A, reference 6.6 and 6.7; evidence logs; test-fixtures/PROVENANCE.md resync record Test results: NGN 154/154 (was 149/154); postmessage-interop 7/7 (was 2/7); SciFi contract harness 21/21, real-adapter suite 32/32. git diff --check clean for changed files; two pre-existing trailing-whitespace lines remain in test-fixtures/reference-exhibits/scifi/index.html, copied verbatim from the authoritative SciFi source. Step 6.7 live verification (browser Observation, packaged standalone) is still pending and is not claimed here.
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
- banner:
|
||||
- heading "XZBT-NGN Exhibit Engine" [level=1]
|
||||
- paragraph: Contract 5.2/5.3 · One exhibit at a time
|
||||
- main:
|
||||
- heading "Connection" [level=2]
|
||||
- generic: Exhibit URL (same origin)
|
||||
- textbox "Exhibit URL (same origin)":
|
||||
- /placeholder: /public/exhibits/example/index.html
|
||||
- text: http://127.0.0.1:4173/test-fixtures/reference-exhibits/museum-gallery/control.html
|
||||
- button "Load exhibit"
|
||||
- button "Reconnect"
|
||||
- button "Disconnect"
|
||||
- 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.
|
||||
- status: connected · synchronized
|
||||
- paragraph: Museum Gallery · 0.1.0 · Contract 5.3
|
||||
- paragraph: "Exhibit location: http://127.0.0.1:4173/test-fixtures/reference-exhibits/museum-gallery/control.html"
|
||||
- iframe:
|
||||
- banner:
|
||||
- heading "Museum Gallery — Control Room" [level=1]
|
||||
- generic: Primary surface · Contract 5.3 · standalone-capable
|
||||
- generic: host attached
|
||||
- main:
|
||||
- paragraph: The Orrery
|
||||
- paragraph: "Lighting: 60%"
|
||||
- paragraph: "Rotation: 0.4x"
|
||||
- paragraph: "Labels: ON"
|
||||
- paragraph: "Attached non-primary surfaces: 0"
|
||||
- complementary:
|
||||
- heading "Artifact" [level=2]
|
||||
- generic: Selected artifact
|
||||
- combobox "Selected artifact":
|
||||
- option "The Orrery" [selected]
|
||||
- option "Star Map"
|
||||
- option "Meteorite Fragment"
|
||||
- heading "Environment" [level=2]
|
||||
- generic: Lighting level
|
||||
- generic: 60%
|
||||
- slider "Lighting level 60%"
|
||||
- generic: Rotation speed
|
||||
- generic: 0.4x
|
||||
- slider "Rotation speed 0.4x"
|
||||
- generic: Labels enabled
|
||||
- button "Toggle" [pressed]
|
||||
- heading "Actions" [level=2]
|
||||
- button "Flash spotlight"
|
||||
- contentinfo:
|
||||
- generic: Control Room
|
||||
- generic: Control Room standing by.
|
||||
- heading "Exhibit controls (5)" [level=2]
|
||||
- generic "Capabilities"
|
||||
- paragraph: Reported values are authoritative. New values are drafts; select Set or Invoke to submit. Rediscovery resets drafts.
|
||||
- heading "gallery" [level=3]
|
||||
- article:
|
||||
- heading "Selected Artifact" [level=3]
|
||||
- code: artifact.selected
|
||||
- paragraph: selection · readable · writable
|
||||
- status: "Reported value: \"the-orrery\""
|
||||
- generic "Target descriptor"
|
||||
- paragraph
|
||||
- text: New value
|
||||
- combobox "New value":
|
||||
- option "The Orrery" [selected]
|
||||
- option "Star Map"
|
||||
- option "Meteorite Fragment"
|
||||
- button "Set"
|
||||
- article:
|
||||
- heading "Lighting Level" [level=3]
|
||||
- code: lighting.level
|
||||
- paragraph: range · readable · writable
|
||||
- status: "Reported value: 0.6"
|
||||
- generic "Target descriptor"
|
||||
- paragraph
|
||||
- text: New value
|
||||
- spinbutton "New value": "0.6"
|
||||
- button "Set"
|
||||
- article:
|
||||
- heading "Rotation Speed" [level=3]
|
||||
- code: rotation.speed
|
||||
- paragraph: range · readable · writable
|
||||
- status: "Reported value: 0.4"
|
||||
- generic "Target descriptor"
|
||||
- paragraph
|
||||
- text: New value
|
||||
- spinbutton "New value": "0.4"
|
||||
- button "Set"
|
||||
- article:
|
||||
- heading "Labels Enabled" [level=3]
|
||||
- code: labels.enabled
|
||||
- paragraph: state · readable · writable
|
||||
- status: "Reported value: true"
|
||||
- generic "Target descriptor"
|
||||
- paragraph
|
||||
- text: New value
|
||||
- checkbox "New value" [checked]
|
||||
- button "Set"
|
||||
- heading "action" [level=3]
|
||||
- article:
|
||||
- heading "Spotlight Flash" [level=3]
|
||||
- code: action.spotlight-flash
|
||||
- paragraph: impulse · not readable · not writable
|
||||
- status: No persistent value reported.
|
||||
- generic "Target descriptor"
|
||||
- paragraph
|
||||
- button "Invoke"
|
||||
- heading "Presentation surfaces (3)" [level=2]
|
||||
- paragraph: Open Contract 5.3 presentation surfaces locally below. URLs resolve against the supplying exhibit. Disconnecting or switching exhibits closes these views. Remote/cast displays remain deferred.
|
||||
- article:
|
||||
- heading "Control Room" [level=3]
|
||||
- code: surface.control
|
||||
- generic: Primary
|
||||
- generic: "Role: control"
|
||||
- paragraph: "URL: control.html"
|
||||
- status: Open in the authoritative control frame. Use Connection controls to reload or disconnect.
|
||||
- button "Open" [disabled]
|
||||
- button "Reload" [disabled]
|
||||
- button "Close" [disabled]
|
||||
- article:
|
||||
- heading "Artifact Display" [level=3]
|
||||
- code: surface.artifact
|
||||
- generic: Non-primary
|
||||
- generic: "Role: ambient"
|
||||
- paragraph: "URL: artifact.html"
|
||||
- status: open
|
||||
- button "Open" [disabled]
|
||||
- button "Reload"
|
||||
- button "Close"
|
||||
- iframe:
|
||||
- banner:
|
||||
- heading "Museum Gallery — Artifact Display" [level=1]
|
||||
- generic: Non-primary surface · attaches to the Control Room
|
||||
- generic: surface
|
||||
- main:
|
||||
- paragraph: The Orrery
|
||||
- paragraph: "Lighting: 60%"
|
||||
- paragraph: "Rotation: 0.4x"
|
||||
- paragraph:
|
||||
- button "Cycle artifact"
|
||||
- paragraph: Attached to Control Room.
|
||||
- contentinfo:
|
||||
- generic: Artifact Display
|
||||
- generic: Waiting for shared state.
|
||||
- article:
|
||||
- heading "Information Wall" [level=3]
|
||||
- code: surface.info-wall
|
||||
- generic: Non-primary
|
||||
- generic: "Role: information"
|
||||
- paragraph: "URL: info-wall.html"
|
||||
- status: open
|
||||
- button "Open" [disabled]
|
||||
- button "Reload"
|
||||
- button "Close"
|
||||
- iframe:
|
||||
- banner:
|
||||
- heading "Museum Gallery — Information Wall" [level=1]
|
||||
- generic: Non-primary surface · attaches to the Control Room
|
||||
- generic: surface
|
||||
- main:
|
||||
- paragraph: The Orrery
|
||||
- paragraph: "Labels: ON"
|
||||
- paragraph:
|
||||
- button "Toggle labels"
|
||||
- paragraph: Attached to Control Room.
|
||||
- contentinfo:
|
||||
- generic: Information Wall
|
||||
- generic: Waiting for shared state.
|
||||
- heading "State and metadata" [level=2]
|
||||
- button "Refresh state"
|
||||
- generic "Session and exhibit metadata"
|
||||
- generic "Current persistent state"
|
||||
- heading "Protocol diagnostics" [level=2]
|
||||
- generic "Incoming events"
|
||||
- generic "Protocol and errors"
|
||||
Reference in New Issue
Block a user