generated from Labyricorn/labyricorn-project-template
148 lines
8.7 KiB
Markdown
148 lines
8.7 KiB
Markdown
# Step 5 repeatable verification
|
|
|
|
Latest rerun (2026-09-14): the corrected SciFi text targets pass through the normal
|
|
UI; NGN tests pass 25/25. The browser gate currently fails at 2/3 on Haunted House's
|
|
haunt-level step, and publishing validation still fails. See completion report Q.
|
|
|
|
Run from the NGN repository root with Node.js 22+. Use `npm start` and the normal
|
|
UI at `http://127.0.0.1:4173/`. No npm install, build, source edit, external mount,
|
|
or test harness is required for operator use. Use the same origin/port for every
|
|
exhibit. `npm test` runs the automated tests.
|
|
|
|
## External SciFi-XZBT preparation
|
|
|
|
SciFi-XZBT is supplied separately. The run recorded here used the actual working
|
|
copy at `G:/.vibe/SciFi-XZBT`, whose HEAD was
|
|
`179b9db715aaa92999c5bfef451b6877f30079fe` with local changes and untracked contract
|
|
files. This is NOT evidence for that commit alone or for a released dist build.
|
|
The original SHA-256 manifest `evidence/step5-scifi-files.json` identifies the
|
|
initial 12 files tested. The authorized follow-up corrected the external adapter's
|
|
two argument descriptors and matching validator. Its fresh copy is identified by
|
|
`evidence/step5-scifi-arguments-files.json`; all 12 source/copy hashes match.
|
|
|
|
For this source layout, copy the runtime entry point and its relative assets
|
|
without modifying them. Use a fresh destination name when repeating with a newer
|
|
copy, to avoid mixing versions:
|
|
|
|
```powershell
|
|
$exhibitSource = 'G:/.vibe/SciFi-XZBT'
|
|
$exhibitDestination = 'test-fixtures/local/scifi-arguments'
|
|
New-Item -ItemType Directory -Path $exhibitDestination
|
|
Copy-Item -LiteralPath (Join-Path $exhibitSource 'index.html') -Destination $exhibitDestination
|
|
Copy-Item -LiteralPath (Join-Path $exhibitSource 'js') -Destination $exhibitDestination -Recurse
|
|
Copy-Item -LiteralPath (Join-Path $exhibitSource 'css') -Destination $exhibitDestination -Recurse
|
|
```
|
|
|
|
`test-fixtures/local/` is ignored by Git. Do not copy the external repository's
|
|
credentials, .git, or development tooling into a served directory. A future
|
|
self-contained distributable can instead be placed under `public/` unchanged.
|
|
The tested source copy uses only index.html, js/ and css/ for this workflow.
|
|
|
|
Enter `/test-fixtures/local/scifi-arguments/index.html` in the **normal NGN UI**, then
|
|
select **Load exhibit**. Expected identity: SciFi-XZBT 5.2.0, Contract 5.2,
|
|
61 discovered targets. Inspect Session and exhibit metadata and Current
|
|
persistent state. Controls below refer to labels discovered from this copy;
|
|
they are test instructions, not product configuration.
|
|
|
|
1. Set Master Volume to 0.42; verify reported value and state.changed.
|
|
2. Set Master Mute true; verify reported value.
|
|
3. Set Observation Viewport Active true, then false; verify reported values
|
|
and native exhibit behavior within its single frame.
|
|
4. Select Active Audio Preset / Interprise-G: Main Engineering; verify
|
|
preset.selected and related changes share one resulting revision.
|
|
5. Invoke Comm Badge Chime; verify action.executed (acceptance, not audio fidelity).
|
|
6. Invoke Demat Cycle Impulse while in Starfleet; expect CAPABILITY_UNAVAILABLE.
|
|
7. Select Active Sci-Fi Universe / Whataverse / Tardix, then invoke Demat Cycle
|
|
Impulse; verify action.executed in that context.
|
|
8. Inspect Speak Text Line and Display Ticker Message descriptors. A conformant
|
|
version declares an `arguments` array and NGN shows its text field. Enter text
|
|
and invoke; verify acceptance/event. **The corrected copy passes this check:**
|
|
both fields appear and action.executed contains the exact submitted args.text.
|
|
Speech declares maxLength 2000, ticker 512, both required strings. Correct the
|
|
external source before copying; do not add a host workaround or patch only the
|
|
served copy. The original copy's legacy args.text failure remains in old evidence.
|
|
9. Inspect Incoming events: source, correlationId, monotonically increasing
|
|
sequence and stateRevision. Reconnect while attached: new session, cleared
|
|
event log/sequence baseline, same exhibit state and revision.
|
|
10. Disconnect: no frame/catalog/cache remains. Reconnect: URL reloads, a new
|
|
instance and session are discovered. Initial state/revision may differ from
|
|
the removed instance. No source changes required.
|
|
|
|
Classify failures before changing NGN: host defect, external exhibit contract
|
|
defect, conformant but awkward behavior, or environment limitation. Sound
|
|
acceptance/events are covered; audible output and optional AI downloads are not
|
|
certified. Text-argument failure blocks Step 5 acceptance.
|
|
|
|
## Reference regression through the normal UI
|
|
|
|
Use these paths, changing only the URL field:
|
|
|
|
| Exhibit | URL | Representative operations |
|
|
| --- | --- | --- |
|
|
| Aquarium | /test-fixtures/reference-exhibits/aquarium/index.html | Population 16, Paused true, Species Blue Tang, Feed |
|
|
| Planetarium | /test-fixtures/reference-exhibits/planetarium/index.html | Azimuth 0.75, Sky frozen true, Constellation Cygnus, Advance time with Include minutes checked and minutes 30 |
|
|
| Haunted House | /test-fixtures/reference-exhibits/haunted-house/index.html | Haunt level 0.5, Held true, Room Library, Manifest |
|
|
|
|
Inspect reports and events, reconnect and confirm a new session. Disconnect and
|
|
reload the remembered URL. Aquarium and Planetarium pass the representative
|
|
flows. Haunted House emits Manifest's action event, but during the effect a
|
|
snapshot can contain a haunt-level value off its declared 0.01 step; NGN reports
|
|
INVALID_MESSAGE and preserves its previous cache. This is a pre-existing fixture
|
|
limitation, not a new host regression. No fixture repair was made in Step 5.
|
|
|
|
The existing transport suite at `/test-fixtures/host-verification.html` remains a
|
|
separate regression check: select Run verification, expect 3/3, and save the
|
|
visible timestamped text or browser console output. The latest rerun produced
|
|
2/3, failing Haunted House's step validation. Its first impulse with no capability
|
|
requirements is Manifest, and the fixture's continuous drift can also produce
|
|
off-step snapshots. The earlier statement that this suite avoids Manifest was
|
|
incorrect. Do not reinterpret a historical 3/3 as the current result or as complete
|
|
fixture conformance certification.
|
|
|
|
## Failure and cancellation checks
|
|
|
|
- Start with no URL: useful disconnected controls/empty catalog.
|
|
- Enter an off-origin URL: reject and preserve the current exhibit.
|
|
- Enter a missing local URL: document-load timeout (15 seconds in the checked
|
|
browser), or hello timeout (5 seconds if an error page finishes loading).
|
|
Enter a valid path to recover.
|
|
- Disconnect during loading or switch rapidly: old frame load callbacks must
|
|
not attach to the new exhibit. Focused automated lifecycle tests cover this.
|
|
- Refresh state reads current values. Logs can be cleared; prior diagnostics
|
|
are timestamped and do not imply the current connection is failed.
|
|
|
|
## Evidence and repeatability limits
|
|
|
|
`evidence/step5-reference-suite.txt` is the actual timestamped browser suite output.
|
|
`step5-scifi-session.json` contains the actual discovered catalog, session metadata,
|
|
events and failures. The three reference JSON files contain DOM-rendered runtime
|
|
metadata/events; Haunted House also includes its errors. `step5-operator.jpg`
|
|
shows the operator panel. Evidence was captured in local Chromium on 2026-09-14.
|
|
|
|
A fresh `npm start` succeeded on port 4175 because an existing service occupied
|
|
4173; the final browser transport suite ran on that fresh process. The normal UI
|
|
ran on 4173. No separate pristine checkout was created; tests/startup use the
|
|
current source tree without build products. SciFi repeatability requires the
|
|
external files described above. Repository publishing validation has an existing
|
|
malformed trailing record block in the Post Step 4 Completion devlog; see report.
|
|
|
|
Follow-up evidence is separate from those historical artifacts:
|
|
`step5-scifi-arguments-ui.json` captures the corrected descriptors, text fields,
|
|
and successful events; `step5-scifi-arguments-files.json` identifies the tested
|
|
working copy; `step5-acceptance-rerun-browser.txt` records the current 2/3 failure.
|
|
`step5-scifi-arguments-ui-final.json` records the repeated checks after line-ending
|
|
cleanup, including a draft reset on speech capability rediscovery and successful
|
|
ticker resubmission with the exact intended text.
|
|
The follow-up started a fresh server on 4173 and performed the requested narrow
|
|
SciFi checks, rather than repeating every earlier operator case above.
|
|
|
|
The optional external validator regression check is:
|
|
|
|
```powershell
|
|
node test-fixtures/check-scifi-arguments.cjs G:/.vibe/SciFi-XZBT/js/contract-adapter.js
|
|
```
|
|
|
|
It checks descriptor arrays, required/type/unknown-key/length rejection before
|
|
execution, maximum-length acceptance, and unchanged argumentless behavior. It
|
|
supplements the real operator UI checks; it does not replace them.
|