CubeDynamics capability audit — 2026-10-21
Inspected the external local checkout at commit
4c6afea9565b282d40e0de22254ebf2386cced08 (clean at inspection), package metadata,
public namespace, piping, custom/statistical/combining/biology verbs, temporal support,
Sentinel loader, dependency requirements, upstream tests and published website.
Repository ·
Documentation.
The current repository and package declare 0.1.0rc3, while the website homepage still advertises rc1. Treat this as a prerelease API and pin the tested distribution. CubeDynamics remains an external ESIIL project; no upstream source is copied here.
Inventory before adapter implementation
| Verified upstream surface | Behavior and integration decision |
|---|---|
pipe(value), Pipe.unwrap() |
Builds an ordered pipeline and semantic trace; not itself a guarantee of lazy I/O |
verbs.apply(func, **kwargs) |
Public callable-stage wrapper; expose only fixed adapter functions, never a model-supplied callable/expression |
verbs.mean(dim='time', keep_dim=False, skipna=False) |
Lazy xarray/Dask reduction; unweighted arithmetic mean, not a general daily resampler; expose only with reviewed complete equal-duration interval evidence |
verbs.month_filter(months) |
Lazy calendar selection; adapter validates month integers/references before use |
verbs.align_time(other, mode='require_exact_support') |
Exact time labels and known identical interval support; no shifting, interpolation or resampling |
verbs.align_cube(like=..., spatial_method='nearest', temporal_method='nearest', tolerance='0s') |
xarray spatial interpolation and time reindex; not CRS reprojection; expose same-CRS nearest spatial sampling and exact time only |
No dedicated public select, clip, mask or generic resample verb in this checkout |
Fixed xarray select/isel/where stages through public verbs.apply; identify adapter glue explicitly, not invented upstream functions |
data.load_s2_cube(...) |
Cubo discovery/access, Dask chunks, collection/provenance attributes; do not call it here because Module 1 already owns source discovery and native-window access |
| stackstac / Cubo | Both remain declared dependencies; access behavior depends on the loader, not a universal streaming guarantee |
VirtualCube, streaming internals |
Advanced/internal surface with potentially materializing helpers; not exposed in this first adapter |
| Statistical/domain/plot/export/custom-code namespaces | Not exposed; no run_python, arbitrary attribute lookup, unrestricted apply, writers or plotting tools |
CubeDynamics uses xarray, Dask and established geospatial libraries for numerical
work. Its source metadata and semantic trace complement this project's source,
recipe, review, rights and representation lineage; they do not decide ontology
equivalence or scientific validity. Upstream align_cube does not enforce CRS or
scientific support compatibility itself, so the adapter must do so before calling it.
Dependency boundary
The existing temporary test environment uses Python 3.14 / NumPy 2; CubeDynamics requires NumPy <2. Test it separately under Python 3.12 and keep the integration optional so core semantic review remains independently usable. Install the actual external distribution, not a replacement implementation or fixture-only mock.
Verified execution
The installed PyPI distribution cubedynamics==0.1.0rc3 completed the full suite:
203 tests passed under Python 3.12.8 / NumPy 1.26.4. The installed wheel resolves
stackstac 0.5.0, whereas the inspected upstream checkout declares >=0.5.1;
version labels do not establish identical dependency metadata. The optional adapter
uses the verified public pipe/verb surface rather than source-access loaders.
A fresh run/cubedynamics-verified generated-data demonstration produced 32
32-dimensional MOSAIKS vectors from calibrated bounded windows, with training-only
filter fitting and held-out baselines. No raw or harmonized arrays were written.
This is real external software over generated data, not an approved real-data release.
A delayed-source test confirms that selecting one chunk computes only that chunk;
this does not measure remote network bytes or production throughput.
Frozen backend consensus is separately tested: all four specialists and QA see the same recipe/configuration. Disagreement or a prior veto blocks execution. No live backend-consensus inference or real scientific approval was fabricated.