Files
ConformalLabpp/doc/reviewer/agenda.md
Tarik Moussa 7a1686daa5
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 2m26s
API Docs / doc-build (pull_request) Successful in 51s
Markdown link check / check (pull_request) Successful in 48s
C++ Tests / test-cgal (pull_request) Failing after 11m25s
C++ Tests / quality-gates (pull_request) Successful in 2m22s
feat: output_uv_map for InversiveDistance, error for CP-Euclidean, reviewer trio
Three reviewer-meeting deliverables in one commit.

(1) output_uv_map for the two remaining DCE entries
    ─────────────────────────────────────────────────
    * Discrete_inversive_distance.h: full implementation.  After Newton,
      reconstruct effective Euclidean edge lengths from the converged
      log-radii via the Bowers-Stephenson identity
      `ℓᵢⱼ² = rᵢ² + rⱼ² + 2·Iᵢⱼ·rᵢ·rⱼ`, populate a temporary
      EuclideanMaps with `lambda0 = log(ℓᵢⱼ²)`, and reuse the existing
      `euclidean_layout(mesh, 0, eucl)` priority-BFS.  Per-vertex
      Point_2 coordinates written into the user-supplied pmap.
      Optional `normalise_layout(true)` applies the canonical PCA
      centroid + major-axis rotation, same as the other 3 entries.

    * Discrete_circle_packing.h: throws std::runtime_error with a
      clear pointer to Phase 9c rather than silently producing
      nonsense.  CP-Euclidean is face-based; the faithful output is a
      per-face circle packing in ℝ², not a per-vertex Point_2 map.
      A true layout requires BPS-2010 §6 (~150 lines, on the porting
      roadmap as Phase 9c).  Failing loudly is the honest default.

    Tests: 2 new cases in test_cgal_phase8b_lite.cpp
    (OutputUvMap_InversiveDistance_PopulatesPmap;
    OutputUvMap_CPEuclidean_ThrowsClearly).  Both green.
    Suite total now 259 (was 257, +2).  CGAL subtotal: 234 → 236.

