Custom-family namespace shim — reconstructs the pre-carve crate::custom_family
(== crate::families::custom_family) flat namespace from the three crates the
original families/custom_family/ module was split across by the #1521 carve:
crate::inference::{quadrature, probability} → the carved homes of the two
inference submodules that already live in leaf crates. The remaining
crate::inference::{model, formula_dsl, smooth_test, predict_io, generative}
submodules are still in the uncarved monolith (see blocker report) and are
intentionally not shimmed here — there is no leaf crate to re-export them
from yet.
crate::model_types → fit-result / penalty-spec carriers now in gam-solve,
plus the finite-validation helper from gam-problem that gam-solve only
re-exports crate-internally.
Semantic block label. The compiler does not need to know what the block
is, only its relative order — but downstream consumers (per-family
install paths) tag the input operators with these labels so that the
compiled output can be routed back to the right runtime slot.
Compile a sequence of row-Jacobian operators against a shared row
Hessian. Walks ordering left-to-right, residualising each block
against the cumulative anchor in the H_i-weighted row metric, then
performs a joint-design audit and emits one CompiledBlock per
input (in the same order as operators).