Readiness coverage audit¶
This audit maps compiler and provider behavior to current regression tests. The tests protect observable contracts; the table does not claim 100% line or branch coverage or numerical validity of every user model.
Paths below are relative to the repository root. Source and installed-wheel suites exercise these contracts; mandatory backend jobs additionally reject missing or skipped selected tests. See contributing for the local commands and backend qualification for the qualified CPU precision, layout, and AD boundaries.
| Requested area | Evidence |
|---|---|
| Mixing kernel generation | flepimop2-op_system/tests/test_mixing_kernels.py: independent scalar formulas for all five forms, rectangular source/target grids, one-axis square grids, custom asymmetric matrix orientation, scalar no-axis policy, flat/structured injection with independent nonuniform quadrature. test_erfc_kernel.py checks fixed numerical values and positive tails. |
| Multi-axis and categorical/ordinal/continuous axes | tests/op_system/test_op_system_specs.py, test_op_system_templates.py, test_time_interpolation.py: generated linear/log grids, coordinate validation, multi-axis selectors, pinned coordinates and singleton time axes. test_axis_edge_contracts.py rejects empty coordinate lists for each type while retaining scalar axes: []. |
| Sum and integration helpers | test_op_system_apply_along.py, test_op_system_ir_lower.py, test_renewal_births.py: helper composition, filters, categorical sums, trapezoidal weights, mismatched axis-type errors, and births. Required test_backend_qualification.py checks nested mixed categorical/continuous reductions against an analytic bilinear integral on nonuniform grids, including precision and JAX/Torch derivatives. |
| Hazard-rate transitions and conservation | test_routing_transitions.py, test_axis_kernel.py, test_jump_integral.py, test_renewal_births.py: independently computed cell flows, batch balance, source/target orientation and open/closed-system invariants. Required backend cases compare independent block, mixed-selector and global-total flows. |
| Provider construction and metadata | flepimop2-op_system/tests/test_system.py: bind/step interfaces, flat/structured/block parity, flatten/unflatten helpers, axis order/sizes/coordinates/types/labels, parameter requests, time tables, operators and reactions. test_sparse_table.py covers support assembly. scripts/qualify_provider_types.py gates the installed wheel's public types. |
| Failure paths | test_op_system_specs.py, test_op_system_compile.py, test_bare_state_references.py, test_mixed_template_selectors.py: malformed declarations, missing/indexed states, allowlisted ASTs and legacy-selector diagnostics. Provider kernel tests check unknown axes/forms, missing form parameters and missing custom values. |
The audit exposed and separately fixed unavailable numpy.erfc, untyped
literal precision, and incompatible/promoting continuous weights.
The broader inventory therefore checks actual matrix values and derivative
behavior rather than accepting compilation or metadata shape alone.
Gamma kernels retain their existing unnormalized shape with distance clipped
to 1e-12 at zero. No-axis analytic declarations retain scalar params.value
(default zero); callers must declare axes to obtain a generated matrix.
Cross-axis constraints are preserved as reserved metadata by public
normalization; private parser tests do not establish public validation or
masking. Constraint-based filtering and reductions remain unimplemented. Optional GPU paths and large timing runs are
not qualified by the required CPU matrix.