# ADR-0004: Framework-agnostic ML surrogate wrapper (forward + adjoint, PyTorch & JAX, ONNX)

| Field         | Value       |
|---------------|-------------|
| Kind          | ADR         |
| Status        | Accepted    |
| Decided       | 2026-06     |
| Deciders      | Antoine Berchet |
| Supersedes    | —           |
| Superseded by | —           |

## Context

CIF plugs ML surrogates into a **variational** inversion framework, which needs not just a
forward operator but its **adjoint** for gradients. Binding CIF to a single autodiff
ecosystem would couple the framework to one vendor's lifecycle and exclude models built in
the other.

## Decision

The ML wrapper is **framework-agnostic**: it exposes **forward and adjoint** operators in
both **PyTorch and JAX**, with **ONNX export** for deployment / inference.

## Consequences

- Surrogates slot into the existing variational machinery because the adjoint is a
  first-class part of the operator contract.
- ONNX export decouples the training environment from inference / deployment.
- Costs: two backend code paths to maintain, and ONNX operator-coverage limits can constrain
  which models are exportable.
- Adjoint correctness must be verified against the forward via gradient checks — a required
  validation step for any surrogate, not an optional one.

