Summary
Committed regression output.json bundles reference two artefacts — index.html (top-level index) and cmec_output.log (provenance.log) — that the diagnostics never actually produce, so they are absent from the test case's manifest.json native block. The committed bundle and the native manifest are therefore out of sync: a consumer reading output.json would expect those files to exist, but ref test-cases replay has nothing to materialise for them.
Surfaced in review of #762 on extratropical-modes-of-variability-nam/cmip7:
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.
Root cause
OutputBundle.create_template() seeds every CMEC output bundle with hardcoded defaults:
packages/climate-ref-core/src/climate_ref_core/pycmec/output.py:202-218
return {
OutputCV.INDEX.value: "index.html",
OutputCV.PROVENANCE.value: {
...
OutputCV.LOG.value: "cmec_output.log",
},
...
}
These defaults persist into the committed output.json even when the diagnostic writes neither file.
Scope (committed baselines on main, 43 cases scanned)
| Artefact |
Referenced by |
Present in native |
cmec_output.log |
all 43 |
0 — never generated by any provider |
index.html |
all 43 |
ilamb 20/20; pmp 0/21, example 0/2 |
So cmec_output.log is a universal dangling reference, and index.html dangles for the 23 pmp + example cases (ilamb genuinely produces it). esmvaltool baselines (pending in #760) most likely follow the pmp/example pattern.
Summary
Committed regression
output.jsonbundles reference two artefacts —index.html(top-levelindex) andcmec_output.log(provenance.log) — that the diagnostics never actually produce, so they are absent from the test case'smanifest.jsonnativeblock. The committed bundle and the native manifest are therefore out of sync: a consumer readingoutput.jsonwould expect those files to exist, butref test-cases replayhas nothing to materialise for them.Surfaced in review of #762 on
extratropical-modes-of-variability-nam/cmip7:Root cause
OutputBundle.create_template()seeds every CMEC output bundle with hardcoded defaults:packages/climate-ref-core/src/climate_ref_core/pycmec/output.py:202-218These defaults persist into the committed
output.jsoneven when the diagnostic writes neither file.Scope (committed baselines on
main, 43 cases scanned)nativecmec_output.logindex.htmlSo
cmec_output.logis a universal dangling reference, andindex.htmldangles for the 23 pmp + example cases (ilamb genuinely produces it). esmvaltool baselines (pending in #760) most likely follow the pmp/example pattern.