Development principles#
Preserve scientific meaning: units, named uncertainties, axes, rank, weights, masks, and provenance are part of a result.
Treat runtime code and focused tests as the executable contract. Reconcile stale prose rather than adding a third behavior.
Prefer small, composable steps with explicit dependencies and configuration.
Keep numerical kernels reusable and pipeline adaptation thin.
Let provenance determine the process-step interface: acquisition or calibration metadata that is not computed by an upstream MoDaCor step must be loadable from an
IoSource; dynamically derived or modified values must flow between steps asBaseDataentries inDataBundleobjects. Do not add staging steps whose only purpose is to copy static metadata into processing data.Validate at boundaries and fail explicitly for unsupported capabilities.
Make operational optimizations preserve the same
BaseDatasemantics as ordinary execution.Keep instrument-specific pipelines, notebooks, and datasets in MoDaCor-examples.
Add tests and documentation with a public behavior, not as a later cleanup.