MINOR-1 (spherical_functional.hpp:426)
Wrong comment said "second derivative < 0 for a convex functional".
The spherical energy is *concave* (NSD Hessian); the monotone-f argument
applies to both convex and concave functionals equally. Comment rewritten
to explain the actual physics: increasing scale increases all angles and
thus reduces Σ G_v.
MINOR-2 (spherical_functional.hpp:494-495)
Forward finite difference O(ε) → central finite difference O(ε²):
old: dft = (sum_Gv(t + fd_eps) - ft) / fd_eps
new: dft = (sum_Gv(t + fd_eps) - sum_Gv(t - fd_eps)) / (2*fd_eps)
Same cost when the extra sum_Gv(t - fd_eps) replaces the cached ft.
MINOR-3 (euclidean_functional.hpp, spherical_functional.hpp,
inversive_distance_functional.hpp)
New header gauss_legendre.hpp centralises the 10-point Gauss-Legendre
nodes and weights (gl10_nodes() / gl10_weights()). The three energy
functions now use the shared accessors instead of duplicated local
static arrays.
MINOR-4 (euclidean_functional.hpp, spherical_functional.hpp,
hyper_ideal_functional.hpp, inversive_distance_functional.hpp)
halfedge_to_index() centralised in conformal_mesh.hpp. All four local
aliases (eucl_hidx, spher_hidx, hidx, id_detail::hidx) now delegate to
it as one-line wrappers; the aliases are kept for now to avoid a larger
call-site churn, clearly documented as thin wrappers.
MINOR-5 (clausen.hpp:33-38)
Added a comment above inits() explaining the intentional off-by-one
return value and how it interacts with csevl() — matching the Java
Clausen.inits() / csevl() contract.
277/277 CGAL + 26/26 pure-math tests pass, 0 failed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Reviewer meeting materials
A single landing page for the three documents associated with an external-reviewer meeting. The materials are written for a peer who actively publishes in discrete differential geometry — specifically the decorated-DCE / Penner-coordinates / hyperideal-polyhedra / canonical-tessellations research line — and who would potentially use conformallab++ as numerical infrastructure for their own future experiments.
| Document | Audience | Purpose |
|---|---|---|
briefing.md |
the reviewer | one-page orientation: what the project is, where to look first, what we want from them |
questions.md |
the reviewer | the 5 concrete decisions we want their opinion on (skim before the meeting) |
agenda.md |
me | my own meeting playbook: timing, order, the "no" question, post-meeting memo template |
After the meeting, a fourth file 2026-XX-XX-meeting-notes.md should
land here too — the memo template at the bottom of agenda.md is the
suggested structure.
When to send to the reviewer
- briefing.md + questions.md: as part of the meeting-confirmation email, ~5 business days before the meeting. Subject line: "Pre-read for our conformallab++ chat (~15 min)".
- agenda.md: never send. This is internal scaffolding.
Hub-Page durability
The reviewer hub HTML at https://tmoussa.codeberg.page/ConformalLabpp/
is published from doc/reviewer/hub.html in the repo (not from a
detached preview branch). This means:
- Merging any of the open PRs into
maintriggers.gitea/workflows/doxygen-pages.ymlwhich republishes the hub alongside fresh Doxygen HTML — the reviewer URL stays live across merges with no manual intervention. - The hub is source-controlled, so changes are reviewable via PR like any other doc, and old versions live in git history.
- The original Doxygen index moves to
/doxygen.htmlwhenever the hub override is active; both are reachable from the hub itself.
Quick links the reviewer should bookmark
- 🌐 Reviewer-hub landing page: https://tmoussa.codeberg.page/ConformalLabpp/ (the hub shows status badges, a "what's new" banner with the most recent delta, the research-alignment table, and direct links into every document below)
- 📦 Source: https://codeberg.org/TMoussa/ConformalLabpp
- 📝 Architecture decisions (incl. the Q7 "no" prompt):
../architecture/locked-vs-flexible.md - 📐 Schläfli derivation (for Q3):
../math/hyperideal-hessian-derivation.md - 📚 Literature index (for Q1 + Q3):
../math/references.md - 🗺️ Per-phase roadmap (for Q1):
../roadmap/phases.md - 🧪 Research-track entries with acceptance criteria (Q1 + Q2):
../roadmap/research-track.md