# Cramer–Rao Temperature Controller MVP ## Run ```bash /home/maxwelhelp/main/bin/python3 cr_controller_experiment.py ``` This writes `results.json` and prints the measurements. ## Toy model The experiment uses an exactly normalized one-dimensional double-well distribution on a dense state grid, `q_beta(x) ∝ exp(-beta E(x) + c beta F(x))`, with `E(x)=(x^2-1)^2+0.08x` and `F(x)=x`. `c=0` is the equilibrium Boltzmann case; `c=0.65` is a deliberately nonequilibrium beta-conditioned sampler. Its exact beta score is `d_beta log q = -(E-E_mean) + c(F-F_mean)`. The controller uses `db = delta / sqrt(Var(E) * Fisher + eps)` with a maximum-step clip and positive annealing direction. ## Quantitative mechanism checks Results are in `results.json`. 1. **Cramér–Rao saturation:** predicted `rho=1` for equilibrium and `rho<1` for nonequilibrium. Observed equilibrium mean/max rho = `1.000000/1.000000`; nonequilibrium mean/max = `0.639240/0.932867`. The maximum inequality excess was numerical roundoff (`2.3e-16`). 2. **Tolerance scaling:** predicted controller step proportional to `delta` (log-log slope 1). Observed slope = `1.000000` for both equilibrium and nonequilibrium. For the tested tolerance range, actual energy jump divided by delta was at most `0.9951` (equilibrium) and `0.5747` (nonequilibrium), with the ratio decreasing for larger finite steps. 3. **Schedule stabilization:** with `delta=0.03`, the controller’s maximum energy jump was `0.02911`, versus `0.23205` for a 40-step geometric beta schedule. With `delta=0.06`, values were `0.05652` versus `0.23205`. The `delta=0.01` controller does not reach beta=4 in 40 updates; this is expected because a stricter energy-change budget trades endpoint progress for stability. The schedule comparison is therefore descriptive, not an equal-progress speed benchmark. This is an exact-distribution numerical mechanism verification rather than a trained neural sampler experiment; it avoids conflating estimator noise with the claimed inequality.