Skip to content

Restore the Qt viewer and reproducible artifact generation #98

Description

@acgetchell

Current v1.0.0 plan (2026-07-24)

Starts after: #94. Blocks: #114.

The v1.0.0 decision is to retain the viewer as a bounded archival capability because it preserves an advertised historical feature and gives the repository-owned hero image reproducible provenance.

Restore the viewer only as an opt-in CGAL/Qt capability using the versioned #94 fixture/result contract. The normal build and verification oracle remain headless and free of Qt/Eigen.

The deliverable is a reproducible artifact workflow with recorded provenance and a noninteractive smoke check, not a visualization-architecture redesign.

Native GitHub dependency metadata is the source of truth for ordering.


Summary

Restore cdt-viewer as the supported CGAL/Qt renderer for CDT++ and make the README hero image reproducible from a clean checkout.

Scope

  • Enable the CGAL qt feature and required Qt/Eigen dependencies through an explicit vcpkg feature or supported equivalent.
  • Add an opt-in CMake option and preset for cdt-viewer without affecting ordinary configure, build, test, or oracle workflows.
  • Restore the viewer target against the selected CGAL 6.2 integration.
  • Define a repository-owned, versioned triangulation fixture for the README hero image and record its scientific parameters, seed or provenance, and expected topology counts.
  • Define a rendering manifest containing camera, projection, viewport dimensions, colors, line/point settings, background, output format, and canonical renderer/toolchain versions.
  • Provide one documented command that regenerates docs/images/S3-7-27528-I1-R1.png from the fixture and manifest.
  • Prefer automated offscreen export on the canonical supported platform. If portable pixel identity is unavailable, document the canonical environment and use a structural or perceptual check elsewhere.
  • Add noninteractive smoke coverage that loads and validates the fixture, initializes the renderer, and produces a nonempty image.
  • Inventory other active repository-owned visuals and either give them reproducible provenance or classify them as historical.

Non-goals

  • Do not add Qt or Eigen to the default headless build.
  • Do not make a display server a prerequisite for ordinary CI or scientific comparison.
  • Do not replace the CGAL/Qt renderer with a Python-only implementation.
  • Do not redesign the simulation or visualization architecture.
  • Do not require cross-platform pixel-identical output when the rendering stack cannot guarantee it.

Acceptance criteria

  • The default headless configure/build remains free of Qt and direct Eigen dependencies.
  • A clean checkout can install the explicit viewer dependencies and build cdt-viewer on the documented platform.
  • The viewer loads and validates the tracked hero triangulation fixture.
  • One documented command regenerates the committed hero image from repository-owned inputs without manual camera or style reconstruction.
  • The canonical environment produces the declared artifact; other supported environments have an explicit comparison tolerance or documented limitation.
  • Automated smoke coverage verifies a nonempty render artifact without blocking for interactive input.
  • Every active repository-owned visual has reproducible provenance or is explicitly historical.
  • The v1.0.0 archival documentation records the viewer support boundary and artifact-regeneration workflow.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions