# Accuracy experiments This directory is deliberately separate from `tests/`. It uses Catch2 only as an MPI-aware runner, selector, configuration host, and failure reporter. A run fails only when the calculation is invalid (for example, non-finite output or a failed linear solve); measured accuracy is written as data, not as a regression tolerance. `experiment_main.cpp` registers the `experiment` Catch2 reporter. It collects rows recorded with `record_experiment_result` and writes one wide CSV table on MPI rank zero. Each row carries sweep parameters and numerical metrics, so results can be plotted or compared across commits. The initial budget has three sweeps at fixed mesh and polynomial orders: 1. linear-solver tolerance: `1e-8`, `1e-10`, `1e-12`, `1e-14`; 2. production quadrature boost: `0`, `4`, `8`; 3. reference-space decomposition: numerical field/potential error, analytic projection error, and numerical-to-projection gap. Run only the budget and choose its output path with: ```text ./mean_field_experiments --experiment-output gravity_budget.csv --catch2 "[accuracy]" ``` The executable needs the same dependencies, generated module mapping, and configuration registration as the existing Catch2 test executable. Add `experiment_main.cpp` and `gravity_accuracy_budget.cpp` as a second executable next to that target; do not add them to the ordinary test executable.