# Supported Surface This page is the 0.2.x RC support contract for `dag-ml` (current package version: 0.2.5). It separates production-facing surfaces from conformance fixtures and backlog work. It does not change any public ABI, JSON schema, Rust, Python or WASM signature. ## Support Levels | Level | Meaning | |---|---| | Supported | Included in the release scope and covered by CI gates. | | Conformance | Stable enough for binding authors and integration tests, but not a complete production adapter. | | Experimental | Public shape may exist, but release notes must call out limitations. | | Backlog | Not part of the release promise. | ## dag-ml Surface | Area | Level | Notes | |---|---|---| | Graph, campaign and execution-plan contracts | Supported | Rust validation, JSON Schemas, C ABI discovery and CLI validation are gated. | | Fold identity, OOF joins and leakage refusal | Supported | Sample-id joins, validation-only OOF, group/origin/repetition guards and D9 multisource negative cases are tested. | | Deterministic selection and replay bundle validation | Supported | Plan/controller/data/artifact fingerprints and selection metric levels are validated. | | Research provenance export | Supported | RO-Crate, PROV and OpenLineage exports are generated from validated internal contracts. | | C ABI JSON contract helpers | Supported | Header snapshot, C conformance and non-mock replay paths are gated. | | Runtime process adapter protocol | Supported | JSONL frames, describe handshake, timeouts, retries and worker pools are covered by CLI tests. | | Python and WASM JSON-contract bindings | Supported | Wheel/package metadata and smoke tests are CI-gated; object-native Python DSL frontend is not included. | | Pipeline DSL JSON compiler | Supported | Canonical JSON plus nirs4all-compatible serialized JSON descriptors are covered. | | Direct Python/YAML object DSL frontend | Backlog | Host object resolution remains binding-owned. | | sklearn production process adapter | Conformance | The reference adapter is tested and useful for integration, but release notes must list supported estimator families and persistence limits. | | prospectr and mdatools process adapters | Conformance | Tested reference adapters for selected R operators; stateful `msc`, `simca` and `mcrals` remain backlog. | | SpectroChemPy and Orange-Spectroscopy adapters | Backlog | Tracked in `docs/HOST_ADAPTER_BACKLOG.md`. | | EXPLAIN phase execution through host adapters | Experimental | Contracts and mock replay exist; production adapter dispatch is not a final-release promise. | | Controller-side task batching | Backlog | Parallel scalar scheduling is supported; batch requests/static subgraphs remain future hardening. | ## dag-ml-data Dependency `dag-ml` 0.2.5 consumes the sibling `dag-ml-data` contracts through JSON-identical schemas and fixtures. The supported cross-repo contract for this release is: - `CoordinatorDataPlanEnvelope` v1; - `FeatureFusionSelector` v1; - `CoordinatorBranchView` v1; - `FittedAdapterRef` v1 as a data-side replay/persistence contract; - shared `FoldSet`, conformance pack and parity-oracle manifests. The following `dag-ml-data` capabilities are required for release validation but remain provider-specific at runtime: - host-side execution of `branch_view` modes `by_metadata`, `by_tag` and `by_filter`; - materialize/predict signal-type enforcement once `dag-ml` carries expected signal type through replay; - production provider arenas beyond the in-memory conformance provider. ## Public-Signature Policy For the 0.2.x RC release window: - no C ABI symbol, struct layout, JSON schema id/version, Rust public function, Python facade function or WASM export changes without an explicit contract entry and ABI/schema snapshot update; - if such a change is accepted, downstream chains such as `nirs4all-core`, `nirs4all-web` and browser/Python smoke packages must be rebuilt before tag; - documentation, CI jobs, tests and private benchmark helpers are allowed when they do not alter exported signatures. ## Post-0.2.x Backlog 1. Keep the `dag-ml-capi` AddressSanitizer lane green and extend it beyond library unit tests when C ABI lifecycle coverage expands. 2. Extend the initial performance probes to replay cache export and process worker pools. 3. Raise public Rust documentation coverage toward the ADR target in follow-up hardening.