opcache preloading, revisited and still not worth it

A feature evaluated in 2023 and rejected, re-measured in 2025 because the codebase has changed, with the same conclusion.

  no preload                p50 38ms   p95 180ms
  preload, app namespace    p50 36ms   p95 176ms
  preload, app + framework  p50 33ms   p95 168ms
                            memory +310 MB per worker

5ms at the median for 310 MB × 20 workers, and a
restart requirement on every deploy that the symlink
switch does not satisfy.

rejected again, and the measurement is now in the
decision record so the third evaluation is a read.

Re-measuring rather than citing the old conclusion is the right instinct and it produced the same answer, which is the outcome that makes the exercise feel wasted and is not. Recording the numbers is what turns the third evaluation into a five-minute read — the previous rejection had no numbers in it, which is why this one happened.