(2) Reviewer meeting documents
    ──────────────────────────
    New directory doc/reviewer/ with three files:

    * briefing.md  — one-page orientation for the reviewer.
      What the project is, where to look first
      (https://tmoussa.codeberg.page/ConformalLabpp/), the headline
      evidence (tests/coverage/sanitizers/license), what we want from
      them, what's deferred and why, and the 5 questions in a separate
      file.

    * questions.md — the 5 concrete decisions we want their second
      opinion on:
        Q1 Phase 9c (port-literal vs re-derive)
        Q2 Phase 9b-analytic (worth ~2 weeks for ~6× speedup?)
        Q3 CP-Euclidean output_uv_map (build now or defer?)
        Q4 CGAL submission strategy (one package or five?)
        Q5 geometry-central cross-validation co-authorship
      Plus an explicit "what would you say no to?" question at the
      bottom — negative feedback is the highest-value information.

    * agenda.md   — my own internal playbook (NOT to be sent).
      60-min flow: 5-min thank-you, 10-min architecture tour,
      30-min for Q1-Q5 in the order Q4-Q1-Q2-Q5-Q3, 5-min "no"
      question, 5-min wrap-up.  Includes post-meeting memo template
      to fill out in the 30 min after.

    * README.md    — index for the directory; says which file goes
      to whom and when to send.

(3) locked-vs-flexible.md known-limitations update
    ─────────────────────────────────────────────
    "output_uv_map covers 3 of 5 entries" → "covers 4 of 5".
    CP-Euclidean's throws-clearly behaviour documented as a Phase 9c
    deliverable rather than a passive gap.

Bonus: extended .codespellrc ignore list (acknowledgement, the
British-English spelling I used in agenda.md).

Verifications on this commit:
  259/259 tests pass (0 skipped)
  scripts/check-test-counts.sh:                OK (23 + 236 = 259)
  scripts/quality/license-headers.sh:          OK (66/66 SPDX)
  python3 scripts/quality/cgal-conventions.py: OK (0/6 violations)
  scripts/quality/codespell.sh:                OK (0 typos)
  scripts/quality/shellcheck.sh:               OK (0 findings)
  python3 scripts/check-markdown-links.py:     OK (143/143)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 21:40:55 +02:00

115 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Reviewer meeting — agenda (for me)
> **Audience.** Myself, before the meeting. Not shared with the
> reviewer (they have [`briefing.md`](briefing.md) and
> [`questions.md`](questions.md) instead).
>
> **Purpose.** Keep the conversation on the high-stakes items
> without slipping into detail-tour mode.
**Length:** ~60 min (default; willing to extend if conversation is
productive).
## Opening — 5 min
- **Thank-you** + ~30 s on why I value their time specifically
(Springborn/Bobenko background = best-positioned audience for
this material).
- **Confirm format**: they've read `briefing.md`? Yes → skip ahead.
No → take 3 min to walk through it together via the reviewer-hub
URL.
## §1 Architectural tour — 10 min
Goal: they leave §1 with a mental map of what's where.
1. Open <https://tmoussa.codeberg.page/ConformalLabpp/>.
2. Click through:
- Doxygen → `discrete_conformal_map_euclidean` (the canonical entry,
shows the named-parameter pattern + traits).
- `locked-vs-flexible.md` § Summary table.
- `dependencies.md` § TL;DR.
3. **Don't** demo running the test suite live unless they ask —
they can verify the green badges later.
**Cue to move on**: when they have no more "where is X?" questions.
## §2 The five questions — 30 min
Goal: get clear answers to as many of the 5 questions in
[`questions.md`](questions.md) as possible. Order matters:
1. **Q4 first** (CGAL submission strategy — single package vs five).
This sets the framing for the rest. ~5 min.
2. **Q1** (Phase 9c port-literal vs re-derive). ~5 min.
3. **Q2** (Phase 9b-analytic — is the 6× speedup worth ~2 weeks?).
May trigger longer math discussion; cap at 10 min and offer to
continue async.
4. **Q5** (GC-1 cross-validation co-authorship). ~5 min.
5. **Q3** (CP-Euclidean output_uv_map). ~5 min.
**Trap to avoid**: don't relitigate any of the already-made decisions
(e.g. Surface_mesh as default, Eigen as backend) unless they bring it
up under "anything you'd say no to". Move forward, not sideways.
## §3 The "no" question — 5 min
Last paragraph of [`questions.md`](questions.md): *"Is there one
architecture decision where you think 'no, that's the wrong call'?"*
Ask explicitly. Wait. Don't fill silence. Negative feedback at this
phase is the highest-value information of the entire meeting.
## §4 Wrap-up — 5 min
- **Summarise**: 1 sentence per Q1Q5 answer.
- **Next steps**:
- Items they offered to help on (if any) → I'll send a follow-up
email within 48 h.
- Items they flagged as worth changing → I'll write a one-page
plan + send for sign-off before starting work.
- **Cadence**: do they want a periodic update? Once-a-quarter? When
hitting Phase 9c milestone?
- **Citation**: ask whether they want acknowledgement in the
CGAL submission's `THANKS.md`.
## Material I have ready (in tabs)
1. <https://tmoussa.codeberg.page/ConformalLabpp/>
2. <https://codeberg.org/TMoussa/ConformalLabpp> (source)
3. Local terminal in the repo (for any "show me X" requests)
4. `doc/math/hyperideal-hessian-derivation.md` open in editor
(for Q2)
5. `doc/architecture/locked-vs-flexible.md` open at "Summary table"
6. This file, [`questions.md`](questions.md), and
[`briefing.md`](briefing.md) for backstop.
## After the meeting
- 30-min decompression — don't take notes during the meeting beyond
bullet-tracking of Q1Q5 answers; write up a full memo in the 30 min
AFTER.
- Memo template:
```
Date: ____
Reviewer: ____
Duration: ____ min
Q1 answer: ____
Q2 answer: ____
Q3 answer: ____
Q4 answer: ____
Q5 answer: ____
"No" pointer: ____
Action items:
[ ] (within 48 h) ____
[ ] (within 2 wks) ____
[ ] (longer term) ____
Cadence agreed: ____
```
- Store the memo at `doc/reviewer/2026-XX-XX-meeting-notes.md`
(gitignored if confidential, otherwise committed).