The acquisition loop ran acquisition_samples GP predictions per BO iteration, each allocating three short-lived Vecs: the candidate point, the k_star kernel vector, and solve_lower's output. Threading reused buffers through new sample_uniform_in_bounds_into / predict_into / solve_lower_into entry points removes ~3000 alloc/free pairs from bayesian_opt_short. bayesian_opt_short: 2_398_972 -> 2_255_904 (-6%). This is a structural (allocation) win, not an algorithmic one -- the GP fit (Cholesky) and EI prediction are inherently O(n^2)/O(n^3) with transcendental kernels, and that work is unchanged. Output bit-identical -- all 606 tests pass, including the run() snapshot; async builds clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>