Extend the vegetation timeline to the published July 2026 composite - #1015
Merged
Conversation
MOD13A3 (NDVI and EVI) published 2026-07 upstream, but both layers were still pinned to 2026-06, so the vegetation timeline stopped a month short of the data GIBS actually serves and the status row overstated the lag. Verified against GIBS DescribeDomains on 2026-08-17: the advertised domain is now 2025-05-01/2026-07-01/P1M for both layers (the 2025-04 break matches the catalogued MOD13A3_UNPUBLISHED_MONTHS gap, confirming the parse). NDVI and EVI share one granule and one freshness family, so they extend together. Derive the record-depth expectation from the pin instead of restating it: MOD13A3 publishes on its own schedule, and the next bump should move this expectation with it rather than fail a test that only ever repeated the constant. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extend the vegetation timeline to the published July 2026 composite
Visible: select Vegetation (NDVI) (or Vegetation (EVI)) and drag the
time slider to its right-hand end. Before this change the slider stopped at
Jun 2026 and the status row read the vegetation record as a month further
behind than it is; after it, Jul 2026 is selectable and renders real GIBS
imagery. The same month becomes reachable in the probe series, the place panel,
and any export or share link that carries the selected month.
The defect
LAYERS.ndvi.latestandLAYERS.evi.latestwere both pinned to2026-06,verified on 2026-08-15. MOD13A3 has since published July, so the compiled pins
were one publication behind the archive. A pin that trails the product is not a
cosmetic lag:
monthRangeForLayerclamps the timeline to it, so the newestpublished composite was unreachable in the app, and
dataCurrencyNotemeasuredthe vegetation record's currency against the stale end.
This is the failure mode the freshness pins exist to prevent, and the one that
already cost SST a full publication cycle when nobody owned the check.
Verification
Probed GIBS DescribeDomains directly on 2026-08-17, on each layer's own tile
matrix set (
1km), which is whatdescribeDomainsUrlbuilds:wmsLayerMODIS_Terra_L3_NDVI_Monthly2025-05-01/2026-07-01/P1MMODIS_Terra_L3_EVI_Monthly2025-05-01/2026-07-01/P1MThe response splits at 2025-04 — exactly the month catalogued in
MOD13A3_UNPUBLISHED_MONTHS— which independently confirms the domain parserather than assuming it.
NDVI and EVI are one granule and one entry in
FRESHNESS_FAMILIES(
{ probe: "ndvi", layers: ["ndvi", "evi"] }), so they extend together; bumpingone alone would have split the family.
MODIS_Aqua_L3_SST_Thermal_9km_Day_Monthlywas re-probed in the same pass andstill ends
2026-04-01, matching its pin — no bump due.Not verified this run, stated plainly: DescribeDomains returned an empty
time domain for
lst,snow,airtemp,aerosol,precipandsoilacrossfour retries with backoff, while
sston the same tile matrix set answerednormally — so this is an upstream per-layer hiccup, not a wrong tile set. Those
six pins are therefore left untouched rather than guessed at, and are carried
forward to the next freshness check.
DATA_LATESTis unchanged at2026-07(it is set by the MODIS thermalfamilies, which already reach July), so this bump does not move the global
horizon.
Datasets
DOI 10.5067/MODIS/MOD13A3.061.
Backs both the NDVI and EVI layers; served via NASA GIBS
MODIS_Terra_L3_NDVI_Monthly/MODIS_Terra_L3_EVI_Monthly.Both layers remain clear-sky composites, not monthly means — their captions and
disclosures are untouched by this change.
Test change
briefRecordDepth.test.tsasserted the vegetation archive end as the literal{ year: 2026, month: 6 }with a hardcoded 316-month span, so it failed on thebump. It now derives both from
LAYERS.ndvi.latest, which is the precedent thisrepo already set for beyond-the-record fixtures: a pin bump should carry the
expectation with it instead of failing a test that only restated the constant.
Proved the assertion still detects rather than merely passing — mutating the
span arithmetic in
briefRecordDepth.tsfails 4 of the 9 tests in that file;restoring it passes 9/9, byte-identical. Worth noting for the next bump: now
that
ndvi.latestcoincides withDATA_LATEST, theendMonthassertion nolonger distinguishes "measured to catalog end" from "measured to horizon" on its
own —
endIsHorizon(derived from pin presence, not a month comparison) is whatcarries that discrimination, and it is asserted.
Gates
npx tsc --noEmit— clean (no errors in touched files).npm test— 313 files / 4724 tests, all passing.npx prettier --writeon both touched files — already formatted.BUDGETS_KBuntouched.Scope
Catalog data only — two
latestpins and the test that reads them. No CIworkflow, budget, or
comms/change. Neither open PR (#1014, #959) touchesthese files.
🤖 Generated with Claude Code