generated from Labyricorn/labyricorn-project-template
Document Step 6.7 packaging verification
This commit is contained in:
@@ -13,6 +13,10 @@ pass. Haunted House reports conformant values, and publishing validation passes.
|
||||
Steps 6.1–6.3 established Contract 5.3 surface discovery and interoperability.
|
||||
Step 6.4 adds local presentation panes; see the
|
||||
[Step 6.4 report](docs/architecture/XZBT-NGN-Step6.4-Local-Surfaces.md).
|
||||
Step 6.6 validates the reference exhibits, and Step 6.7 adds the SciFi-XZBT
|
||||
Observation surface, including regenerated packaged-build verification; live
|
||||
NGN Observation verification remains outstanding — see the
|
||||
[Step 6.7 closure report](docs/reference/XZBT-NGN-Step6.7-Closure-Report.md).
|
||||
|
||||
## Run locally
|
||||
|
||||
@@ -120,10 +124,12 @@ tracking, reconnect and synchronization recovery. It has in-memory state only;
|
||||
logs retain 200 entries. Idle polling is not enabled. The last connection URL is
|
||||
remembered only until the page is reloaded. Contract 5.3 presentation-surface
|
||||
discovery and local rendering (Section 31) are implemented and exercised by the
|
||||
Museum Gallery reference exhibit; other maintained exhibits do not declare
|
||||
multiple surfaces. Surface errors stay within the affected pane. Remote/cast
|
||||
display assignment remains deferred. Shared-state synchronization proof remains
|
||||
Step 6.5; this step adds no host-side surface communication.
|
||||
Museum Gallery reference exhibit, and the SciFi-XZBT reference exhibit declares
|
||||
a console surface plus an Observation surface (Step 6.7B); the other maintained
|
||||
exhibits do not declare multiple surfaces. Surface errors stay within the
|
||||
affected pane. Remote/cast display assignment remains deferred. Shared-state
|
||||
synchronization proof remains Step 6.5; this step adds no host-side surface
|
||||
communication.
|
||||
|
||||
Not implemented: casting/display endpoints, MIDI, MCP/webhooks,
|
||||
scenarios/recording, telemetry acquisition, multi-exhibit orchestration,
|
||||
|
||||
@@ -0,0 +1,232 @@
|
||||
# XZBT-NGN Step 6.7 — Closure Report
|
||||
|
||||
**Status: not fully closed.** As of 2026-09-15, Step 6.7's implementation, its
|
||||
handshake defect resolution, the automated baseline, and the packaged
|
||||
standalone-build verification are complete. The live NGN Observation
|
||||
verification (Step 6.7B report §15, steps 1–13) has not been performed and is
|
||||
the only remaining item. Step 6.8 has not been started.
|
||||
|
||||
- Step 6.7A (design, no code): [architecture report](../architecture/XZBT-NGN-Step6.7A-SciFi-Observation-Surface.md)
|
||||
- Step 6.7B (implementation): [implementation report](XZBT-NGN-Step6.7-SciFi-Surface-Adaptation.md)
|
||||
- Packaging evidence: [step6.7-packaging.txt](../../test-fixtures/evidence/step6.7-packaging.txt)
|
||||
- Fixture provenance: [PROVENANCE.md](../../test-fixtures/PROVENANCE.md)
|
||||
|
||||
## 1. What this report closes
|
||||
|
||||
Three items were outstanding when the 6.7B session ended; all three are now
|
||||
closed:
|
||||
|
||||
1. The five failing `tests/postmessage-interop.test.js` tests (the "handshake
|
||||
gating mismatch") — resolved 2026-09-15, committed in `745912e` (§3).
|
||||
2. The packaged standalone-build verification (6.7B report §K.14) — performed
|
||||
2026-09-15 (§4).
|
||||
3. Source/fixture provenance for the SciFi-XZBT fixture — re-verified, and
|
||||
extended with the packaging record (§5).
|
||||
|
||||
Not closed by this report: live browser verification of the Observation
|
||||
surface through NGN (6.7B report §15, steps 1–13) — see §9.
|
||||
|
||||
## 2. Step 6.7 delivery summary
|
||||
|
||||
SciFi-XZBT remains one document with two boot modes (`js/surface-mode.js`),
|
||||
advertising a Contract 5.3 Observation presentation surface as a query-mode
|
||||
view of its own `index.html` (`?surface=observation&xi=<instanceId>`, the
|
||||
§31.4 form that keeps the surface inside the single-file build). Console mode
|
||||
owns the single Contract 5.3 session, the one authoritative SciFi state, and
|
||||
an instance-scoped `BroadcastChannel` bridge (`js/surface-bus.js`); an
|
||||
Observation document attaches to that authority and never creates a second
|
||||
one. Two new canonical targets (`view.pillars`, `view.warp-flight`) carry the
|
||||
surface control path, and the heavy subsystems (WebLLM/Kokoro experience,
|
||||
visualizer, control bus, contract adapter, hotkeys, sleep timer) remain
|
||||
console-only, guarded by `isConsoleMode`.
|
||||
|
||||
NGN `src/**` was not modified by Step 6.7B: NGN renders whatever surface
|
||||
catalog `describe()` advertises, generically. New focused coverage from 6.7B
|
||||
is `tests/scifi-surfaces.test.js` (24 tests) and `tests/local-surfaces.test.js`
|
||||
(20 tests, one driving SciFi's real descriptors); both are part of the
|
||||
full-suite run recorded in §7.
|
||||
|
||||
## 3. Handshake defect: root cause and correction
|
||||
|
||||
**Root cause.** `js/contract-adapter.js`'s `_setupWindowBridge` admitted
|
||||
inbound messages only when the advisory envelope field matched exactly:
|
||||
`… e.data.xzbt !== '5.2'` → return. NGN's host stamps outgoing envelopes
|
||||
`xzbt: '5.3'` (`src/host.js`, since Step 6.3). The adapter therefore silently
|
||||
dropped the host's `hello` and every message after it; NGN's request timeout
|
||||
produced four `hello timed out` interop failures. The fifth failure was the
|
||||
existing static regression guard doing its job: an exact-string comparison
|
||||
against the advisory field existed in a maintained file.
|
||||
|
||||
**Contributing defect.** The same adapter advertised `contractMinor = 2` and
|
||||
product version `'5.2.0'` while already implementing the Contract 5.3-only
|
||||
`surfaces` field in `describe()`, so the two interop assertions expecting
|
||||
`contract.minor === 3` could not pass either.
|
||||
|
||||
**Correction** (in `G:/.vibe/SciFi-XZBT/js/contract-adapter.js`, then copied
|
||||
verbatim into the fixture): the inbound filter now checks only the advisory
|
||||
field's presence and type (`typeof e.data.xzbt !== 'string'`) — matching the
|
||||
host's own envelope validation — and the adapter advertises
|
||||
`contractMinor = 3` / `version = '5.3.0'`. Four lines in one file changed:
|
||||
the header comment, `version`, `contractMinor`, and the filter. The outbound
|
||||
advisory `xzbt: '5.2'` stamps were deliberately left unchanged (advisory
|
||||
only; no receiver gates on the value; SciFi's own browser harness reads the
|
||||
envelope as-is).
|
||||
|
||||
**Coverage.** The fix's behavior is pinned by `tests/postmessage-interop.test.js`'s
|
||||
static guard ("no maintained bridge source gates on exact equality against the
|
||||
advisory `xzbt` field") plus its two behavioral regression tests that
|
||||
negotiate an *unexpected* advisory tag — the same tests that were failing.
|
||||
No test was added or weakened for this correction.
|
||||
|
||||
## 4. Packaged standalone verification (this pass)
|
||||
|
||||
`tools/package.ps1` was run against the SciFi-XZBT source tree
|
||||
(`powershell -ExecutionPolicy Bypass -File .\tools\package.ps1 -Force`, exit
|
||||
code 0). It regenerated `dist/SciFiAmbientDisplay_V179b9db.html`, replacing a
|
||||
pre-6.7B build (SHA-256
|
||||
`B441820627D3FB23994D129B7425D781797E705867AC02967F96846B243435D4`; a
|
||||
byte-identical copy of that pre-6.7B content is retained as
|
||||
`dist/SciFiAmbientDisplay_Va723f46=1.html`). The new artifact:
|
||||
|
||||
- 920,730 bytes; 12 script blocks + 1 style block inlined
|
||||
- SHA-256 `DFD9A91CB04CABD7BD6AAA53DA0FA7A641DBB21E3B3E11FAF3EC75946D6FA271`
|
||||
- mirrored verbatim into `test-fixtures/reference-exhibits/scifi/dist/`
|
||||
(both copies byte-identical)
|
||||
|
||||
Verification performed on the regenerated artifact:
|
||||
|
||||
- **Inlining** (6.7B report risk R7: inlining failure is silent): every one of
|
||||
the 13 inputs is present as a contiguous byte-identical block after newline
|
||||
normalization; the built file contains zero `<script src=`, `<link href=`,
|
||||
or `<img src=` references; the two 6.7B scripts are inlined in `index.html`
|
||||
order; the corrected handshake filter is present and no exact advisory
|
||||
comparison remains anywhere in the file.
|
||||
- **Standalone boot (`file://`)**: loads complete with 12 inline scripts
|
||||
(none with `src`), zero `<link>` elements, and one inlined stylesheet; the
|
||||
console UI renders (universe selector, 7 preset buttons, themed layout,
|
||||
canvases); `window.xzbtContractAdapter` advertises contract 5/3, version
|
||||
`5.3.0`, and the two-entry surface catalog.
|
||||
- **Handshake over the served path**: served from
|
||||
`http://127.0.0.1:4173/test-fixtures/reference-exhibits/scifi/dist/…` — the
|
||||
same origin and tree NGN serves fixtures from — a same-origin host
|
||||
simulation stamped `xzbt: '5.3'` completed `hello` → `describe` →
|
||||
`state.get`: contract `{major: 5, minor: 3}`, exhibit version `5.3.0`,
|
||||
63 targets, both surfaces, and a state snapshot. This is precisely the
|
||||
exchange the pre-fix build silently dropped.
|
||||
- **Boundary observed**: from `file://` the same probe gets no reply, because
|
||||
the adapter's origin guard rejects it (Chrome reports `e.origin` as
|
||||
`"null"` for `file://` documents). That is the designed same-origin/self
|
||||
safety filter — NGN attaches exhibits over `http://` only — not a defect,
|
||||
and it was not changed.
|
||||
|
||||
Filename caveat: the artifact's name carries SciFi-XZBT's HEAD commit
|
||||
`179b9db`, but the build reads the working tree, which is ahead of that
|
||||
commit (that repo's contract work, including the adapter correction, is still
|
||||
uncommitted there — §9). The artifact is a snapshot of the working tree, not
|
||||
of a single commit.
|
||||
|
||||
Environmental note: an `npm start` server was already running on
|
||||
`http://127.0.0.1:4173` and served the artifact; this pass neither started
|
||||
nor stopped a server.
|
||||
|
||||
Raw outputs: [step6.7-packaging.txt](../../test-fixtures/evidence/step6.7-packaging.txt).
|
||||
|
||||
## 5. Source/fixture provenance check
|
||||
|
||||
Re-verified after the packaging pass:
|
||||
|
||||
- `test-fixtures/reference-exhibits/scifi/` and `G:/.vibe/SciFi-XZBT/` are
|
||||
file-set identical for the deployable surface: the 13 `js/` + `css/` files
|
||||
and `index.html`, no extras and no omissions, every file byte-identical
|
||||
(per-file SHA-256 comparison).
|
||||
- The regenerated `dist/` artifact is mirrored byte-identically (§4).
|
||||
- The handshake correction is present in the authoritative adapter and the
|
||||
fixture copy alike; the one-directional source → fixture flow, including
|
||||
this packaging pass, is recorded in
|
||||
[PROVENANCE.md](../../test-fixtures/PROVENANCE.md).
|
||||
- One cosmetic artifact is mirrored along with the content: `index.html`
|
||||
carries trailing whitespace on four script lines added by 6.7B. It predates
|
||||
this pass, is byte-identical in both trees, and was left unchanged to
|
||||
preserve that byte-identity.
|
||||
|
||||
## 6. Contract-policy confirmation
|
||||
|
||||
- Maintained contract: **major 5, minor 3**. NGN's host stamps the advisory
|
||||
`xzbt: '5.3'` and admits exhibits on the negotiated contract fields
|
||||
(`supportedContractMajors`, `contract.major`, integer `contract.minor`).
|
||||
- The advisory `xzbt` field is **not** a compatibility gate anywhere in
|
||||
maintained paths: a repo-wide static scan for exact comparisons against it
|
||||
returns zero hits in `src/`, `tests/`, `public/`, `server/`, and the
|
||||
maintained reference exhibit sources (generated `dist/` builds and the
|
||||
git-ignored `test-fixtures/local/` copies excluded; the retained pre-6.7B
|
||||
artifact still contains the old comparison but is a build, not a maintained
|
||||
source path).
|
||||
- Maintained exhibits advertise 5/3: the shared `contract-core.js` default,
|
||||
Museum Gallery, and SciFi-XZBT. Aquarium, Haunted House, and Planetarium
|
||||
declare no surface catalog (optional per §31; unchanged by 6.7).
|
||||
- Compatibility with a genuine 5.2 exhibit remains the contract's own §28.2
|
||||
guarantee and was not altered; no maintained exhibit is pinned to 5.2.
|
||||
|
||||
## 7. Verification totals (2026-09-15)
|
||||
|
||||
| Check | Result |
|
||||
| --- | --- |
|
||||
| NGN full suite (`node --test`) | **154 / 154** pass, 0 fail, 0 skipped |
|
||||
| `tests/postmessage-interop.test.js` | **7 / 7** (was 2 / 7) |
|
||||
| `tests/scifi-surfaces.test.js` (inside the full run) | 24 / 24 |
|
||||
| `tests/local-surfaces.test.js` (inside the full run) | 20 / 20 |
|
||||
| SciFi-XZBT contract harness | 21 / 21 |
|
||||
| SciFi-XZBT real-adapter suite | 32 / 32 |
|
||||
| `python devlog_editor.py --validate` | devlog is valid |
|
||||
| `git diff --check` | clean for this pass's files |
|
||||
| Packaged artifact, structural + runtime | §4 above |
|
||||
|
||||
## 8. Files changed by this closure pass
|
||||
|
||||
Documentation, evidence, and generated artifacts only (left uncommitted; no
|
||||
commit was requested):
|
||||
|
||||
- `test-fixtures/PROVENANCE.md` — packaging record added; two stale statements
|
||||
corrected (the resync's version-bump claim; the "dist/ not regenerated" note)
|
||||
- `README.md` — Step 6.7 status line added; the SciFi surface declaration
|
||||
corrected (it now declares two surfaces)
|
||||
- `docs/reference/XZBT-NGN-Step6.7-SciFi-Surface-Adaptation.md` — dated status
|
||||
updates in the header, §H, §J, §M, and the verdict
|
||||
- `docs/reference/XZBT-NGN-Step6.7-Closure-Report.md` — this report
|
||||
- `test-fixtures/evidence/step6.7-packaging.txt` — raw verification outputs
|
||||
- `test-fixtures/reference-exhibits/scifi/dist/SciFiAmbientDisplay_V179b9db.html`
|
||||
— regenerated (git-ignored artifact)
|
||||
- `G:/.vibe/SciFi-XZBT/dist/SciFiAmbientDisplay_V179b9db.html` — regenerated
|
||||
(outside this repository)
|
||||
|
||||
The handshake correction that this report closes was committed earlier as part
|
||||
of `745912e` ("Steps 6.4-6.7B …"), pushed to `origin/main`.
|
||||
|
||||
## 9. Remaining work
|
||||
|
||||
**Step 6.7 remains open for one item: live NGN Observation verification**
|
||||
(6.7B report §15, steps 1–13). Not performed in this pass:
|
||||
|
||||
1. Connect NGN to the SciFi fixture; confirm connected · synchronized, Contract 5/3, and the target catalog.
|
||||
2. Confirm the Surfaces panel lists exactly two entries (`surface.console` primary, no Open button; `surface.observation`).
|
||||
3. Open the Observation pane; confirm it renders the current universe/preset within ~1 s, shows no exit chrome, and is inert to background clicks.
|
||||
4. Confirm the console does not black out and `view.observation` stays `false`.
|
||||
5. Drive `set` from NGN for the seven listed targets (universe, preset, alert, viewport frame, activity, pillars, warp-flight); confirm both surfaces converge with advancing `stateRevision`.
|
||||
6. Reload the pane; confirm it returns to current (not default) state, and close/reopen does not ratchet the participant count.
|
||||
7. Press WATCH EXPERIENCE; confirm the pane is unaffected and `view.observation` toggles only the console overlay.
|
||||
8. Inspect the pane's frame: no WebLLM/Kokoro network activity, no `window.generativeExperience`, no `AudioContext`.
|
||||
9. Confirm transient activity events and AI announcements appear on console and pane at the same moment.
|
||||
10. Disconnect/reconnect NGN; confirm clean pane release and rediscovery.
|
||||
11. Standalone `index.html` opened directly with interaction (hotkeys, WATCH EXPERIENCE, audio) — only the packaged boot is evidenced so far (§4).
|
||||
12. Standalone two-window mirroring (`index.html?surface=observation&xi=<real id>` with no NGN present).
|
||||
13. `?surface=observation&xi=nonexistent` alone; confirm a waiting state with no invented authority.
|
||||
|
||||
Also outstanding, by design and outside Step 6.7:
|
||||
|
||||
- Step 6.8 has not been started.
|
||||
- SciFi-XZBT's working tree remains uncommitted (its contract work, including
|
||||
the adapter correction, is untracked in that repository); the packaged
|
||||
artifact therefore reflects an uncommitted tree. A decision on committing
|
||||
that repository is pending.
|
||||
- The retained pre-6.7B artifact `dist/SciFiAmbientDisplay_Va723f46=1.html`
|
||||
should not be distributed.
|
||||
@@ -1,9 +1,10 @@
|
||||
# XZBT-NGN Step 6.7B — SciFi Observation Surface Implementation
|
||||
|
||||
Status: PARTIAL PASS. Implementation, focused tests, and full NGN test suite are
|
||||
complete against a pre-existing, out-of-scope defect. Live browser verification
|
||||
(report §15) and the standalone packaged-build check were not performed in this
|
||||
session.
|
||||
Status: PARTIAL PASS at the time of writing. Superseded 2026-09-15 by the
|
||||
[Step 6.7 closure report](XZBT-NGN-Step6.7-Closure-Report.md): the handshake
|
||||
defect recorded in §J/§M is fixed (full suite now 154/154) and the standalone
|
||||
packaged-build check in §H/§K.14 has been performed. Live NGN browser
|
||||
verification (report §15, steps 1–13) remains outstanding at that date.
|
||||
|
||||
Step 6.7B implements the architecture selected by Step 6.7A (design-only, no
|
||||
code changes) — Candidate A, narrow form: SciFi-XZBT remains one document, one
|
||||
@@ -120,6 +121,10 @@ Deviations, below) — narrative timing is shared, exact pixel content is not.
|
||||
|
||||
## H. Standalone verification
|
||||
|
||||
Update (2026-09-15): performed — see the closure report and
|
||||
`test-fixtures/evidence/step6.7-packaging.txt`. The paragraph below retains the
|
||||
pre-verification state of this session.
|
||||
|
||||
Not run live in this session (see §K). By construction: `index.html` with no
|
||||
query string resolves to console mode via `js/surface-mode.js`'s `resolve()`,
|
||||
which is unchanged from today's single-mode behavior for that input, and no
|
||||
@@ -145,6 +150,10 @@ step (source → fixture), matching the procedure Step 5 used.
|
||||
| `tests/local-surfaces.test.js` | 20/20 pass |
|
||||
| Full NGN suite (`npm test`) | 149/154 pass |
|
||||
|
||||
Update (2026-09-15): full suite **154/154** and `tests/postmessage-interop.test.js`
|
||||
**7/7** — the five failures are resolved (see the closure report). The
|
||||
paragraphs below are retained as this session's historical record.
|
||||
|
||||
The 5 failures are all in `tests/postmessage-interop.test.js` (`hello timed
|
||||
out` ×4, one regex check), and are **not** caused by this step's changes.
|
||||
Root cause: `contract-adapter.js`'s `_setupWindowBridge` gates inbound
|
||||
@@ -188,8 +197,8 @@ remain to be run manually:
|
||||
## M. Remaining limitations
|
||||
|
||||
- **Audio-reactive waveform is flat on the Observation surface**, as explicitly scoped out of 6.7B. No audio graph exists there; `observation-engine.js`'s pre-existing `am.analyser`-null guards degrade it gracefully. Deferred, not solved, per the governing report.
|
||||
- **`postmessage-interop.test.js`'s 5 failures** (see §J) are a pre-existing `5.2`/`5.3` handshake-gating mismatch between this SciFi-XZBT change and an independent, prior `src/host.js` change, outside this step's edit scope. Needs separate resolution — likely a version-gating fix in `contract-adapter.js`'s `_setupWindowBridge`, but that edit was withheld here because the report marks it must-not-change for 6.7B.
|
||||
- **Live browser verification and the packaged single-file build were not exercised** in this session (§K) — recommended before treating 6.7B as fully accepted.
|
||||
- **`postmessage-interop.test.js`'s 5 failures** (see §J) are a pre-existing `5.2`/`5.3` handshake-gating mismatch between this SciFi-XZBT change and an independent, prior `src/host.js` change, outside this step's edit scope. Needs separate resolution — likely a version-gating fix in `contract-adapter.js`'s `_setupWindowBridge`, but that edit was withheld here because the report marks it must-not-change for 6.7B. **Resolved 2026-09-15** as a separate, explicitly authorized task: the inbound filter is now a presence/type check on the advisory field, and the adapter advertises contract minor 3 / version 5.3.0. See the closure report.
|
||||
- **Live browser verification and the packaged single-file build were not exercised** in this session (§K) — recommended before treating 6.7B as fully accepted. Update (2026-09-15): the packaged build is regenerated and verified; live browser verification (report §15, steps 1–13) is still outstanding.
|
||||
|
||||
## Step 6.7 verdict
|
||||
|
||||
@@ -204,3 +213,10 @@ live NGN/browser and standalone/packaged-build verification in report §15
|
||||
has not been performed. Recommend resolving the handshake mismatch and running
|
||||
live verification before closing Step 6.7B, and explicitly deferring Step 6.8
|
||||
until then, per this task's instructions.
|
||||
|
||||
Update (2026-09-15): the handshake mismatch is resolved and the full suite is
|
||||
green (154/154); the packaged single-file build has been regenerated and
|
||||
verified (fixture-consistent, structurally and behaviorally checked). See the
|
||||
[Step 6.7 closure report](XZBT-NGN-Step6.7-Closure-Report.md). What remains
|
||||
before Step 6.7 can be marked complete is the live NGN Observation
|
||||
verification in report §15, steps 1–13.
|
||||
|
||||
@@ -43,7 +43,9 @@ Copied files (byte-for-byte from source, no fixture-local corrections):
|
||||
surface-attachment bus wiring, `view.pillars`/`view.warp-flight` routing
|
||||
- `js/contract-adapter.js` — `surfaces`/`instanceId` constructor options,
|
||||
the `view.pillars`/`view.warp-flight` targets, `onLocalChange`/`onLocalAction`
|
||||
hooks, `describe()`'s conditional `surfaces` field, version bump to 5.3.0
|
||||
hooks, `describe()`'s conditional `surfaces` field (the version bump this
|
||||
bullet originally listed was not present in the resynced file; see the
|
||||
handshake correction below)
|
||||
- `js/observation-engine.js` — WARP/PILLARS dock buttons now route through
|
||||
`onMutation` (matching the existing VIEWPORT/RED ALERT/PRESET pattern)
|
||||
instead of mutating engine state directly
|
||||
@@ -56,9 +58,9 @@ is a faithful mechanical copy of the source as it stood after Step 6.7B.
|
||||
`js/audio.js`, `js/config.js`, `js/core-animations.js`, `js/visualizer.js`,
|
||||
`js/observation-bezels.js`, `js/generative-experience.js`, and `js/control-bus.js`
|
||||
were not touched by Step 6.7B and were not recopied. `dist/` was not
|
||||
regenerated (no PowerShell available in the environment that performed this
|
||||
resync); it still reflects a pre-6.7B build and should be rebuilt from
|
||||
source before any test or procedure that opens the packaged file.
|
||||
regenerated at resync time (no PowerShell available in the environment that
|
||||
performed the resync); it reflected a pre-6.7B build then and has since been
|
||||
rebuilt from source — see the Step 6.7 packaging pass below.
|
||||
|
||||
## SciFi adapter handshake correction (2026-09-15)
|
||||
|
||||
@@ -95,10 +97,62 @@ flow this file documents:
|
||||
The outbound advisory `xzbt: '5.2'` stamps on this adapter's own envelopes were
|
||||
deliberately left unchanged: §6.5 makes the value non-authoritative, Step 6.7B
|
||||
documented the envelope as unchanged, and no receiver — NGN included — reads
|
||||
that value for admission. `dist/` remains a stale generated artifact and was
|
||||
not regenerated.
|
||||
that value for admission. (`dist/` was rebuilt from source in the packaging
|
||||
pass below.)
|
||||
|
||||
Resynced file (source and fixture byte-identical,
|
||||
SHA-256 `10ED30527153D5B30F23557BA6EC427884D470AB6561AC33C47E7F17AFA28DD9`):
|
||||
|
||||
- `js/contract-adapter.js`
|
||||
|
||||
## Step 6.7 packaging pass (2026-09-15)
|
||||
|
||||
`tools/package.ps1` was run against the SciFi-XZBT source tree to regenerate
|
||||
the standalone single-file artifact (that repo's one-input/one-output
|
||||
distribution rule):
|
||||
|
||||
- Command: `powershell -ExecutionPolicy Bypass -File .\tools\package.ps1 -Force`
|
||||
- Output: `G:/.vibe/SciFi-XZBT/dist/SciFiAmbientDisplay_V179b9db.html` —
|
||||
920,730 bytes (12 script blocks + 1 style block inlined), SHA-256
|
||||
`DFD9A91CB04CABD7BD6AAA53DA0FA7A641DBB21E3B3E11FAF3EC75946D6FA271`
|
||||
- Replaced: a pre-6.7B build of the same filename (SHA-256
|
||||
`B441820627D3FB23994D129B7425D781797E705867AC02967F96846B243435D4`, dated
|
||||
9/13, before the Step 6.7B source changes). Byte-identical content of that
|
||||
pre-6.7B build is retained unchanged as
|
||||
`dist/SciFiAmbientDisplay_Va723f46=1.html`.
|
||||
- Filename caveat: the filename carries SciFi-XZBT's HEAD commit `179b9db`,
|
||||
but the build reads the working tree, which is ahead of that commit — that
|
||||
repo's contract work, including the handshake correction above, is still
|
||||
uncommitted there. The artifact does not correspond to a single commit.
|
||||
- Fixture mirror:
|
||||
`test-fixtures/reference-exhibits/scifi/dist/SciFiAmbientDisplay_V179b9db.html`
|
||||
was copied verbatim from the source build; the two files are byte-identical
|
||||
at the hash above.
|
||||
|
||||
Verification of the regenerated artifact (raw output in
|
||||
`evidence/step6.7-packaging.txt`):
|
||||
|
||||
- Structural: each of the 13 inputs (`css/style.css` and the 12 scripts) is
|
||||
inlined verbatim — the built file contains every source file as a
|
||||
contiguous byte-identical block after newline normalization; zero
|
||||
`<script src=`, `<link href=` and `<img src=` references remain; the two
|
||||
Step 6.7B scripts (`surface-mode.js`, `surface-bus.js`) are present in
|
||||
`index.html` order; the corrected handshake filter
|
||||
(`typeof e.data.xzbt !== 'string'`) is present and no exact advisory `xzbt`
|
||||
comparison remains anywhere in the file.
|
||||
- Runtime, `file://`: the document boots standalone — 12 inline `<script>`
|
||||
elements, none with `src`, zero `<link>` elements, console UI renders
|
||||
(`readyState: complete`, 4 canvases, theme classes applied), and
|
||||
`window.xzbtContractAdapter` exists with `contractMinor: 3`,
|
||||
`version: 5.3.0`, and the two-entry surface catalog.
|
||||
- Runtime, served over `http://127.0.0.1:4173/test-fixtures/...` (the served
|
||||
path NGN fixtures use): a same-origin host simulation stamped
|
||||
`xzbt: '5.3'` negotiates — `hello.result` contract `{major: 5, minor: 3}`,
|
||||
exhibit version `5.3.0`; `describe.result` reports 63 targets plus
|
||||
`surface.console`/`surface.observation`; `state.result` returns. This is
|
||||
the handshake/describe/state path the pre-fix build failed.
|
||||
- Boundary note: from `file://`, a same-window `postMessage` cannot exercise
|
||||
the handshake because the adapter's origin guard rejects it (Chrome reports
|
||||
`e.origin` as `"null"` for `file://` documents while `window.location.origin`
|
||||
is `file://`). That is the adapter's designed same-origin/self safety
|
||||
filter, not a defect; NGN attaches exhibits over `http://` only.
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
Step 6.7 — packaged standalone-build verification (tools/package.ps1)
|
||||
Date: 2026-09-15
|
||||
Host: Windows (win32, Windows_NT 10.0.26200), PowerShell shell
|
||||
Source tree: G:/.vibe/SciFi-XZBT (working tree; HEAD 179b9db + uncommitted 6.7B/contract work)
|
||||
Artifact: G:/.vibe/SciFi-XZBT/dist/SciFiAmbientDisplay_V179b9db.html
|
||||
Fixture mirror: G:/.vibe/XZBT-NGN/test-fixtures/reference-exhibits/scifi/dist/SciFiAmbientDisplay_V179b9db.html
|
||||
Server: a pre-existing `npm start` server (node server/serve.js) was already running on
|
||||
http://127.0.0.1:4173. A second instance started for this pass failed with
|
||||
EADDRINUSE and exited; the served state was unchanged, and this pass neither
|
||||
started nor stopped the server.
|
||||
Method: the real build tool, then the artifact examined structurally, loaded from file://,
|
||||
and handshaked over the same HTTP path NGN serves fixtures from. No test doubles.
|
||||
|
||||
====================================================================
|
||||
1. Build
|
||||
====================================================================
|
||||
pre-build artifact (what the build replaces):
|
||||
SciFiAmbientDisplay_V179b9db.html 890902 bytes 2026-09-13 19:48
|
||||
sha256 B441820627D3FB23994D129B7425D781797E705867AC02967F96846B243435D4
|
||||
(byte-identical content retained as dist/SciFiAmbientDisplay_Va723f46=1.html)
|
||||
|
||||
command:
|
||||
powershell -ExecutionPolicy Bypass -File .\tools\package.ps1 -Force
|
||||
|
||||
log:
|
||||
G:\.vibe\SciFi-XZBT\tools\package.ps1 : Output file already exists:
|
||||
G:\.vibe\SciFi-XZBT\dist\SciFiAmbientDisplay_V179b9db.html
|
||||
WARNING: -Force specified; overwriting existing file.
|
||||
Packaging SciFi Ambient Display from G:\.vibe\SciFi-XZBT...
|
||||
-> Commit: 179b9db
|
||||
-> Inlining CSS: css/style.css
|
||||
-> Inlining JS: js/audio.js
|
||||
-> Inlining JS: js/config.js
|
||||
-> Inlining JS: js/core-animations.js
|
||||
-> Inlining JS: js/visualizer.js
|
||||
-> Inlining JS: js/observation-bezels.js
|
||||
-> Inlining JS: js/observation-engine.js
|
||||
-> Inlining JS: js/control-bus.js
|
||||
-> Inlining JS: js/surface-mode.js
|
||||
-> Inlining JS: js/surface-bus.js
|
||||
-> Inlining JS: js/generative-experience.js
|
||||
-> Inlining JS: js/contract-adapter.js
|
||||
-> Inlining JS: js/app.js
|
||||
Build Successful!
|
||||
Output: G:\.vibe\SciFi-XZBT\dist\SciFiAmbientDisplay_V179b9db.html (899.15 KB, 23514 lines)
|
||||
exit code: 0 (the already-exists message is a non-terminating Write-Error)
|
||||
|
||||
post-build artifact:
|
||||
SciFiAmbientDisplay_V179b9db.html 920730 bytes 2026-09-14 19:50
|
||||
sha256 DFD9A91CB04CABD7BD6AAA53DA0FA7A641DBB21E3B3E11FAF3EC75946D6FA271
|
||||
|
||||
====================================================================
|
||||
2. Structural verification (node, against the built file)
|
||||
====================================================================
|
||||
--- inlined block check (built file must contain each source file verbatim) ---
|
||||
INLINED css/style.css 62183 chars @ 880
|
||||
INLINED js/audio.js 238766 chars @ 84546
|
||||
INLINED js/config.js 66319 chars @ 323336
|
||||
INLINED js/core-animations.js 10765 chars @ 389679
|
||||
INLINED js/visualizer.js 25230 chars @ 400468
|
||||
INLINED js/observation-bezels.js 17163 chars @ 425722
|
||||
INLINED js/observation-engine.js 132667 chars @ 442909
|
||||
INLINED js/control-bus.js 1535 chars @ 575600
|
||||
INLINED js/surface-mode.js 3475 chars @ 577159
|
||||
INLINED js/surface-bus.js 9562 chars @ 580658
|
||||
INLINED js/generative-experience.js 48465 chars @ 590244
|
||||
INLINED js/contract-adapter.js 34834 chars @ 638733
|
||||
INLINED js/app.js 223459 chars @ 673591
|
||||
|
||||
--- external asset references (must all be 0) ---
|
||||
{"script_src":0,"link_href":0,"img_src":0}
|
||||
script wrappers: 12 style wrappers: 1
|
||||
|
||||
--- fix markers in the packaged file ---
|
||||
{"presence_type_check":true,"stale_exact_gate_absent":true,"contract_minor_3":true,
|
||||
"version_530":true,"header_v53":true,"surface_mode":true,"surface_bus":true,
|
||||
"doctype":true,"closes_html":true}
|
||||
script order matches index.html order: true
|
||||
all blocks byte-identical to source: true
|
||||
sha256: DFD9A91CB04CABD7BD6AAA53DA0FA7A641DBB21E3B3E11FAF3EC75946D6FA271
|
||||
|
||||
====================================================================
|
||||
3. Fixture mirror
|
||||
====================================================================
|
||||
copy: source dist -> test-fixtures/reference-exhibits/scifi/dist/ (same filename -Force)
|
||||
source dist sha256: DFD9A91CB04CABD7BD6AAA53DA0FA7A641DBB21E3B3E11FAF3EC75946D6FA271
|
||||
fixture dist sha256: DFD9A91CB04CABD7BD6AAA53DA0FA7A641DBB21E3B3E11FAF3EC75946D6FA271
|
||||
byte-identical: True (920730 bytes)
|
||||
|
||||
====================================================================
|
||||
4. Runtime verification (real browser)
|
||||
====================================================================
|
||||
4a. file:// load (standalone, no server, no NGN)
|
||||
title: "Sci-Fi Ambience Generator - Publish Build v14co"
|
||||
readyState: complete
|
||||
globals: XZBTContractAdapter: function; XZBTSurfaceMode: object;
|
||||
XZBTSurfaceBus: object; window.xzbtContractAdapter: present
|
||||
adapter: contractMajor 5, contractMinor 3, version "5.3.0",
|
||||
surfaces ["surface.console", "surface.observation"]
|
||||
runtime self-containment: 12 <script> elements, 0 with src, 0 <link> elements,
|
||||
1 stylesheet (the inlined <style>)
|
||||
rendering: body themed ("theme-lcars-tng xzbt-tv-aspect xzbt-tv-letterbox"),
|
||||
4 canvases (2 visible, e.g. 634x140 and 266x240), 8 visible buttons
|
||||
(MUTE + 7 preset buttons), visible text includes
|
||||
"STARFLIGHT / INTERPRISE-G: MAIN BRIDGE / STARSHIP PRESETS",
|
||||
layout engaged (scroll dimensions > 200px)
|
||||
handshake probe from file://: no reply - the adapter's origin guard rejects the
|
||||
same-window self-post (Chrome reports e.origin "null" for file://
|
||||
documents while window.location.origin is "file://"). Designed
|
||||
same-origin/self safety filter, not a defect; NGN attaches
|
||||
exhibits over http:// only.
|
||||
|
||||
4b. served over http://127.0.0.1:4173/test-fixtures/reference-exhibits/scifi/dist/...
|
||||
sent (same-origin host simulation, advisory tag "5.3"):
|
||||
{xzbt:'5.3', type:'hello', requestId:'pkg-hello-1', supportedContractMajors:[5]}
|
||||
{xzbt:'5.3', type:'describe', requestId:'pkg-describe-1', sessionId:<from hello>}
|
||||
{xzbt:'5.3', type:'state.get',requestId:'pkg-state-1', sessionId:<from hello>}
|
||||
received (in order): hello.result, describe.result, state.result
|
||||
hello.result: contract {major:5, minor:3}; exhibit.version "5.3.0";
|
||||
sessionId present
|
||||
describe.result: 63 targets; surfaces ["surface.console","surface.observation"];
|
||||
contract.minor 3
|
||||
state.result: ok; stateRevision 0; values present
|
||||
adapter after handshake: contractMajor 5, contractMinor 3, sessionActive true,
|
||||
mode "console"
|
||||
(the pre-fix build dropped every one of these messages at the inbound gate)
|
||||
|
||||
====================================================================
|
||||
5. Post-pass status (2026-09-15)
|
||||
====================================================================
|
||||
NGN full suite (node --test): 154 tests, 154 pass, 0 fail, 0 skipped
|
||||
tests/postmessage-interop.test.js: 7 tests, 7 pass, 0 fail
|
||||
SciFi-XZBT contract harness: 21 Tests | 21 Passed | 0 Failed
|
||||
SciFi-XZBT real-adapter suite: 32 Tests | 32 Passed | 0 Failed
|
||||
python devlog_editor.py --validate: devlog is valid
|
||||
git diff --check (XZBT-NGN): clean (all pending changes, incl. this pass's files)
|
||||
git diff --check (SciFi-XZBT): pre-existing trailing whitespace on four
|
||||
6.7B-added script lines in index.html;
|
||||
mirrored by design in the fixture copy,
|
||||
not introduced or changed by this pass
|
||||
source/fixture index.html identical: True
|
||||
Reference in New Issue
Block a user