- Merge 5 SCENARIOs into 1 with shared fixture
- Reorganize 23 SECTIONs by test type (geometry → vis-viva → period → timestep → long-term)
- Add 2 missing timestep tests (apogee radius, velocity comparison)
- Replace all qualitative checks (a > b) with WithinAbs against precalculated values
- Use named tolerance constants everywhere — zero hardcoded numbers in WithinAbs
- Add VEL_CHANGE_SMALL_DT fixture constant
- Refactor precalc script to load from TOML via Simulator class
- Output matches new test ordering
Consolidate 9 TEST_CASEs into 5 SCENARIOs with 22 SECTIONs:
- Load orbital parameters from TOML config instead of hardcoded constants
- Use precomputed expected values via precalc_analytical_propagation.py
- Apply tight tolerance constants (REL_TOL, ANG_TOL, R_TOL, V_TOL)
- Remove decorative comment blocks and redundant SCENARIO title comments
- Fix propagate_orbital_elements/orbital_elements_to_cartesian API usage
(both take parent_mass, not mu)
- Add destroy_simulation cleanup to each SCENARIO
New files: precalc_analytical_propagation.py, test_analytical_propagation.toml
Move all shared tolerance constants to src/test_utilities.h with inline
comments. Update all test files to use header constants instead of local
definitions. Add DRIFT_TOL for parabolic orbit energy checks.
Key changes:
- test_utilities.h: consolidated constants with inline descriptions,
removed per-test doc comments, added DRIFT_TOL=1e-12
- test_cartesian_to_elements_advanced.cpp: use header E_TOL, ANG_TOL,
A_TOL; local A_TOL_LARGE=2e-4 for |a|=1e11 vis-viva error cases
- test_parabolic_orbit.cpp: use V_TOL, E_TOL, REL_TOL, R_TOL, DRIFT_TOL;
add precalculated initial velocity check; remove FIXME ratio test
- test_cartesian_to_elements_basic.cpp, test_extreme_eccentricity.cpp,
test_extreme_orientation_mixed.cpp, test_extreme_timescales.cpp:
migrate remaining local constants to header
- continue.md: update tolerance reference table to match header
- scripts/precalc_parabolic_orbit.py: remove velocity sampling loop
(no longer used by C++ test)
All 624 tests pass.
- Merge initial conditions check into single SCENARIO
- Tighten energy check to relative error (1e-10) vs KE
- Replace qualitative checks with quantitative WithinAbs assertions
- Use named tolerance constants throughout fixture
- Update precalc_parabolic_orbit.py to output SI units (m, m/s)
- Precalculate expected values with full precision from Python
- Python and C++ produce identical results in SI units
- Add semi_latus_rectum support in sim_engine.py for parabolic orbits
- Refactor old_tests/test_inclined_orbits.cpp into 4 SCENARIOs
- Replace broken OrbitTracker period test with propagation-to-apogee check
- Rewrite TOML config to TOML 1.0 inline table syntax
- Add precalc script using sim_engine.py
- Fix orbit tracker: use fabs() for accumulated_rotation threshold
- sim_engine.py: generic orbital mechanics simulator with RK4 + analytical
propagation, used to verify C++ test expected values
- test_orbital_period.py: precalculation script with safety timeout for
measuring Earth/Mars orbital periods and direction test values
- Remove SOI transition logic (buggy in both Python and C++ versions)
- Use dataclasses.replace() for immutable state updates
- Support single-line TOML inline tables via tomllib
- Output summaries to tmp/summaries/ instead of alongside source files
- Add per-module timestamp caching (skip up-to-date modules)
- Add combine_summaries() to merge all into all_summaries.md
- Extract LLM provider and model to config variables
- Reorganize script: config, discovery, utilities, worker, main loop