v0.7.0 — Phase 7 complete: 173 Tests, Onboarding-Doku, geometry-central #3

Merged
user2595 merged 19 commits from dev into main 2026-05-18 18:40:00 +00:00

19 Commits

Author SHA1 Message Date
Tarik Moussa
c5efc3d3cc chore/docs: Onboarding-Sprint für externe Mathematiker
Some checks failed
C++ Tests / test-fast (push) Successful in 2m16s
C++ Tests / test-cgal (push) Has been skipped
C++ Tests / test-fast (pull_request) Successful in 2m27s
C++ Tests / test-cgal (pull_request) Failing after 2m11s
- LICENSE: Copyright Tarik Moussa <Tarik.moussa95@gmail.com> (war user2595)
- CITATION.cff: maschinenlesbares Zitat mit 3 Primärreferenzen (Sechelmann 2016,
  Springborn 2020, Bobenko–Springborn 2004)
- scripts/try_it.sh: Clone→Build→Test→Beispiel in einem Skript
- doc/math/software-landscape.md: Landkarte aller relevanten Tools,
  Problem-A vs. Problem-B Abgrenzung, vollständige Feature-Matrix
- doc/math/novelty-statement.md: formales Alleinstellungsmerkmal,
  Zielgruppen, was dieses Projekt nicht ist
- code/CMakeLists.txt: cmake --install Target für Header-only-Library
- doc/getting-started.md: Testzähler 158→173, Beispiel-Output, try_it.sh
- README.md: CI/License/DOI-Badges, Cite-Abschnitt, Issue-Tracker-Link,
  Copyright, neue Doku-Einträge software-landscape + novelty-statement

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 20:35:46 +02:00
Tarik Moussa
c8e77e715c docs: CLAUDE.md aktualisiert — Testzähler, Doku-Karte, geometry-central
All checks were successful
C++ Tests / test-fast (push) Successful in 2m7s
C++ Tests / test-cgal (push) Has been skipped
- Testzähler korrigiert: 158 CGAL / 2 skips → 173 CGAL / 1 skip
- Neue Sektion "Key documentation for mathematical context": Tabelle der
  wichtigsten Nachschlagewerke für mathematische Aufgaben (discrete-conformal-
  theory.md, geometry-modes.md, geometry-central-comparison.md, etc.)
- Kompakter geometry-central Absatz: was es ist, was es nicht hat, warum
  Kreuz-Validierung sinnvoll ist — Scope-Information für neue Sessions
- Finder-Duplicates-Quirk entfernt (längst behoben)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 02:15:48 +02:00
Tarik Moussa
b02f08625c docs: detaillierter geometry-central Vergleich (Abgrenzung, Adoption, Mehrwert)
All checks were successful
C++ Tests / test-fast (push) Successful in 2m59s
C++ Tests / test-cgal (push) Has been skipped
Neues Dokument doc/architecture/geometry-central-comparison.md:
- Gemeinsame mathematische Grundlage (Bobenko–Springborn 2004, Springborn 2020)
- Algorithmenvergleich: Newton (fixed triangulation) vs. Ptolemäische Flips
- Vollständige Feature-Matrix: was existiert wo, was fehlt wo
- Klare Adoptionsempfehlungen: Ptolemäischer Pre-Conditioner ja (GC-2),
  intrinsische Triangulierungen als Architektur nein (Begründung)
- 5 wissenschaftliche Mehrwerte: Kreuz-Validierung, Konvergenzstudie,
  Period-Matrix als Alleinstellungsmerkmal, Sphärische Geometrie, Springborn 2020
- Praktischer Roadmap GC-1 bis GC-paper mit Aufwandsschätzungen
- README-Eintrag ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 02:06:46 +02:00
Tarik Moussa
d25f3cafe6 docs: geometry-central Vergleich als optionalen Track einarbeiten
All checks were successful
C++ Tests / test-fast (push) Successful in 2m1s
C++ Tests / test-cgal (push) Has been skipped
- phases.md: neue Sektion "Optional/Hypothetisch — geometry-central
  Cross-Comparison" mit GC-1 (Output-Vergleich, sofort möglich),
  GC-2 (Intrinsic Delaunay Pre-Conditioning, nach Phase 8) und
  GC-3 (Ptolemäischer Flip-Solver, hypothetisch Phase 10+)
- validation.md: neuer Abschnitt 9 mit Vergleichstabelle, Normalisierungs-
  abgleich, Zeitplan und Springborn-2020-Einordnung
- references.md: Gillespie–Springborn–Crane SIGGRAPH 2021 + Sharp 2019
  als geometry-central-Referenzen eingetragen; Klarstellung zu Springborn 2020
- validation.md: Testzähler 170→173 / 11 skips→1 skip korrigiert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:56:16 +02:00
Tarik Moussa
d0dd1bad3b docs: README Testanzahl 170 → 173 (nach Java-Konvergenz-Tests)
All checks were successful
C++ Tests / test-fast (push) Successful in 1m58s
C++ Tests / test-cgal (push) Has been skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:42:23 +02:00
Tarik Moussa
52604d8544 docs: Konzeptdokument Declarative YAML Pipeline (Phase 8e)
doc/concepts/declarative-pipeline.md — vollständige Design-Spezifikation:

  1. Kernidee: Processing Units mit expliziten require/provide-Contracts
  2. Token-Vokabular: 30 Tokens in 7 Kategorien
       input, setup, Gauss-Bonnet, solver, topology, layout, period/domain/output
  3. YAML-Schema: Vollständige Syntax inkl. Parameterdefaults aller Units
  4. Validierungsalgorithmus: monoton wachsendes provided-Set, Pre-Execution-Check
  5. 5 vollständige Beispiele:
       A — Euklidische Uniformisierung Torus (τ-Ausgabe)
       B — Sphärische Uniformisierung (cathead.obj)
       C — Hyperbolische Uniformisierung Torus (Poincaré-Disk)
       D — Volle Pipeline mit Periodenmatrix + 5×5-Kachelung
       E — Absichtlich fehlerhaftes Beispiel mit Validator-Fehlermeldungen
  6. C++-Mapping: alle YAML-Unit-Namen → C++-Funktionen + Header
  7. Implementierungsplan (Phase 8e): pipeline.hpp + CLI-App + YAML-Abhängigkeit
  8. Design-Entscheidungen: YAML vs. JSON/TOML, explizit vs. auto-inference,
     linear vs. DAG, eine Geometrie pro Datei

doc/api/cgal-package.md: Link zum Konzeptdokument ergänzt.
README.md: Link in Dokumentationstabelle ergänzt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:39:14 +02:00
Tarik Moussa
de3a35ad4f test: Java-Konvergenz- + Homologie-Tests portiert — 173 CGAL-Tests
All checks were successful
C++ Tests / test-fast (push) Successful in 2m0s
C++ Tests / test-cgal (push) Has been skipped
Mesh-Dateien aus Java-Referenzimplementierung übernommen:
  code/data/obj/cathead.obj    — offenes Mesh (Java: cathead.obj)
  code/data/obj/tetraflat.obj  — flaches Tetraeder (Java: tetraflat.obj)
  code/data/obj/brezel.obj     — Genus-1-Brezel (Java: brezel.obj)
  code/data/obj/brezel2.obj    — Genus-2-Brezel, V=2622 F=5248 χ=−2 (Java: brezel2.obj)
code/.gitignore: !data/**/*.obj — Mesh-Daten von *.obj-Regel ausgenommen.

