makeSolverStateSnapshot

Creates an immutable snapshot of the solver's current state. This is typically called at the end of an iteration to broadcast the state to any attached listeners safely.