Skip to content

Tier 3 coverage gaps surfaced by JEOD sim audit #99

@simnaut

Description

@simnaut

Tier 3 sim-coverage gaps. Originally surfaced by the Phase 5 audit (#97); refreshed April 2026 from the per-RUN audit at commit 587e2e7.

The authoritative coverage map is now the JEOD-Sim-Coverage wiki page (not docs/JEOD_sim_coverage.md, which moved to the wiki in #197). The triaged release-blocker view lives at Audit-Findings; this issue is the trimmed actionable subset.


Bucket A — Release blockers (have a story before tagging 1.0)

These are gaps that a downstream user could reach for and find missing or numerically wrong.

Missing SIM_dyncomp RUNs (JEOD CSVs exist, no test)

  • RUN_6C — applied force, plane-change maneuver
  • RUN_6D — applied force, Y-axis impulse
  • RUN_9B — external torque with inertial rate
  • RUN_10B — gravity-gradient torque, circular orbit, 0° initial attitude

Each needs tier3_simulation_run<N> against the existing JEOD reference CSV.

Mission benchmarks

  • SIM_Earth_Moon RUN_rosetta — Rosetta hyperbolic Earth swing-by; Audit-Findings B1.6
  • SIM_Mars RUN_phobos + RUN_orb_init_phobos — small-body orbit + orbital init around a moon; Audit-Findings B1.7

Body-action / frame-attach (Phase 5 deferred)

  • SIM_ref_attach — reference-frame attachment (distinct from mass attachment)
  • SIM_dyncomp RUN_attach_to_ref_frame — same Phase-5 work, applied to dyncomp scenario
  • SIM_removable_body_action — dynamic add/remove of body actions at runtime; we expose a static action set per scenario

Other infrastructure

  • SIM_ground_contactGroundFacet (sphere-vs-plane geometry) not yet ported. tier3_contact_ground exists but is #[ignore]d. Audit-Findings B1.8
  • LSODE integrator — JEOD's stiff/non-stiff variable-order Adams/BDF integrator is not ported. tier3_sim_lsode runs ABM4 as a placeholder. Audit-Findings B1.3 — decide port-or-document-divergence
  • SIM_csr_compare — CSR vs GGM gravity-coefficient cross-check. Decide port-or-accept; if the latter, add a one-line "GGM05C is the production default" note. Audit-Findings B1.10

Bucket B — Per-RUN coverage breadth (lower priority)

Same physics is exercised but only a subset of JEOD's RUNs has a per-RUN test. The covered RUNs are representative; closing these adds breadth, not new physics. Listed here for completeness.

  • SIM_orbinit — 5 of 46 RUNs CSV-validated (the 5 cover the main IC types: ISS/STS × inertial/pfix × translational-state)
  • SIM_verif_attach_mass — 18 of 21 RUNs (RUN_05/06/07 offset-attach + RUN_103/104/106/107/110/111 named-point aligned attach/detach added in PR test(tier3): add 9 SIM_verif_attach_mass RUNs (#99 Bucket B) #624; Spec/SpecCG inertia specs ported). Remaining 3-4 need physics ports: RUN_08/108 (child attached to two parents — final-topology resolution) and RUN_09/109 (non-identity structure→body root transform — composite body-frame rotation in MassTree::recompute_composites, JEOD mass_update.cc:101/107).
  • SIM_2_dyn_plus_STD — 1 of 5 (init-by-value covered; MET/GPS-sec/GPS-week/UTC-epoch init not)
  • SIM_4_common_usage — 1 of 2 (leap-second boundary covered; uGPS init not)
  • SIM_7_time_reversal — 3 of 8 (run1, run3a, run8b explicit; run2 / run4–7 not)
  • SIM_RNP_J2000_prop — 1 of 6 (polar motion via run2p; nutation/precession isolation RUNs not)
  • SIM_MET — 1 of 9 (run5a covered; other altitude/season variants not)
  • SIM_tide_verif — 1 of 2 (RUN_01 covered; RUN_02 not)
  • SIM_VER_DRAG — 10 of 11 (RUN_aero_drag_const constant-force mode not)
  • SIM_Apollo — mass tree fully validated, trajectory only 100s slice of multi-day mission

Bucket C — Partial coverage (same physics, no JEOD CSV cross-validation)

Code path is exercised analytically (energy/momentum conservation, period match, etc.) but not against JEOD reference output. Useful as additional verification when the underlying area is revisited.

  • SIM_dyncomp RUN_8A — attitude propagation, zero ω (covered analytically by tier3_dyncomp_6dof_rigid_body_invariance)
  • SIM_dyncomp RUN_8B — attitude stability with LVLH rate (covered analytically by tier3_dyncomp_attitude_stability_major_axis)
  • SIM_RELKIN_VERIF — relative kinematics RUN sweep (generic coverage via tier3_relative_* and tier3_simulation_relative_*)
  • SIM_dyncomp_structure — mass-tree structure sweep (covered by tier3_mass_* + tier3_apollo_mass_tree)
  • SIM_torque_compare_simple — simple gravity-torque sweep (run10 series covers richer scenario)
  • SIM_REF_FRAMES — frame-tree topology test (exercised transitively by every relative-state test)
  • SIM_SURFACE_MODEL — dynamic surface reconfiguration (static flat-plate covered)
  • SIM_wind — corotating-wind drag analytical (no JEOD CSV)

Bucket D — Body-action coverage gap

  • SIM_lvlh_init — body-action LVLH initialization. The LVLH derived-state tests cover the LVLH output, not the LVLH initialization body action. Audit-Findings B2.1

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions