Repository navigation
Description
Why
#238 (CPM writer plugin) and the outreach it triggered (https://github.com/EOPF-Explorer/coordination/issues/269, CPM issues, EODC pilot proposal) make claims about mission coverage that are currently backed by one synthetic Sentinel-2 fixture. Before EODC or CPM invests time acting on those claims, we should have real evidence.
The Zarr Samples Service STAC (stac.core.eopf.eodc.eu/collections) publishes 12 collections as of 2026-08-11:
| Collection | CPM product:type | eopf-geozarr coverage today |
|---|---|---|
| sentinel-2-l2a | S02MSIL2A | proven (s2-optimized pipeline, synthetic + real-world use) |
| sentinel-2-l1c | S02MSIL1C | proven |
| sentinel-1-l1-grd | S01SIWGRD | generic pipeline, synthetic fixture only (tests/test_integration_sentinel1.py); no real-product test, no CPM-writer test |
| sentinel-1-l1-slc | (unmapped) | untested |
| sentinel-1-l2-ocn | (unmapped) | untested |
| sentinel-3-olci-l1-efr | S03OLCEFR | s3-olci-optimized pipeline landed #212 (2026-08-11); not yet wired into CPM routing |
| sentinel-3-olci-l1-err | S03OLCERR | same pipeline, not yet tested against this collection specifically |
| sentinel-3-olci-l2-lrr | (unmapped) | untested |
| sentinel-3-olci-l2-lfr | (unmapped) | untested |
| sentinel-3-slstr-l1-rbt | S03SLSRBT | not supported |
| sentinel-3-slstr-l2-lst | (unmapped) | not supported |
| sentinel-3-slstr-l2-frp | (unmapped) | not supported |
Scope
- Per-mission conversion recipes. The generic pipeline currently requires the operator to hand-supply
groups/crs_groups/gcp_group/min_dimensioncorrectly per mission (see cli.py--groups/--gcp-groupdocs). That's a real data-consistency risk for anyone besides us running this — a wronggcp_groupon Sentinel-1 silently produces ungeoreferenced output rather than failing loudly. Document (or better, encode as auto-detected defaults) the correct recipe per product:type. - Numerical consistency checks, CPM native output vs. GeoZarr output, per mission: pixel values round-trip (accounting for intentional scale/offset re-encoding), nodata/fill handling, CRS and geotransform equivalence, multiscale overview correctness against a known-good reference (e.g. GDAL-computed overviews).
- A nightly CI job driven by a small, pinned set of real public products pulled from the EODC STAC (one per collection above that we intend to support), so drift against CPM's actual production output is caught continuously rather than only when someone notices by hand. This complements the existing
test-cpm-latestweekly job in Cpm writer plugin #238, which catches CPM API drift but not data drift.
Out of scope here
Getting Sentinel-3 SLSTR or Sentinel-1 SLC/OCN support built. That's separate feature work, not testing. This issue is about proving what we already claim to support, plus giving CPM/EODC a recipe for what "supported" actually requires operationally.
Related
- Cpm writer plugin #238 — CPM writer plugin (branch
pr-238) - feat: Sentinel-3 OLCI GeoZarr export #212 — Sentinel-3 OLCI GeoZarr export
- https://github.com/EOPF-Explorer/coordination/issues/269 — original gap-analysis mandate this work descends from
Activity