Expand description
Block-triangular / Schur augmented-system solver (pounce#180 item 2, Phase 2).
Wraps the standard StdAugSystemSolver — reusing its exact KKT assembly
and RHS packing — but routes the assembled system through a
FeralSchurSolver over a caller-supplied F/S partition (see
crates/pounce-feral/src/schur.rs). The partition is given as KKT-space
indices (0..dim in the x, s, c, d block order StdAugSystemSolver
assembles); the S block is Schur-complemented out and only the two
diagonal blocks are factorized, with inertia recovered a priori via
Sylvester’s law.
Gate + fallback (first-class, per the scope doc). The Schur path helps
only when n_schur ≪ n_f; and it is feral-specific. This wrapper falls back
to the plain StdAugSystemSolver — transparently, preserving every solve —
whenever: the Schur fraction exceeds max_schur_frac, the partition is
malformed for the current KKT dimension, or the Schur backend reports a
FatalError. A fallback is permanent for the rest of the solve (the KKT
pattern is fixed across IPM iterations, so re-deciding every iterate is
pointless).