Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions WorldModel/EXPERIMENT_LEDGER.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,3 +294,16 @@ Two reviewers verified the delivered synthetic A/Bs are sound (symlog threaded i
- **The repaired benchmark is still underpowered.** At n=200, against a deliberately large effect (an eleven-fold difference in training), the continuous endpoint reaches only |t| = 1.48. Extrapolating on the sqrt(n) behaviour it does exhibit, |t|=2 needs n ~ 365; on 3 seeds that estimate is itself noisy.
- Decision: **KEEP all six repairs** — every one removes a measured noise source and n=200 is free. **DO NOT declare the benchmark repaired.** It can now adjudicate a large effect at n~400; it cannot adjudicate the 0.07-scale effects the objective A/B line cares about, and raising n alone will not get there because the binary endpoint does not respond to n. Adopting `log_distance_ratio_mean` as the adjudicator is now a prerequisite rather than an option, and remains a separate pre-registered decision that must still clear the blind criterion.
- Next question: the ceiling is now `goal_tol` and the horizon, not the sample size. A success criterion that discards the distance it is computed from cannot be fixed by more episodes. Before any regularizer A/B: decide the adjudicating endpoint under the blind criterion, and re-examine whether `goal_tol=0.15` at `horizon=6` leaves any resolvable signal at all. Also outstanding — nodes 10 and 11 swept CEM knobs under the shared-generator defect, so their paired reading did not hold; re-running them is cheap and would either confirm "the planner is not the bottleneck" on sound footing or overturn it.

## 16 — CEM-budget sweep re-run on the repaired benchmark: node 11 confirmed, its point estimate refuted, and a worse finding underneath (2026-08-02, commit <pending>)
- Category: Benchmark
- Hypothesis: (node 15) nodes 10 and 11 swept CEM knobs under the shared-generator defect — one `torch.Generator` consumed sequentially, so planning noise on episode i depended on `n_samples * cem_iters * horizon`. Any arm changing a budget knob got different noise on the same episode, so node 11's "within seed noise" reading rested on a comparison that was not paired. Re-run it with per-episode generators, a fixed episode set, n=200 and the continuous endpoint.
- Prediction: node 11's conclusion (more budget does not lift control) either survives on sound footing or is overturned.
- Implementation: `default(cem_iters=3, n_samples=64)` vs `tuned(8, 192)`, x {signal, nuisance}, seeds 0-4, `n=384`, 22 epochs, latent_dim 32, `episode_seed=2`, `n_episodes=200`. Trivial-policy controls (zero-action and random-action) computed on the same episode construction.
- Evidence:
- **Node 11's CONCLUSION SURVIVES.** More CEM budget does not lift control: 0/5 seeds reach paired |t| = 2 on either endpoint in either mode. Mean paired |t| for signal is 0.86 binary / 0.48 log; for nuisance 0.85 / 0.89.
- **But its seed spread was 14x too wide, and its POINT ESTIMATE HAD THE WRONG SIGN.** Node 11 reported default 0.342+/-0.151 vs tuned 0.325+/-0.144, delta **-0.017** — tuned slightly worse. Repaired: signal default **0.335+/-0.011** vs tuned **0.360+/-0.016**, delta **+0.025**; nuisance 0.337+/-0.023 vs 0.354+/-0.025, delta **+0.017**. The +/-0.15 that node 11 called seed noise was mostly the benchmark's own defects, and the direction it reported was noise. A conclusion can be right while every number supporting it is not.
- **THE PLANNER ENDS FARTHER FROM THE GOAL THAN IT STARTED.** `log(d_final/d_start)` is POSITIVE in all 20 runs: signal +0.108 (default) / +0.082 (tuned), nuisance +0.128 / +0.097. Mean final distance is ~9-14% GREATER than the starting distance.
- **And it is worse than doing nothing.** Zero-action on the same episodes gives +0.034 (signal) / +0.029 (nuisance); random-action +0.046 / +0.060. Paired per-episode, planner minus zero-action is positive in **6/6** mode x seed comparisons (deltas +0.055 to +0.155, sign test p ~ 0.03), though only 1/6 individually clears |t| = 2. Same direction against random-action, 6/6.
- Decision: **KEEP node 11's decision (reject the CEM-budget lever) and REPLACE its evidence.** The lever genuinely does not work, now measured with a seed spread of +/-0.011 rather than +/-0.15. **REFRAME the open question.** Nodes 11-15 asked why the planner fails to beat chance; that framing is too generous. On the distance endpoint it is consistently worse than taking no action at all, which is not what an uninformative planner looks like — an uninformative planner scores like the zero policy. Something is systematically pointing it away from the goal.
- Next question: this is a directional defect, not a power problem, and it is cheap to localise. Candidates, in order: (a) the goal latent, already known from node 14 to sit ~70x further from the start latent than the goal displacement warrants, so the cost gradient may point almost anywhere; (b) sign or axis convention between the latent displacement and the action applied in `_step`; (c) the predictor's rollout diverging over `horizon=6` so the minimised cost is computed on a state that does not correspond to the executed trajectory. Test (b) first — it is a one-line check and would explain the sign exactly. NOTE that node 14's one-frame remedy did NOT fix control, so (a) alone is not sufficient.
Loading