| # CodeRabbit configuration for Eigen. |
| # Schema: https://docs.coderabbit.ai/reference/configuration |
| # |
| # Eigen is a header-only C++14 template library, GitLab-hosted, with a strict |
| # ABI policy and several major downstream consumers (notably TensorFlow). The |
| # settings below favor signal over volume: chill profile, minimal noise on |
| # auto-generated docs and vendored Fortran, and explicit guidance for the |
| # template-heavy core. |
| |
| language: en-US |
| |
| tone_instructions: >- |
| Eigen, header-only C++14. Focus: correctness, numerical accuracy (SOTA; |
| flag regressions, defer few-ULP tradeoffs to humans), ABI, performance, |
| template metaprogramming pitfalls, missing tests. Skip style |
| nits and C++17+. |
| |
| early_access: false |
| enable_free_tier: true |
| |
| reviews: |
| profile: chill |
| request_changes_workflow: false |
| high_level_summary: true |
| # Post the high-level summary in the walkthrough comment, NOT in the MR |
| # description. Eigen maintainers want the description left alone. |
| high_level_summary_in_walkthrough: true |
| poem: false |
| review_status: true |
| collapse_walkthrough: true |
| changed_files_summary: true |
| enable_prompt_for_ai_agents: true |
| # Trim down the noise in the auto-posted comment: drop sections that don't |
| # carry weight on a numerics-heavy template library. |
| sequence_diagrams: false |
| estimate_code_review_effort: false |
| assess_linked_issues: false |
| related_issues: false |
| related_prs: false |
| suggested_labels: false |
| suggested_reviewers: false |
| in_progress_fortune: false |
| |
| auto_review: |
| enabled: true |
| drafts: false |
| # Eigen MRs often see many WIP pushes; reviewing every push burns the |
| # per-developer hourly rate limit on the free/OSS tier. Review the first |
| # diff only; further reviews can be requested with `@coderabbitai review`. |
| auto_incremental_review: false |
| base_branches: |
| - master |
| |
| path_filters: |
| - "!doc/snippets/**" |
| - "!doc/examples/**" |
| - "!lapack/*.f" |
| - "!blas/testing/**" |
| - "!**/*.png" |
| - "!**/*.bin" |
| - "!**/*.svg" |
| - "!**/*.pdf" |
| |
| path_instructions: |
| - path: "Eigen/src/**" |
| instructions: | |
| Eigen is a header-only C++14 template library with a strict ABI policy. |
| - **Numerical accuracy is a top priority.** Eigen targets accuracy |
| comparable to established numerical libraries such as LAPACK. Flag |
| any change that may degrade accuracy, condition handling, stability |
| under near-singular / ill-conditioned inputs, or behavior near |
| subnormals, infinities, NaNs, or extreme exponents. In general, |
| do not trade accuracy for speed. |
| - **Acceptable accuracy tradeoff:** a faster algorithm whose |
| worst-case error is bounded to a few ULPs by a principled |
| analysis may be acceptable. In such cases, surface the tradeoff |
| and the bound clearly so a human reviewer can judge; do not |
| auto-approve or auto-reject these. |
| - **Numerical changes require numerical tests.** Any new numerical |
| algorithm, kernel, or accuracy-sensitive change MUST come with |
| tests that exercise its accuracy claims (random ill-conditioned |
| inputs, edge values, comparisons against a reference). If such |
| tests are missing, request them. |
| - Treat the public API surface as frozen: do not propose renames or |
| signature changes for non-internal types. |
| - Performance and inlining matter; flag possible regressions in hot |
| paths (products, packet kernels, evaluators, decompositions). |
| - Watch for accidental allocations in templates that should be |
| allocation-free. |
| - C++14 is the minimum; do not suggest C++17+ features. (A migration |
| to C++17 is planned on a separate branch; until it lands on master, |
| new code must compile under C++14.) |
| - Do not propose reordering internal includes; Eigen relies on a |
| specific include order. |
| - path: "test/**" |
| instructions: | |
| Tests use the EIGEN_REPEAT-N harness and shard each .cpp into many |
| ctest targets. Do not suggest restructuring the harness or |
| deduplicating shards. Numerical-tolerance comparisons are deliberate; |
| do not push for exact equality. Tests may be long and procedural. |
| - path: "unsupported/Eigen/**" |
| instructions: | |
| Treat unsupported modules as more permissive than core Eigen, but |
| keep the public API stable for known downstream consumers (the Tensor |
| module is used by TensorFlow). |
| - path: "blas/**" |
| instructions: | |
| These are Reference BLAS API wrappers around Eigen. Match the BLAS |
| standard exactly; do not suggest deviating from netlib semantics. |
| - path: "lapack/**" |
| instructions: | |
| The .f sources are vendored netlib LAPACK reference; do not review |
| them. The C++ wrappers should faithfully implement the LAPACK |
| contract. |
| - path: "ci/**" |
| instructions: | |
| GitLab CI configuration. Be conservative -- do not suggest |
| restructuring the existing job graph or changing runner tags without |
| strong reason. |
| - path: "benchmarks/**" |
| instructions: | |
| Microbenchmarks built against Google Benchmark. Clarity matters less |
| than realistic measurement; flag only correctness or measurement |
| methodology issues, not style. |
| |
| chat: |
| auto_reply: true |