diff --git a/CLAUDE.md b/CLAUDE.md index d472880..ce48d9b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -244,13 +244,7 @@ Two jobs in `.gitea/workflows/cpp-tests.yml`: Runner: `eulernest` — self-hosted Raspberry Pi, ARM64, Ubuntu 22.04. Docker image: `git.eulernest.eu/conformallab/ci-cpp:latest`. `test-cgal` needs `test-fast` to pass first (`needs: test-fast`). -Expected results: **36 non-CGAL tests pass**, **174 CGAL tests pass, 2 skipped**. - -The 2 intentional skips are Java `@Ignore` ports: -- `EuclideanFunctional.GradientCheck_Hessian` — analytic Euclidean Hessian gradient check -- `SphericalFunctional.GradientCheck_Hessian` — analytic Spherical Hessian gradient check - -Both are deferred to Phase 9b. Do not remove them. +Expected results: **36 non-CGAL tests pass**, **176 CGAL tests pass, 0 skipped**. ## Release state @@ -298,7 +292,7 @@ Root-level files added at v0.7.0: | Full pipeline API for all three geometries | `doc/api/pipeline.md` | | What does each processing unit require/provide (contracts)? | `doc/api/contracts.md` | | How to add a new functional / geometry mode / port from Java | `doc/api/extending.md` | -| All 34 test suites, 174+36 tests, individual counts | `doc/api/tests.md` | +| All 35 test suites, 176+36 tests, individual counts | `doc/api/tests.md` | | Phase 8 CGAL package design + Declarative YAML pipeline spec | `doc/api/cgal-package.md` | ### Concepts & specs diff --git a/doc/api/tests.md b/doc/api/tests.md index b88cfaa..ac30e40 100644 --- a/doc/api/tests.md +++ b/doc/api/tests.md @@ -29,8 +29,8 @@ All tests have CTest prefix `cgal.` (set via `TEST_PREFIX "cgal."` in CMakeLists | `ConformalMeshProperties` | `test_conformal_mesh.cpp` | 5 | Property maps (λ, θ, idx, α, geometry type) | | `ConformalMeshValidity` | `test_conformal_mesh.cpp` | 1 | CGAL validity for all factory meshes | | `HyperIdealFunctional` | `test_hyper_ideal_functional.cpp` | 7 | FD gradient checks + Hessian symmetry | -| `SphericalFunctional` | `test_spherical_functional.cpp` | 12 | Angle formula + gradient + gauge-fix *(1 skipped)* | -| `EuclideanFunctional` | `test_euclidean_functional.cpp` | 12 | Angle formula + gradient *(1 skipped)* | +| `SphericalFunctional` | `test_spherical_functional.cpp` | 12 | Angle formula + gradient + gauge-fix + cross-module Hessian check | +| `EuclideanFunctional` | `test_euclidean_functional.cpp` | 12 | Angle formula + gradient + cross-module Hessian check | | `EuclideanHessian` | `test_euclidean_hessian.cpp` | 9 | Cotangent Laplacian structure, FD agreement, PSD, null space | | `SphericalHessian` | `test_spherical_hessian.cpp` | 8 | Derivative correctness, NSD at equilibrium | | `NewtonSolver` | `test_newton_solver.cpp` | 11 | Convergence: Euclidean ×3, Spherical ×4, HyperIdeal ×4 | @@ -59,11 +59,7 @@ All tests have CTest prefix `cgal.` (set via `TEST_PREFIX "cgal."` in CMakeLists | `HomologyGenerators` | `test_geometry_utils.cpp` | 1 | Genus-2 cut graph: χ = −2, 4 cut edges (`brezel2.obj`) | | `SmokeEuclidean` | `test_scalability_smoke.cpp` | 3 | Smoke tests on real meshes: CatHead (open), Brezel genus-1, Brezel2 genus-2 | -**Total: 176 tests, 2 intentional skips.** - -The 2 skips are Java `@Ignore` ports — stubs until the analytic Hessian gradient checks are implemented (Phase 9b): -- `SphericalFunctional.GradientCheck_Hessian` -- `EuclideanFunctional.GradientCheck_Hessian` +**Total: 176 tests, 0 skipped.** --- diff --git a/doc/contributing.md b/doc/contributing.md index 55f57fd..05eaaba 100644 --- a/doc/contributing.md +++ b/doc/contributing.md @@ -30,7 +30,7 @@ Two jobs run on push to `dev`/`main` or on pull requests: | Job | What it tests | Trigger | |---|---|---| | `test-fast` | 36 non-CGAL tests, no Boost | all branches | -| `test-cgal` | 170 CGAL tests + 1 skip | `main`, `dev`, PRs only | +| `test-cgal` | 176 CGAL tests, 0 skipped | `main`, `dev`, PRs only | A PR is ready to merge when both jobs pass. @@ -51,10 +51,7 @@ Every new algorithm needs: 3. **Registration** — add the `.cpp` file to `code/tests/cgal/CMakeLists.txt`. -Expected CI result: **36 + 170 tests pass, exactly 1 skipped**. -The skip is an intentional `GTEST_SKIP()` stub for the genus-2 homology test -(`cgal.HomologyGenerators.Genus2_FourGeneratorPaths_BLOCKED`) — blocked until a -genus-2 mesh is available in Phase 9c. Do not remove it. +Expected CI result: **36 + 176 tests pass, 0 skipped**. --- diff --git a/doc/getting-started.md b/doc/getting-started.md index 6903000..9091c5c 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -60,7 +60,7 @@ cmake --build build --target conformallab_cgal_tests -j$(nproc) ctest --test-dir build -R "^cgal\." --output-on-failure ``` -Expected: **173 tests pass, 1 skipped** (intentional stub for analytic HyperIdeal Hessian, Phase 9b). +Expected: **176 tests pass, 0 skipped**. ### Mode 3 — Full local build (CLI app + interactive viewer) @@ -146,7 +146,7 @@ sets x* = 0, so a small perturbation (-0.05) needs only one Newton step. bash scripts/try_it.sh ``` This clones nothing (run from inside the repo), builds the CGAL test suite, runs -all 173+36 tests, and prints a summary. See `scripts/try_it.sh` for details. +all 176+36 tests, and prints a summary. See `scripts/try_it.sh` for details. --- diff --git a/doc/math/novelty-statement.md b/doc/math/novelty-statement.md index 5090bd2..b559d44 100644 --- a/doc/math/novelty-statement.md +++ b/doc/math/novelty-statement.md @@ -91,7 +91,7 @@ is an open research question that this library is designed to investigate. ### 3.4 — Full test coverage of analytic invariants -173 CGAL tests verify mathematically provable properties: +176 CGAL tests verify mathematically provable properties: - Gauss–Bonnet: Σ(2π−Θᵥ) = 2π·χ(M) to machine precision - τ ∈ fundamental domain: three inequalities - Holonomy closure: [T_a, T_b] = Id (abelian for genus 1) @@ -120,7 +120,7 @@ conformallab++ is a port of Stefan Sechelmann's Java ConformalLab (TU Berlin, ~850 commits, v1.0.0 2018, LGPL). The port: - Replaces the custom Java halfedge structure (`CoHDS`) with `CGAL::Surface_mesh` -- Replaces JUnit tests with GTest + CGAL test format (173 tests) +- Replaces JUnit tests with GTest + CGAL test format (176 tests) - Adds Doxygen API documentation, CMake build, and CLI - Is MIT licensed (the Java original is LGPL) - Targets submission to the CGAL library as package `Discrete_conformal_map` diff --git a/doc/math/validation-protocol.md b/doc/math/validation-protocol.md index 3fb60a0..04d3493 100644 --- a/doc/math/validation-protocol.md +++ b/doc/math/validation-protocol.md @@ -199,7 +199,7 @@ inner/outer edge lengths). Use `torus_8x8.off` for a finer approximation. ## Summary checklist ``` -[ ] Check 0: 170 tests pass, 1 skip +[ ] Check 0: 176 tests pass, 0 skipped [ ] Check 1: Gauss–Bonnet exact (1e-10) [ ] Check 2: FD gradient < 1e-6 for all 3 geometries [ ] Check 3: Newton convergence < 50 iterations diff --git a/doc/math/validation.md b/doc/math/validation.md index 26b9873..2f2f19c 100644 --- a/doc/math/validation.md +++ b/doc/math/validation.md @@ -14,7 +14,7 @@ cmake --build build --target conformallab_cgal_tests ctest --test-dir build -R cgal --output-on-failure ``` -All 173 tests pass (1 skipped by design — see `doc/api/tests.md`). +All 176 tests pass, 0 skipped (see `doc/api/tests.md`). --- @@ -260,7 +260,7 @@ im Phasen-Roadmap). Run these in order to validate the implementation: -- [ ] `ctest --test-dir build -R cgal --output-on-failure` → 173 tests pass, 1 skip +- [ ] `ctest --test-dir build -R cgal --output-on-failure` → 176 tests pass, 0 skipped - [ ] `cgal.GaussBonnet.*` all pass → topology is correctly read from mesh - [ ] `cgal.EuclideanFunctional.GradientCheck_*` pass → energy = integral of gradient - [ ] `cgal.PeriodMatrix.TauInFundamentalDomain_*` pass → SL(2,ℤ) reduction correct diff --git a/scripts/try_it.sh b/scripts/try_it.sh index c42723d..dfe2646 100755 --- a/scripts/try_it.sh +++ b/scripts/try_it.sh @@ -10,7 +10,7 @@ # bash scripts/try_it.sh # # Expected output (last lines): -# [PASS] 174 CGAL tests pass, 2 skipped +# [PASS] 176 CGAL tests pass, 0 skipped # [PASS] 36 non-CGAL tests pass # [EXAMPLE] Converged in N iterations. ||G||_inf < 1e-9