Proposal
Store one canonical reference trajectory per model (fixed x0, fixed input sequence, fixed dt) and compare against it in CI. This catches silent physics regressions — refactors to the model equations, integrator changes, dependency bumps — that unit tests on shapes/APIs never see.
Sketch:
tests/reference_trajectories/<model>.npz generated once by a script in scripts/.
- A parametrized test integrates each model over the stored input sequence (both CasADi and JAX backends) and asserts
np.allclose within a tolerance.
Related: #38 (PFR model benchmarking) covers benchmarking a specific model; this issue is about regression-pinning all models.
Proposal
Store one canonical reference trajectory per model (fixed x0, fixed input sequence, fixed dt) and compare against it in CI. This catches silent physics regressions — refactors to the model equations, integrator changes, dependency bumps — that unit tests on shapes/APIs never see.
Sketch:
tests/reference_trajectories/<model>.npzgenerated once by a script inscripts/.np.allclosewithin a tolerance.Related: #38 (PFR model benchmarking) covers benchmarking a specific model; this issue is about regression-pinning all models.