Feature — DTO SolverState for QILC warm-start
Vault: hopper/dto-api-solver-state-and-warm-start.md
File: Piccolissimo/src/solvers/altissimo_backend.jl:991-1155 (Altissimo.Optimizer per call, lambda,mu zeros, rho, LBFGS reallocated), DirectTrajOpt/ext/MadNLPSolverExt/solver.jl:104, IpoptSolverExt similarly.
Every solve! rebuilds from scratch — only primal x carries over (mutated datavec), duals lambda,mu,rho, LBFGS history, Tsit5 scaling probe (~30*N ODEs) discarded. QILC outer loop (10+ solves) repays 5-25% wall + 27% alloc.
Proposed: AbstractSolverState + solve!(prob,opts; state=nothing) -> state, opt-in, bit-equal cold path. Altissimo backend first (cleanest, needs reset_histories=false), then relocate altissimo_backend.jl to DTO AltissimoSolverExt.
Severity: HIGH for QILC/Altissimo loops. Blocks efficient outer loops.
Feature — DTO SolverState for QILC warm-start
Vault: hopper/dto-api-solver-state-and-warm-start.md
File: Piccolissimo/src/solvers/altissimo_backend.jl:991-1155 (Altissimo.Optimizer per call, lambda,mu zeros, rho, LBFGS reallocated), DirectTrajOpt/ext/MadNLPSolverExt/solver.jl:104, IpoptSolverExt similarly.
Every solve! rebuilds from scratch — only primal x carries over (mutated datavec), duals lambda,mu,rho, LBFGS history, Tsit5 scaling probe (~30*N ODEs) discarded. QILC outer loop (10+ solves) repays 5-25% wall + 27% alloc.
Proposed: AbstractSolverState + solve!(prob,opts; state=nothing) -> state, opt-in, bit-equal cold path. Altissimo backend first (cleanest, needs reset_histories=false), then relocate altissimo_backend.jl to DTO AltissimoSolverExt.
Severity: HIGH for QILC/Altissimo loops. Blocks efficient outer loops.