Mint PMP native regression baselines#762
Conversation
📝 WalkthroughWalkthroughNative regression baselines are minted for PMP diagnostics across CMIP6 and CMIP7 test cases. Each test case receives a ChangesPMP Native Regression Baselines
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests.
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
d9cb919 to
8f02d88
Compare
8f02d88 to
93a8bda
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: ca3d50d9-93eb-4dfa-bf56-e56f12c22ed1
📒 Files selected for processing (106)
changelog/762.trivial.mdpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-pr/catalog.yamlpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-pr/manifest.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-pr/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-pr/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-pr/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-ts/catalog.yamlpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-ts/manifest.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-ts/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-ts/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip6-ts/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip7-ts/catalog.yamlpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip7-ts/manifest.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip7-ts/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip7-ts/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/annual-cycle/cmip7-ts/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/enso_proc/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/enso_tel/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nao/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npgo/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-npo/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pdo/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-pna/cmip7/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip6/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip6/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip6/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip6/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip6/regression/series.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip7/catalog.yamlpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip7/manifest.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip7/regression/diagnostic.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip7/regression/output.jsonpackages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-sam/cmip7/regression/series.json
| "DIMENSIONS": { | ||
| "experiment_id": { | ||
| "historical": {} | ||
| }, | ||
| "grid_label": { | ||
| "gn": {} | ||
| }, | ||
| "json_structure": [ | ||
| "mip_id", | ||
| "source_id", | ||
| "member_id", | ||
| "grid_label", | ||
| "experiment_id", | ||
| "metric", | ||
| "reference_datasets" | ||
| ], |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Align DIMENSIONS.json_structure with the stored RESULTS tree.
The current schema names source_id/member_id/experiment_id/variable_id/reference_source_id/region/statistic/season, but the payload below is actually nested as cmip6/ACCESS-ESM1-5/r1i1p1f1/gn/historical/Bias*/<ref>. If replay or validation uses json_structure, this fixture is internally inconsistent.
| "PROVENANCE": { | ||
| "commandLine": "/home/jared/code/climate-ref/climate-ref/packages/climate-ref-pmp/src/climate_ref_pmp/drivers/enso_driver.py --metrics_collection ENSO_tel --experiment_id historical --input_json_path <OUTPUT_DIR>/input_ENSO_tel_ACCESS-ESM1-5_historical_r1i1p1f1.json --output_directory <OUTPUT_DIR>", | ||
| "conda": { | ||
| "Platform": "linux-64" | ||
| }, | ||
| "date": "<DATE>", | ||
| "openGL": { |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
Normalise the provenance command line.
PROVENANCE.commandLine still embeds /home/jared/..., which leaks a machine-specific path into committed fixture data and makes the artefact churn across environments. Replace it with a placeholder or relative invocation before merging.
| "native": { | ||
| "EG_Spec_North_test_NAM_DJF_20CR_1900-2005.png": { | ||
| "sha256": "14de2e777b2c8b9c46c9743c6e8ae3273612e1c95aab68d05ab59d6f550f9e7d", | ||
| "size": 30110 | ||
| }, | ||
| "EG_Spec_North_test_NAM_JJA_20CR_1900-2005.png": { | ||
| "sha256": "23984abab3c407350132b176b9572a00c0502af34abd0fd9387a451ddaa54512", | ||
| "size": 32202 | ||
| }, | ||
| "EG_Spec_North_test_NAM_MAM_20CR_1900-2005.png": { | ||
| "sha256": "9a4295ea029e34ff3976f4306f59dc225dcef394ca2d953ca7288de45f29e9b8", | ||
| "size": 29537 | ||
| }, | ||
| "EG_Spec_North_test_NAM_SON_20CR_1900-2005.png": { | ||
| "sha256": "605b2308702663997b957aeac55ff490ce107d2e1b2b29fb12fa76379b583eac", | ||
| "size": 31388 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.nc": { | ||
| "sha256": "a6bcb2bb3d3b5ae69feb2071bd906c447ee10fa36ccf922090167c427433ce0b", | ||
| "size": 690880 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.png": { | ||
| "sha256": "cb452f2e35a36f6b56b94af9d529519d36774e577ff8eab2ef3ade7a0a0d40e1", | ||
| "size": 121470 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.nc": { | ||
| "sha256": "c106c6c8cf227708a0c7d926a4ba0a12c40dc465c96d708e498ec386fc8357b4", | ||
| "size": 690631 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.png": { | ||
| "sha256": "6f9aa237135e047a2aa2c0eac04094cc499fd0b8d5e92d5929a4b964e2ea9018", | ||
| "size": 121441 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_compare_obs.png": { | ||
| "sha256": "316ba6e920e4a78040900b38be66f7a928d1984ff255d50753b624a5d70d2916", | ||
| "size": 223646 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_teleconnection.png": { | ||
| "sha256": "806bc276a0ae4bfbe3cbc827697806db8e3dac752d52d29671e29ef95aba1661", | ||
| "size": 121905 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_eof1_compare_obs.png": { | ||
| "sha256": "e5e71187f7672971ade170d4db1a2a585c9471d99d3a4961d5c963f07f5af2ac", | ||
| "size": 224649 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_teleconnection.png": { | ||
| "sha256": "35d73993996f22e6b3cb7e720c26f580b752efd86529551dca6571a6692ad316", | ||
| "size": 121134 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_obs_1900-2005.nc": { | ||
| "sha256": "65946b302c5875aad183063029d5c7e2ea9938679e139f6a49b2013e3bb05a87", | ||
| "size": 415707 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_obs_1900-2005.png": { | ||
| "sha256": "b19c8d77b157bcb9a444d424d7e9b01ea2b21329d917970d81fcfa03630c1f6b", | ||
| "size": 117258 | ||
| }, | ||
| "NAM_psl_EOF1_DJF_obs_1900-2005_teleconnection.png": { | ||
| "sha256": "9af3e117e5bb2b920d84781d761451dc1e6384f4d1850c062290975632ae5169", | ||
| "size": 115346 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.nc": { | ||
| "sha256": "dbe21c9b2a1c2a4303592d89ccdd222ac73121c791133625ab371e1380d1c2df", | ||
| "size": 690880 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.png": { | ||
| "sha256": "f65b531cf12c30cfedf8f9dc2762d8531607273fba9d2f7d1e4615911c00877b", | ||
| "size": 119849 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.nc": { | ||
| "sha256": "f20c8daf43645f2839817781b1a5650923995da4d49a024a52985523918d3b83", | ||
| "size": 690631 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.png": { | ||
| "sha256": "2faae4356482b63a42cbea91a854ae77a5fa4162dc9f730293e69c8927682638", | ||
| "size": 119541 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_compare_obs.png": { | ||
| "sha256": "a117bf3cdfd754448aee2a2fd3ca38f22e476c611afae6dccd150d9d6dbfd2ce", | ||
| "size": 221753 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_teleconnection.png": { | ||
| "sha256": "b20e445bcd481652f3e09812494c68090d8cd2f1bdf3d2be1d60f18c158cb161", | ||
| "size": 118910 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_eof1_compare_obs.png": { | ||
| "sha256": "d4a7701e00258160e91d1a823fc7ae4cf5c6f8b68f9e031645b2c3f87a12c171", | ||
| "size": 224259 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_teleconnection.png": { | ||
| "sha256": "d1bf523210010e093aa212ead0281a2162ff3834d1874b7e058903f8d93cbba2", | ||
| "size": 119455 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_obs_1900-2005.nc": { | ||
| "sha256": "ca02af91c39579a3168d16ef59f41d3858bb53a4f09ea942c0c90b90484c01ec", | ||
| "size": 415707 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_obs_1900-2005.png": { | ||
| "sha256": "aceb834e7ee004da87e7fd8c4fb6dfd0762cd792e917a1b7cad4f5d80f49ac2a", | ||
| "size": 115500 | ||
| }, | ||
| "NAM_psl_EOF1_JJA_obs_1900-2005_teleconnection.png": { | ||
| "sha256": "dd3ea31147a993cf7148c026bd402272f874bce1088d35054da1c9f14beece82", | ||
| "size": 115193 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.nc": { | ||
| "sha256": "6d120b75efa9292e72bb28564f74452e43593df086928670f979b103503fb529", | ||
| "size": 690880 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.png": { | ||
| "sha256": "bf1770aa68853b1a0117a95772965c8cc819405c7857bdad92fc40a8b61c37c7", | ||
| "size": 121158 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.nc": { | ||
| "sha256": "fbe63b1d6ed0b90044ae7f6a651b3291d2cf0aacb69df330e5b7a00e71918839", | ||
| "size": 690631 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.png": { | ||
| "sha256": "11547faec7503e3aa2b9cdfa277fe627abf2b5676ed878e81df26daf0c9a5385", | ||
| "size": 120884 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_compare_obs.png": { | ||
| "sha256": "c28596c5b83581ebdd90134198337575594c2673e3b20ea4599c5a2edb887577", | ||
| "size": 223869 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_teleconnection.png": { | ||
| "sha256": "322e2c4943de66f85915090ae502dd466b0d97ab796710e4c3db2d1e9bc3d3d5", | ||
| "size": 119295 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_eof1_compare_obs.png": { | ||
| "sha256": "8d9f6052c7d22ef892c7ac97c07e790fb33eef3eda9503c59a7379d3ae7b39db", | ||
| "size": 225524 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_teleconnection.png": { | ||
| "sha256": "f8cbbc3d564bf0b0762e6798c993c9a135ca2c366fbf05839353c9ecf8ddb315", | ||
| "size": 119712 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_obs_1900-2005.nc": { | ||
| "sha256": "b3093a2b5c0784e4db16fe40f26bdcd05e3dceef58e907351a6f8c20dfe24d3b", | ||
| "size": 415707 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_obs_1900-2005.png": { | ||
| "sha256": "bc9b13c9e0eb10c46f08f509c59a58cfbfaac94f5acd062504582de92db9e7e5", | ||
| "size": 116865 | ||
| }, | ||
| "NAM_psl_EOF1_MAM_obs_1900-2005_teleconnection.png": { | ||
| "sha256": "e3f14e8add03f1694adafaad625326dbe46e30039fe07e2627ebe9299a23cb00", | ||
| "size": 115176 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.nc": { | ||
| "sha256": "9664f4371f4251691392f31b72329f99b8d608996bab877917320a67702bb391", | ||
| "size": 690880 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005.png": { | ||
| "sha256": "167aaa34fe467e6b4ed85f727f0bb40cb41dd45e123d8705049992356ab262dd", | ||
| "size": 121253 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.nc": { | ||
| "sha256": "3bd07f95070dc8c524495aaa2b20b1de79854a8f0095586a3f7d898d86bb5af2", | ||
| "size": 690631 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf.png": { | ||
| "sha256": "e823ea4dd0db5a7f48207c3deccf0168bcf2e1e40668dca7c6450f2ceddfe1ff", | ||
| "size": 120511 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_compare_obs.png": { | ||
| "sha256": "44310655b94116498cb53f5f6142df7a495422bbbe9329d4ac63baf4d957eb74", | ||
| "size": 224460 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_cbf_teleconnection.png": { | ||
| "sha256": "6563a866e22790f11029ffbbbd0313c93e7976ee87f182e4b162d170ea43a638", | ||
| "size": 120766 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_eof1_compare_obs.png": { | ||
| "sha256": "d1049d8b3ab818a7713428e2be756d9b4534f336f91336dd00f9568262b18ad9", | ||
| "size": 224233 | ||
| }, | ||
| "NAM_psl_EOF1_SON_cmip7_ACCESS-ESM1-5_historical_r1i1p1f1_mo_atm_1900-2005_teleconnection.png": { | ||
| "sha256": "f0f5d3175bd624b723eac331ee40f26f7a2b3e28baa9e077cb78021d38f5526c", | ||
| "size": 119399 | ||
| }, | ||
| "NAM_psl_EOF1_SON_obs_1900-2005.nc": { | ||
| "sha256": "5584e261cda60228a47ddf27be02554b9cb33b938ce313a53a474c8f54091af0", | ||
| "size": 415707 | ||
| }, | ||
| "NAM_psl_EOF1_SON_obs_1900-2005.png": { | ||
| "sha256": "38d311233233a8c100e987d9bdfc47d8e0c8050c717228fa6c7ef26ff4b84373", | ||
| "size": 116715 | ||
| }, | ||
| "NAM_psl_EOF1_SON_obs_1900-2005_teleconnection.png": { | ||
| "sha256": "506be9514bdfa0b17bb3e58b2b423f6a39c0a0532bd0d2a18f280addad5435fe", | ||
| "size": 115635 | ||
| }, | ||
| "diagnostic.json": { | ||
| "sha256": "c6dd19d5fe552c14fc455bf6d5a91ba832df8edb3de476325b45c4bcd94f794c", | ||
| "size": 8609 | ||
| }, | ||
| "output.json": { | ||
| "sha256": "45aab7024729833997d492d80aee9a760b6e40d8f12e7ea6ac909b8b789cc923", | ||
| "size": 14169 | ||
| }, | ||
| "series.json": { | ||
| "sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", | ||
| "size": 2 | ||
| }, | ||
| "var_mode_NAM_EOF1_stat_cmip7_historical_mo_atm_ACCESS-ESM1-5_r1i1p1f1_1900-2005_cmec.json": { | ||
| "sha256": "3d63c34a5dc57d5a4345091b2007e04bc529c7312baf36b0bd7ded0797933e3b", | ||
| "size": 12335 | ||
| } | ||
| }, |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python - <<'PY'
import json
from pathlib import Path
root = Path("packages/climate-ref-pmp/tests/test-data")
for output_path in root.glob("extratropical-modes-of-variability-*/cmip*/regression/output.json"):
manifest_path = output_path.parent.parent / "manifest.json"
output = json.loads(output_path.read_text())
manifest = json.loads(manifest_path.read_text())
native = set(manifest.get("native", {}).keys())
refs = []
if output.get("index"):
refs.append(("index", output["index"]))
log = output.get("provenance", {}).get("log")
if log:
refs.append(("provenance.log", log))
missing = [(kind, name) for kind, name in refs if name not in native]
if missing:
print(output_path)
for kind, name in missing:
print(f" missing native entry for {kind}: {name}")
PYRepository: Climate-REF/climate-ref
Length of output: 3145
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
import json
from pathlib import Path
paths = [
Path("packages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/manifest.json"),
Path("packages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/regression/output.json"),
Path("packages/climate-ref-pmp/tests/test-data/extratropical-modes-of-variability-nam/cmip7/catalog.yaml"),
]
for p in paths:
print(f"=== {p} ===")
if p.suffix == ".json":
data = json.loads(p.read_text())
if p.name == "manifest.json":
print("top-level keys:", list(data.keys())[:20])
print("native has index.html:", "index.html" in data.get("native", {}))
print("native has cmec_output.log:", "cmec_output.log" in data.get("native", {}))
elif p.name == "output.json":
print("index:", data.get("index"))
print("provenance.log:", data.get("provenance", {}).get("log"))
print("top-level keys:", list(data.keys()))
else:
print(p.read_text().splitlines()[:40])
PYRepository: Climate-REF/climate-ref
Length of output: 1974
Keep manifest.json and output.json in sync — output.json still references index.html and cmec_output.log, but neither artefact is listed under native here. Add them to native, or remove those references from output.json.
Mints the PMP native regression baselines on top of the merged baseline machinery (#761), using the native store.
What
All 21 PMP test cases minted at
test_case_version=1, committed per-diagnostic:Each case holds only the trackable set:
catalog.yaml,manifest.json,regression/{diagnostic,output,series}.json(each terminated with a trailing newline, per the canonicaliser change in #761). Native blobs are uploaded to theref-baselines-publicstore.Verification
ref test-cases replay(materialise native from the store into a fresh slot, rebuild the bundle, compare to committed) matched the committed bundle for all three distinct PMP reconstruction paths:annual_cycle.py—annual-cycle/cmip6-ts,annual-cycle/cmip6-prenso.py—enso_proc/cmip6variability_modes.py—extratropical-modes-of-variability-pdo/cmip6pre-commit passes over the range (data-only; JSON/YAML/whitespace hooks).
Notes
annual-cycle/cmip6-prdepends on theGPCP-3-3precipitation climatology fromNASA-GISS. Resolving it required the hyphenated-institution_idregistry parser fix landed in Regression baseline machinery: portable native baselines + reconstruction-input capture #761; with that in place the case mints and replays cleanly, so all 21 cases are now covered.main(auto-retargeted after Regression baseline machinery: portable native baselines + reconstruction-input capture #761 merged).Summary by CodeRabbit
New Features
Tests