Skip to content

Mission-flavor test matrix against real Zarr Sample Services products (CPM writer plugin + generic pipeline) #240

Open

Description

@emmanuelmathot

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

  1. Per-mission conversion recipes. The generic pipeline currently requires the operator to hand-supply groups/crs_groups/gcp_group/min_dimension correctly per mission (see cli.py --groups/--gcp-group docs). That's a real data-consistency risk for anyone besides us running this — a wrong gcp_group on Sentinel-1 silently produces ungeoreferenced output rather than failing loudly. Document (or better, encode as auto-detected defaults) the correct recipe per product:type.
  2. 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).
  3. 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-latest weekly 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

Activity

  1. added
    testsTest suite and fixtures
    cpm-driverGeoZarr driver for EOPF CPM (eopf convert-geozarr, engine geozarr)
    sample-serviceRoadmap with EODC for the EOPF Sentinel Zarr Samples Service (#277)
    on Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

cpm-driverGeoZarr driver for EOPF CPM (eopf convert-geozarr, engine geozarr)sample-serviceRoadmap with EODC for the EOPF Sentinel Zarr Samples Service (#277)testsTest suite and fixtures

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions