Skip to content

update_datafiles: download only what is not compiled in - #163

Merged
ssmichael1 merged 3 commits into
mainfrom
manifest-default-trim
Aug 31, 2026
Merged

update_datafiles: download only what is not compiled in#163
ssmichael1 merged 3 commits into
mainfrom
manifest-default-trim

Conversation

@ssmichael1

Copy link
Copy Markdown
Owner

update_datafiles() downloaded ten static files; only one of them did anything.

  • IERS tables (tab5.2a/b/d.txt)default: false. The embedded copies are byte-identical (same SHA-256 in data/embedded/SOURCES.json); downloading them accomplished nothing.
  • Gravity models (4 × .gfc)default: false. Embedded to degree 70 while evaluation is capped at degree 40 (Harden gravity-degree, precompute-size and download inputs; smoke-test wheels; doc fixes #130), so the full files add no capability; a full-degree copy dropped into a search directory still takes precedence over the embedded one.
  • leap-seconds.list → removed from the manifest entirely. Nothing reads it — the runtime leap-second table is a compiled-in constant (src/time/instant.rs); the manifest entry itself said "reference only". The file stays on the immutable data-v1 release tag; only the entry is gone.

default: false entries stay pinned and fetchable by name (fetch_static_file, SATKIT_JPLEPHEM_FILE-style flows are unaffected), so the DE440 ephemeris is now the only default static download, alongside the daily EOP / space-weather / solar-cycle refreshes. A fresh provision drops from 10 downloads (~110 MB) to 1 (102 MB) + refreshes.

Since CI provisions astro-data through python/test/download_data.py (which honours default), the earthgravity_init / ierstable_init integration tests would have silently skipped; they now fall back to the embedded bytes (utils::embedded::get) when the file is not on disk, so they always run. embedded_manifest_is_valid asserts the default set is exactly the DE440 ephemeris and that leap-seconds.list is gone.

Docs brought in line: docs/getting-started/datafiles.md (leap seconds are not a file; update_datafiles scope; attribution list), installation.md one-liner, data/README.md (manifest table, excluded-files list, future release-asset command), and the update_datafiles docstrings in Rust, PyO3 and the .pyi stub.

Testing

Full Rust suite (296 lib + all integration binaries, GMAT corpus included) and the Python suite (192 passed, 1 skipped) run green against a data directory containing only the ephemeris + EOP/SW/solar-cycle files — exactly what CI will now provision. cargo clippy --all-targets -D warnings, cargo fmt clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PG969yapJ84DJceKt21Wen

ssmichael1 and others added 3 commits August 30, 2026 19:32
The IERS tables (embedded byte-identical) and the gravity models
(embedded to degree 70; evaluation is capped at degree 40) become
default: false in the manifest -- still pinned and fetchable by name.
leap-seconds.list is removed outright: nothing reads it, the runtime
leap-second table is a compiled-in constant. The only static download
left is the JPL ephemeris, alongside the daily EOP / space-weather /
solar-cycle refreshes.

The earthgravity/ierstable init integration tests fall back to the
embedded bytes instead of skipping when the files are not on disk, so
they keep running in CI, which no longer provisions those files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PG969yapJ84DJceKt21Wen
…scratch dir

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PG969yapJ84DJceKt21Wen
…-key rotation

A manifest change rotates the exact cache key; the fresh cache then had no
EOP-All.csv / SW-All.csv at all, so a CelesTrak outage during that first
run failed every EOP-dependent test (exactly what happened on this PR's
ubuntu jobs). With restore-keys the job seeds from the newest older cache:
the manifest download step verifies/updates the pinned files against the
new manifest, the refresh step updates EOP/SW when CelesTrak answers, and
when it does not, the previous cache's copies carry the run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PG969yapJ84DJceKt21Wen
@ssmichael1
ssmichael1 force-pushed the manifest-default-trim branch from 9bafc7f to 637dbab Compare August 30, 2026 23:56
@ssmichael1 ssmichael1 closed this Aug 31, 2026
@ssmichael1 ssmichael1 reopened this Aug 31, 2026
@ssmichael1
ssmichael1 merged commit b2abcab into main Aug 31, 2026
8 checks passed
@ssmichael1
ssmichael1 deleted the manifest-default-trim branch August 31, 2026 00:09
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