Add BurnResult dataclass to sim_engine.py (matches C++ struct).
Update update_spacecraft() to capture pre-burn state vectors before
applying delta-v, matching C++ BurnResult behavior.
Update precalc_periapsis_burn.py to output burn_result values
(pre-burn position, velocity, true_anomaly) for each burn event.
Verification: Python and C++ agree to within ~50 microns floating-point noise.
Phase A: Extend sim_engine.py with maneuver trigger detection
- Add TriggerType enum, Maneuver dataclass
- Implement check_maneuver_trigger() matching C++ sub-step logic
- Integrate maneuver execution into update_spacecraft()
- Add maneuvers_from_config() for TOML parsing
- Create precalc_periapsis_burn.py for expected value generation
Phase B: Refactor test_periapsis_burn.cpp
- Merge 4 TEST_CASEs into 1 SCENARIO with 5 SECTIONs
- Shared fixture setup in SCENARIO body
- Replace Approx() with WithinAbs() using named tolerance constants
- Use precalculated expected values for quantitative assertions
- Integer comparisons use REQUIRE() not WithinAbs()
- Add BurnResult plan comment for future burn-time state capture
TOML config converted to TOML 1.0 inline table syntax.
- 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
- 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