Files
ConformalLabpp/doc/contributing.md
Tarik Moussa 14134b99ce
Some checks failed
C++ Tests / test-fast (push) Successful in 2m25s
C++ Tests / test-cgal (push) Failing after 1m58s
docs: restructure documentation into focused files
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

2.6 KiB

Contributing

Language

All code, comments, documentation, commit messages, and test descriptions must be in English.

The project targets CGAL submission and international collaboration. When editing files that still contain German-language comments or documentation, replace them with English.


Git workflow

  • main is protected on origin (Gitea). Push to dev, then open a pull request.
  • codeberg/main can be pushed to directly (public mirror, no CI).
  • Both remotes must stay in sync after every significant change:
    git push origin HEAD:dev   # triggers CI
    git push codeberg main     # updates public mirror
    
  • Branch naming: feature/<topic>, fix/<topic>, phase<N>-<topic>

CI

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 158 CGAL tests + 2 skips main, dev, PRs only

A PR is ready to merge when both jobs pass.

The runner is a self-hosted Raspberry Pi (ARM64). See .gitea/workflows/cpp-tests.yml and .gitea/docker/Dockerfile.ci-cpp.


Test standards

Every new algorithm needs:

  1. Gradient check — finite-difference verification of G(x) = ∂E/∂x. Copy any GradientCheck_* test suite from tests/cgal/test_*_functional.cpp.

  2. Convergence test — Newton converges on a small mesh using the "natural theta" trick (see CLAUDE.md and api/extending.md).

  3. Registration — add the .cpp file to code/tests/cgal/CMakeLists.txt.

Expected CI result: 36 + 158 tests pass, exactly 2 skipped. The 2 skips are intentional GTEST_SKIP() stubs for Phase 9b (analytic HyperIdeal Hessian) and Phase 9c (genus-2 homology). Do not remove them.


Code style

  • C++17. Header-only (code/include/*.hpp). No compiled library.
  • #pragma once at the top of every header.
  • Everything in the conformallab namespace, internal helpers in conformallab::detail.
  • Property map names follow the prefix convention: "v:" (vertex), "e:" (edge), "f:" (face).
  • DOF index -1 always means "pinned/fixed".

Releases

Release tags follow vMAJOR.MINOR.PATCH:

# Merge dev → main, then tag
git checkout main && git merge --no-ff dev
git tag -a vX.Y.Z -m "vX.Y.Z — <one-line summary>"
git push origin main && git push origin vX.Y.Z
git push codeberg main && git push codeberg vX.Y.Z

TODO

  • Define code review checklist
  • Add .clang-format configuration
  • Document how to request CGAL package review