Neue Tests in test_geometry_utils.cpp:

  HomologyGenerators.Genus2_FourCutEdges                    [vorher: GTEST_SKIP]
    Java: HomologyTest.testHomology — brezel2.obj, expects paths.size()==4
    C++:  compute_cut_graph(brezel2) → cut_edge_indices.size()==4, genus==2

  EuclideanLayout.DoLayout_TetraFlat_EdgeLengthsPreserved   [neu]
    Java: EuclideanLayoutTest.testDoLayout — tetraflat.obj, u=0, l3D==lUV (1e-11)
    C++:  euclidean_layout(tetraflat, x=0) → alle UV-Kantenlängen == 3D (1e-10)

  EuclideanLayout.CatHead_NewtonConverges_AngleSumsTwoPi    [neu]
    Java: EuclideanLayoutTest.testLayout02 + EuclideanCyclicConvergenceTest
    C++:  newton_euclidean(cathead) konvergiert, Gradientenreste < 1e-6

  SphericalLayout.SphericalTetrahedron_NewtonConverges_AngleSumsTwoPi [neu]
    Java: SphericalConvergenceTest.testSphericalConvergence
    C++:  newton_spherical(sph_tetrahedron) konvergiert, Winkeldefekte < 1e-6

CMakeLists.txt: CONFORMALLAB_DATA_DIR=${CMAKE_SOURCE_DIR}/data als Compile-Def.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:33:21 +02:00
Tarik Moussa
b235666725 docs: Doxygen-API + Validierungsprotokoll + Porting-Tutorial
All checks were successful
C++ Tests / test-fast (push) Successful in 2m15s
C++ Tests / test-cgal (push) Has been skipped
Für einen Mathematiker der unabhängig validieren und eigene Forschung
einbringen möchte.

Doxygen-Kommentare (code/include/):
  newton_solver.hpp — newton_euclidean(), newton_spherical(), newton_hyper_ideal()
    je mit \param, \return, \note, \see inkl. mathematischer Begründung
    (Konvexität, Vorzeichenkonvention, SparseQR-Fallback-Erklärung)
  layout.hpp — euclidean_layout(), spherical_layout(), hyper_ideal_layout()
    mit vollständiger Parameter-Doku, halfedge_uv-Semantik, Poincaré-Disk-Note

Neues Dokument:
  doc/math/validation-protocol.md
    7 reproduzierbare Checks mit konkreten Befehlen und erwartetem Output:
    0. 170 Tests, 1 Skip
    1. Gauss–Bonnet exakt (1e-10)
    2. FD-Gradientencheck < 1e-6 für alle 3 Geometrien
    3. Newton-Konvergenz < 50 Iterationen
    4. τ ∈ SL(2,ℤ)-Fundamentaldomäne (3 Invarianten)
    5. Möbius-Arithmetik (Inverse, Compose, from_three)
    6. End-to-End-Pipeline
    7. Manueller τ-Check für torus_4x4.off (Codebeispiel)

Neues Tutorial:
  doc/tutorials/add-inversive-distance.md
    Vollständiger Step-by-Step-Port von Phase 9a (Luo 2004):
    Header anlegen, Energie/Gradient implementieren, FD-Check,
    Newton-Wrapper, CMakeLists, Java-Referenzvergleich, Checkliste.

doc/getting-started.md:
  Abschnitt "Known issues": macOS-Finder-Duplikate (rm-Befehl),
  Warnung "First build 30–90s" (Tarball-Extraktion)

README.md:
  Zwei neue Links in der Dokumentationstabelle (validation-protocol,
  tutorial)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:19:44 +02:00
Tarik Moussa
e28aee7051 docs: Mathematiker-Onboarding — Theorie, Validierung, Beispiel-Meshes, 170 Tests
All checks were successful
C++ Tests / test-fast (push) Successful in 2m20s
C++ Tests / test-cgal (push) Has been skipped
Ziel: einem interessierten Mathematiker ermöglichen, die bisherige Arbeit
      unabhängig zu validieren und eigene Forschung beizutragen.

Neu:
  doc/math/discrete-conformal-theory.md
      Kompakte mathematische Einführung (DCE, Variationsprinzip, drei
      Geometriemodi, Holonomie, Periodenmatrix) für Riemann-Flächen-Kenner.

  doc/math/validation.md
      Analytisch bekannte Sollwerte + wie man sie mit dem Code prüft:
      Gauss–Bonnet (χ), τ ∈ Fundamentaldomäne (3 Invarianten), Symmetrie-
      Argumente für τ=i (4-fach) und τ=e^{iπ/3} (6-fach), Newton-Konvergenz,
      Gradienten-Check (FD), Holonomie-Kommutator. Reviewer-Checkliste.

  CONTRIBUTING.md (Root)
      Gitea/GitHub-Standard: CONTRIBUTING.md im Root-Verzeichnis als
      Kurzreferenz mit Links zu doc/contributing.md und den Math-Docs.

  code/data/off/torus_4x4.off   — 16 Vertices, 32 Flächen, Genus 1
  code/data/off/torus_8x8.off   — 64 Vertices, 128 Flächen, Genus 1
  code/data/off/torus_hex_6x6.off — 36 Vertices, 72 Flächen, 6-fach Sym.

Aktualisiert:
  README.md              — 158 → 170 Tests, zwei neue Math-Links in Tabelle
  doc/api/tests.md       — 28 Suiten, 170 Tests, 1 Skip (korrigiert)
  doc/contributing.md    — Testzähler 158+2 → 170+1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:11:00 +02:00
Tarik Moussa
04b0ae22f2 ci: run CGAL tests only on pull requests, not on every push
All checks were successful
C++ Tests / test-fast (push) Successful in 2m48s
C++ Tests / test-cgal (push) Has been skipped
Reduces Pi load: test-cgal now triggers only when a PR is opened/updated,
not on every push to dev or main. test-fast continues to run on all branches.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:07:37 +02:00
Tarik Moussa
c91230579f ci: limit CGAL build to -j2 and nice -n 19 to protect Pi web server
Some checks failed
C++ Tests / test-fast (push) Successful in 2m26s
C++ Tests / test-cgal (push) Has been cancelled
-j$(nproc) during CGAL+Eigen template compilation consumed ~1.5-2 GB
peak RAM on the Raspberry Pi CI runner, starving the Gitea web server.

Changes:
- CGAL build: -j$(nproc) → -j2 (halves peak memory, ~700 MB per process)
- Both builds: nice -n 19 (lowest CPU priority, web server keeps preemption)
- test-cgal container: hard memory cap --memory=1400m --memory-swap=1400m
  so the container is OOM-killed rather than taking down the whole system

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 22:12:30 +02:00
Tarik Moussa
66d52fc028 docs: fill information gaps — headers, tests, design decisions, project structure
Some checks failed
C++ Tests / test-fast (push) Successful in 2m13s
C++ Tests / test-cgal (push) Failing after 3h1m49s
doc/api/headers.md              — all 24 public headers with descriptions
doc/api/tests.md                — 26 test suites, individual counts, run instructions
doc/architecture/design-decisions.md  — 5 key design choices with rationale
doc/architecture/project-structure.md — full directory tree + build targets

README + overall_pipeline.md link tables updated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:40:16 +02:00
Tarik Moussa
95d48c434a chore: .gitignore + vergessene Doc-Dateien nachgetragen
.gitignore: build-Verzeichnisse, .DS_Store, .claude/, CMake-Artefakte
Doc-Dateien die beim Restructure-Commit fehlten:
  doc/api/headers.md             — alle 24 Public-Header mit Beschreibung
  doc/api/tests.md               — 26 Suiten, 158 Tests, Einzelzahlen
  doc/architecture/design-decisions.md — Architekturentscheidungen + Begründung
  doc/architecture/project-structure.md — Verzeichnisbaum + Build-Targets
README.md: Links zu den vier neuen Doc-Dateien ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:40:05 +02:00
Tarik Moussa
5859d78a37 fix(deps): extract CGAL for WITH_CGAL_TESTS=ON
Some checks failed
C++ Tests / test-fast (push) Successful in 2m43s
C++ Tests / test-cgal (push) Has been cancelled
deps/CMakeLists.txt only extracted CGAL when WITH_CGAL=ON.
With -DWITH_CGAL_TESTS=ON the CGAL include path was never populated,
causing fatal error: CGAL/Simple_cartesian.h: No such file or directory.

Fix: extract CGAL-6.1.1 for both WITH_CGAL and WITH_CGAL_TESTS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:37:02 +02:00
Tarik Moussa
14134b99ce docs: restructure documentation into focused files
Some checks failed
C++ Tests / test-fast (push) Successful in 2m25s
C++ Tests / test-cgal (push) Failing after 1m58s
README.md: reduced from 703 to ~75 lines — what/why, status, quick
start, minimal usage example, navigation table to doc/ files.

doc/architecture/overall_pipeline.md: trimmed — roadmap, extension
points, declarative pipeline YAML, and references sections removed
(each now has its own dedicated file). Replaced with a link table.

New files:
  doc/getting-started.md       — build modes, single-test invocation, CLI
  doc/api/pipeline.md          — full pipeline API with code for all 3 geometries
  doc/api/extending.md         — new functionals, geometry modes, Java porting guide
  doc/api/contracts.md         — processing unit preconditions/provides table
  doc/api/cgal-package.md      — Phase 8 CGAL package design + YAML pipeline (TODO)
  doc/math/geometry-modes.md   — Euclidean/Spherical/HyperIdeal comparison
  doc/math/references.md       — all papers by module
  doc/roadmap/phases.md        — Phases 1–10 with porting/research boundary
  doc/roadmap/java-parity.md   — Java vs C++ feature parity table
  doc/contributing.md          — language policy, test standards, release flow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 21:17:15 +02:00
Tarik Moussa
279f964b96 docs(claude): rewrite CLAUDE.md with full project context
Some checks failed
C++ Tests / test-fast (push) Successful in 2m35s
C++ Tests / test-cgal (push) Failing after 2m5s
Incorporates README, architecture doc, and Java ConformalLab source
structure. Adds:
- Long-term CGAL package goal made explicit
- Language policy: all code/comments/docs in English
- Java-to-C++ porting table (what is done, what is Phase 9, what is Phase 10)
- Java class names as reference anchors for future porting work
- "Natural theta" and gradient-check test patterns
- Halfedge traversal conventions
- CI job table with expected pass/skip counts
- Both remotes (origin + Codeberg) sync requirement
- Known quirks (Finder duplicates, protected main, Boost header-only)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:58:52 +02:00
Tarik Moussa
26405be149 docs: add CLAUDE.md — context file for Claude Code
Some checks failed
C++ Tests / test-fast (push) Successful in 2m29s
C++ Tests / test-cgal (push) Failing after 1m51s
Covers build commands (all three modes), single-test invocation,
header-only architecture, the three geometry modes, Newton solver
sign conventions, layout BFS design, test patterns, CI structure,
and known quirks (Finder ` 2.hpp` duplicates, CGAL compile flags).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:47:01 +02:00
Tarik Moussa
9c35c2cb71 fix(ci): entferne WITH_CGAL_TESTS=ON aus test-fast — Job braucht kein Boost
Some checks failed
C++ Tests / test-fast (push) Successful in 2m51s
C++ Tests / test-cgal (push) Failing after 2m10s
test-fast ist der schnelle, abhängigkeitsfreie Job: nur Eigen + GTest.
WITH_CGAL_TESTS=ON in test-fast triggert unnötigerweise find_package(Boost)
und konfiguriert das CGAL-Test-Verzeichnis.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:39:32 +02:00
Tarik Moussa
4e8213f9aa fix(ci): cpp-tests.yml bereinigt — WITH_CGAL_TESTS=ON in test-fast, Boost-Kommentar aktuell
Some checks failed
C++ Tests / test-fast (push) Failing after 2m31s
C++ Tests / test-cgal (push) Has been skipped
- test-fast konfiguriert jetzt mit -DWITH_CGAL_TESTS=ON (Boost im Image)
- Kommentar aktualisiert (Boost kein Runtime-Install mehr nötig)
- Konsistenz zwischen test-fast und test-cgal hergestellt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 20:34:52 +02:00