Skip to content

Expand validation references: 2024 pre-epoch total + 2025 timing-only partial (item 17)#16

Merged
wiyth00 merged 1 commit into
mainfrom
feat/validation-reference-expansion
Jul 25, 2026
Merged

Expand validation references: 2024 pre-epoch total + 2025 timing-only partial (item 17)#16
wiyth00 merged 1 commit into
mainfrom
feat/validation-reference-expansion

Conversation

@wiyth00

@wiyth00 wiyth00 commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Summary

Work-plan item 17. Extends NASA_GSFC_REFERENCES beyond the model epoch and beyond central eclipses, with all values quoted verbatim from GSFC Besselian-elements pages:

  • 2024 Apr 08 total (Saros 139) — pre-epoch historical anchor, inserted at the beginning of the tuple (chronological order). Greatest eclipse 18:18:29.0 TDT (= 18:17:18.3 UT), 25°17.2′N 104°08.3′W, duration 04m28.1s. Note: the page states ΔT = 70.6 s while its own TDT/UT pair differs by 70.7 s — one 0.1 s rounding step. Both values are kept verbatim; the fixture self-consistency test tolerance is relaxed from 0.051 s to 0.105 s with a comment explaining exactly why.
  • 2025 Mar 29 deep partial (Saros 149, gamma 1.0404, magnitude 0.9378) — non-central. NASA publishes no greatest-eclipse coordinates or central duration for non-central eclipses, so the reference stores None for those fields and is validated on eclipse type + TT timing only. This scope limitation is explicit rather than papered over: the dataclass docstring, a new non_central_reference_note in the validation report, and tests/test_known_eclipses.py skips all say so.

Mechanics:

  • PublishedEclipseReference.latitude_deg/longitude_deg/central_duration_s become float | None; EclipseValidationResult coordinate/duration fields become None-aware and coordinate_within_target becomes bool | None. _validate_one skips the WGS84 distance and local-circumstances solve for timing-only references; passed = type_matches and timing_within_target and coordinate_within_target is not False. Central references matched to a non-central event still raise ValueError (regression-tested).
  • One small cli.py guard: the run_full terminal summary's “max path error” line now computes over central references only, so a coordinate-less reference can't crash or poison the summary. Everything else in cli.py is byte-identical to main.
  • New tests/test_validation_references.py (partial reference is genuinely timing-only; _validate_one behavior on a fabricated non-central event — fails on main, where it raises ValueError; central references still require central events) and test_known_eclipses.py updates (coordinate test skips non-central refs; new chronological-order test that enforces the insert-at-front/append-at-end discipline shared with the item-14 PR Classify hybrid (annular-total) eclipses; add NASA 2031 Nov 14 hybrid reference (item 14) #15).

Scientific impact

  • No change to computed results
  • Changes computed results (explain below)

No physics or geometry changes. But the validation enumeration window grows to 2024–2028 (2024–2031 once PR #15 also lands), so validation_report.json / validation_results.csv gain rows and the validation stage + reference tests take proportionally longer in CI and in full runs. Partial-reference rows carry null coordinate/duration fields — downstream consumers of the report should tolerate that (the shipped CLI summary already does).

Checklist

  • Regression test fails on main (test_partial_event_validates_without_coordinates).
  • Reference values quoted verbatim from GSFC source pages; no fabricated coordinates for the partial.
  • CI green — note: CI is the first integrated execution; I could not run pytest locally in this environment. Will fix promptly if red.

Merge-order independence vs. PR #15 (item 14): this PR inserts at the beginning of the reference tuple and touches _validate_one/result dataclasses; #15 appends at the end and touches the classifier in ephemeris.py. The single cli.py hunk here is also disjoint from PR #14's logging changes. All three merge cleanly in any order.

…rences

Item 17: extends NASA_GSFC_REFERENCES beyond the model epoch and beyond
central eclipses.

- 2024 Apr 08 total (Saros 139): pre-epoch historical anchor, inserted at
  the beginning of the tuple to keep it chronological. Values are quoted
  verbatim from the GSFC Besselian page, including its Delta-T = 70.6 s,
  which differs from the page's own TDT/UT pair (70.7 s) by one 0.1 s
  rounding step; the fixture self-consistency test tolerance documents it.
- 2025 Mar 29 deep partial (Saros 149, gamma 1.0404, magnitude 0.9378):
  NASA publishes no greatest-eclipse coordinates or central duration for
  non-central eclipses, so the reference stores None for those fields and
  is validated on eclipse type and TT timing only, honestly and explicitly.

PublishedEclipseReference and EclipseValidationResult grow None-aware
fields; _validate_one skips coordinate/duration comparisons for
non-central references and bases pass/fail on type + timing there. The
report gains a non_central_reference_note, and the run_full terminal
summary computes its max-path-error line over central references only.

The hybrid reference (2031 Nov 14) lands separately with the classifier
fix in the item-14 PR; that PR appends at the end of the tuple, this one
inserts at the beginning, so the two merge cleanly in either order.
@wiyth00
wiyth00 merged commit ae34d43 into main Jul 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant