Skip to content

bench(worldmodel): localise the control defect to the action channel - #58

Merged
aurascoper merged 1 commit into
mainfrom
bench/localise-control-defect
Aug 2, 2026
Merged

bench(worldmodel): localise the control defect to the action channel#58
aurascoper merged 1 commit into
mainfrom
bench/localise-control-defect

Conversation

@aurascoper

Copy link
Copy Markdown
Owner

Ledger node 17. Node 16 named a sign/axis convention as the cheapest discriminating test for "the planner is worse than doing nothing". Checked it — and the answer is elsewhere.

No sign error

generate records the action that produced the transition (_step(z, action, mode)post), so training sees the true mapping.

on 200 episodes
correlation(needed displacement, produced) +0.0375
sign agreement 45.5% (chance 50% ±7%)

A sign error would give strong negative correlation. Node 16 candidate (b) is refuted.

Not a reachability problem either

The dynamics are linear in the actions, so the reachable set is exact rather than sampled:

action authority (half-width) 0.459 median
displacement to close 0.207 median
goal reachable within goal_tol 200/200, both modes
planner's actual |displacement| 0.0734 — ~16% of authority

Root cause: the action barely exists in latent space

value ratio
full action swing → predicted latent 0.1378 6.1% of state signal
spread between different states 2.2613
same swing → true pos 0.1200 21.3% of state sd
sd of pos across states 0.5640

The predictor under-represents the action by ~3.5×. In the true env actions beat drift 5.66×. The authority is there — it is attenuated on the way into the latent, so the CEM optimises a variable that barely moves its objective.

That explains the correlation of zero, the 16% authority usage, and why more CEM budget never helped in nodes 11 or 16.

This corrects node 16's inference

The planner is not adversarial, it is uninformative — and an uninformative planner that still acts scores worse than the zero policy, because uncorrelated displacement added to a position increases expected distance. That accounts for "worse than doing nothing" with no directional defect.

Node 16 asserted "an uninformative planner scores like the zero policy". That holds only for a planner emitting zero actions. The measurement in node 16 stands; the inference does not.

It also reconciles nodes 6–16

Every representation-side change was scored on metrics dominated by chi/peak_amp/offset — per-trajectory constants, easy to encode. pos, the only variable control acts on, is the weakly encoded one (node 13: latent-to-position r ≈ 0.63).

Improving chi recovery while pos stays weak improves the panel and cannot improve control. The planner was never the bottleneck (node 11, confirmed node 16), the objective was not (node 14), the frame offset was not sufficient (node 14) — the action channel is.

Next test, named and ordered

This is a training-signal problem, not a planner, objective or benchmark problem.

  1. (c) first — an action-conditioned probe predicting the action from a (pre, post) pair. Diagnostic rather than corrective, needs no retraining, and converts "the action is 6% of the signal" into a number the panel reports every run.
  2. (a) multi-step training targets, so the action's compounded effect is visible.
  3. (b) scale per-step action authority (DT or an action gain).

Ledger-only change. Verified: smoke test 2 consecutive runs; ledger and ADR gates green.

Ledger node 17. Node 16 named a sign/axis convention as the cheapest
discriminating test for "the planner is worse than doing nothing". Checked it.

NO SIGN ERROR. `generate` records the action that produced the transition, so
training sees the true mapping. On 200 episodes, correlation between the
displacement the planner NEEDS and the one it PRODUCES is +0.0375, with 45.5%
sign agreement against a 50% +/- 7% chance interval. A sign error would give
strong negative correlation. Node 16 candidate (b) is refuted.

NOT A REACHABILITY PROBLEM. The dynamics are linear in the actions, so the
reachable set is exact: half-width 0.459 median against 0.207 median to close,
and the goal is reachable within goal_tol in 200/200 episodes in both modes.
The planner uses ~16% of the authority it has (|produced| 0.073 vs |needed|
0.222).

ROOT CAUSE: THE ACTION BARELY EXISTS IN LATENT SPACE.

  full action swing moves the predicted latent   0.1378
  spread between different states                2.2613   -> action = 6.1%

  same swing in the TRUE env moves pos           0.1200
  sd of pos across states                        0.5640   -> action = 21.3%

The predictor under-represents the action by ~3.5x. In the true env actions beat
drift 5.66x. The authority is there; it is attenuated on the way into the latent,
so the CEM optimises a variable that barely moves its objective.

AND THIS CORRECTS NODE 16'S INFERENCE. The planner is not adversarial, it is
uninformative -- and an uninformative planner that still ACTS scores worse than
the zero policy, because uncorrelated displacement added to a position increases
expected distance. That accounts for "worse than doing nothing" with no
directional defect. Node 16 asserted "an uninformative planner scores like the
zero policy"; that holds only for a planner emitting zero actions. The
measurement in node 16 stands, the inference does not.

It also reconciles nodes 6-16. Every representation-side change was scored on
metrics dominated by chi/peak_amp/offset -- per-trajectory CONSTANTS, easy to
encode. `pos`, the only variable control acts on, is the weakly encoded one
(node 13: r ~ 0.63). Improving chi recovery while pos stays weak improves the
panel and cannot improve control.

Next test named and ordered, cheapest and most diagnostic first: an
action-conditioned auxiliary probe that predicts the action from a (pre, post)
pair, which measures how much action information the representation retains and
belongs in the panel regardless of whether it is used as a loss.

Ledger-only change. Verified: smoke test 2 consecutive runs; ledger and ADR gates
green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DJJ8y1zo7WSqEmGNW8DQap
@aurascoper
aurascoper merged commit 30ebd59 into main Aug 2, 2026
2 checks passed
@aurascoper
aurascoper deleted the bench/localise-control-defect branch August 2, 2026 05:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant