Document Step 6.7 packaging verification

This commit is contained in:
2026-09-15 07:20:44 -07:00
parent 745912e451
commit 9884a5beb2
5 changed files with 465 additions and 16 deletions
+60 -6
View File
@@ -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