# HBF v747 — Fusion Observatory implementation

Active source: `/workspace/sites/HBF-Scientific-Lab-v747`. This release builds on v746. The supplied 1,269-line Torus specification is retained as `TORUS-OBSERVATORY-SPEC.md`; the reference image is in `v747-verification/reference.png`.

## Supported workspace

The canonical route remains `torus-lab/index.html`. It now opens the Fusion Observatory: responsive navy/cyan setup, parametric vessel and coil display, geometric inspection cutaway, camera controls, computed field/particle overlays, current run identity and separate results/research panels. The original Torus notebook and its retained v745 scientific tools remain at `torus-lab/research.html`. The six other lab applications retain their existing source and graphics.

The first paint reserves the Observatory's final header/sidebar/view geometry. Only the viewport waits for renderer readiness; navigation and forms remain useful. The other labs retain v746's startup fix. Calculation workers and graphics have separate state. Completed/partial runs carry immutable inputs, scientific hashes, constants, units, source identity, events and diagnostics. Appearance never changes the scientific hash.

Supported field models are the exact circular analytic fixture, pure toroidal field, direct filament coils, canonical vector grids, a documented G-EQDSK convention subset and fixed-boundary manufactured/profile-polynomial Grad–Shafranov problems. The worker supports field maps, adaptive field lines, refined Poincaré sections, nonrelativistic test particles, prescribed profiles, homogeneous p–B source/radiation and controlled studies. Read the model-specific documentation and benchmarks before interpretation.

## Verification and scope

The exact release gate is recorded in `../tests/verification-summary.json`. `OBSERVATORY-REQUIREMENTS-MATRIX.md` maps all 73 requested development, numerical and user-experience IDs to evidence and remaining gates. A feature is not classified as experimentally validated merely because its software tests pass.

Model-specific evidence: `OBSERVATORY-FIELDS-TOPOLOGY.md`, `OBSERVATORY-IMPORTS-EQUILIBRIUM.md`, the independent SciPy reference directory, `../tests/observatory-*.test.mjs`, and `v747-verification/numerical-benchmarks.json`. The requirement-by-requirement record is `OBSERVATORY-REQUIREMENTS-MATRIX.md`.


## Dependencies, source and hosting

Three.js r160 remains pinned and locally bundled, including OrbitControls and room environment; the original procedural assets remain preserved. The new geometry recipe is `torus-lab/observatory/geometry.mjs`; no raster image is used as a simulated reactor. Runtime code and the worker are content-hashed by `tools/build_browser_runtime.mjs`, with separate Observatory stylesheet and preserved notebook entry. No Node/Python server is needed on the static host. Upload all archive contents together and preserve directories and `.htaccess`.

Current public graphics and worker guidance was reviewed from [Three.js](https://threejs.org/docs/) and [MDN Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers). Scientific primary sources, equations and access limits remain linked in the supplied specification and model cards. Living documentation is method guidance; the shipped dependency remains the explicitly pinned r160 release.

The browser available during development reports WebGL2 unavailable, so the CPU projection and numerical workflow are tested here. Exact GPU material appearance, browser/device performance budgets, screen-reader acceptance and production-host behavior require their own recorded checks. No deployment has been performed.

## Practical workflows

1. Select a development preset, inspect the physical inputs and run the calculation. Use **View results** for units, full tables, numerical diagnostics and plots. A changed physical input clears obsolete overlays and labels earlier results; run again to update them. Appearance and camera controls do not change the numerical identity.
2. Use **Research tools** for a coordinate field probe, deterministic parameter studies, saved-run comparison and the complete configuration editor. IndexedDB storage belongs to the current browser; export run ZIPs for a portable copy.
3. Under **Import data locally**, choose the actual format, inspect its preview and accept it. Canonical imported fields/equilibria retain convention/source identities. Unsupported conventions and out-of-domain values are rejected or explicitly terminated; they are not silently extrapolated.
4. Use **Results → Export** for the complete run ZIP, full JSON, CSV events and typed cross-lab exports. Source and collector settings require a completed p–B source task. Collector entrance normal, observation interval and collected fraction are explicit assumptions. Read `OBSERVATORY-CROSS-LAB-TRANSFERS.md`; no escaping flux is inferred from a few demonstration particle paths.
5. Open **Scientific notebook** for the original Torus workbench and its existing research panels. Existing reactor, isotope, fusion, detector and direct-conversion workspaces remain at their original routes. The companion notebook route also resolves inside an installation subfolder.

The new browser worker accepts complete frozen configurations, echoes a run identifier and scientific hash, and cannot overwrite a newer run with a late message. Cancellation terminates the worker. Partial numerical results retain their status, events and diagnostics; they remain inspectable and exportable without being labelled successful completed observations.

## Upload and reproduction

Upload every file and directory in the release ZIP together, including `.htaccess`, `assets/runtime/v7.4.7/`, `torus-lab/research.html` and the data folder. Clear the site/CDN cache, then open `installation-check/index.html`. The package is a static website: it needs a real HTTP(S) server with JavaScript module MIME delivery, including the worker and shared chunks. Opening `file://` is not supported.

Run `./tools/validate.sh` to repeat the local release checks. `node tools/verify_observatory.mjs --check` verifies the independent numerical records, and `node tools/verify_live_host.mjs https://YOUR-INSTALLATION/` checks delivery after upload, including the preserved notebook. The latter is a read-only byte/MIME test, not a scientific or GPU certification. `tools/build_release_archive.sh` creates two independently assembled archives, compares their bytes, extracts one and checks every recorded payload checksum.

The complete v745 HTML/PDF dossier is preserved with its own version. This Observatory has separate model and verification documentation rather than retroactively changing an earlier scientific document's identity.

The dossier build now reads its own retained document release date from metadata. Advancing the application date no longer changes the bytes of the earlier HTML/PDF.
