|
CDT++ 1.0.0-rc3
Causal Dynamical Triangulations in C++
|
cdt-viewer is a reproducible archival renderer for the CDT++ documentation, not part of the cross-platform simulation interface. It restores CGAL 6.2's Qt basic viewer as an explicit macOS opt-in while keeping the supported reference, parallel, and debug builds headless.
On macOS, a clean checkout can build the viewer and run its noninteractive render smoke test with:
Regenerate and validate the tracked README hero image with one command:
viewer-render reads viewer/manifests/v1/hero.json, loads and validates its versioned OFF fixture and metadata sidecar, renders docs/images/S3-7-27528-I1-R1.png, and verifies the complete tracked artifact contract. The static validation is also available without building Qt:
For interactive inspection after just viewer-build, omit --output:
The viewer CMake preset sets ENABLE_VIEWER=ON and requests the vcpkg manifest feature of the same name. That feature opts CGAL into its qt feature; CGAL owns the resulting Qt and Eigen dependency boundary. No viewer feature, Qt package lookup, or viewer target is present in an ordinary headless configure.
The canonical input is viewer/fixtures/v1/S3-7-27528-I1-R1-seed30.off, accompanied by its required .off.meta integrity and provenance manifest. It was produced from revision 8f765ee90d873e51ba2c15bd51a7e85a6558c1fa with:
The fixture contains 4,940 vertices, 33,746 edges, 56,335 faces, and 27,528 simplices across timeslices 1 through 7. Its SHA-256 digest and the payload size, FNV-1a checksum, placement fingerprint, and topology fingerprint from the sidecar are checked before rendering.
Seed 30 was chosen empirically, and this tracked run matched the legacy hero's 27,528-simplex count. The seed reproduces the random inputs, not necessarily CGAL's exact tetrahedralization, so the checked-in OFF payload is the canonical rendering fixture.
viewer/manifests/v1/hero.json conforms to viewer/schema/render-manifest-v1.schema.json. It pins:
The archival style deliberately renders outward-facing colored facets, limits vertex marks to the convex hull, and derives thin black separators from color discontinuities in the finished frame. This avoids CGAL 6.2's all-interior edge pass obscuring the surface while retaining the black-wireframe and red-vertex character of the historical hero.
The CTest smoke renderer creates its PNG through Qt's framebuffer path without displaying an interactive window. It rejects dependency-version mismatches, corrupt or topologically different fixtures, wrong output dimensions, empty files, and images below the declared foreground-pixel threshold.
Exact PNG identity is required only on the canonical macOS 26.6.1 arm64, Xcode 26.6, CGAL 6.2-I-900, and Qt 6.11.1 renderer recorded by the manifest. Other environments may differ in rasterization and must instead pass fixture integrity, topology, image-dimension, nonempty-file, and foreground-pixel checks. Linux and Windows remain supported for the headless application, but are not supported viewer-generation platforms for v1.0.0.
| Artifact | Classification | Provenance and policy |
|---|---|---|
| docs/images/S3-7-27528-I1-R1.png | Active reproducible hero | Generated by just viewer-render from the versioned fixture and manifest above; referenced by the README. |
| docs/images/26.eps | Historical archival visual | Original provenance is unavailable; retained for history and not referenced by active documentation. |
| docs/images/26.png | Historical archival visual | Raster counterpart of 26.eps; original render inputs and parameters are unavailable. |
| docs/images/44.png | Historical archival visual | Original render inputs and parameters are unavailable; no reproducibility claim is made. |
| docs/images/t8-v68-s298.png | Historical archival visual | Original render inputs and parameters are unavailable; no reproducibility claim is made. |
Historical visuals are intentionally not accepted as validation evidence. New active documentation visuals must add a versioned source fixture or data file, an explicit generation manifest or command, and an automated structural check; canonical raster identity should be pinned only when the rendering platform and toolchain are also pinned.