research log · ls20 · level 2 · dead-run 2953803

The agent reads a visual puzzle where it should read a discrete code.

It infers a visual puzzle from pixels and never reaches the discrete code (5, 1, 3) — so it loops on one action and dies when the fuel runs out.

code register · current → required set · cycle · blind
pattern 55
color 01
rotation 03
COLOR cycler @(29,45) +1 mod 4 ROTATION cycler @(49,10) +1 mod 4

Pattern is already right. The agent has to step the color cycler once and the rotation cycler three times — on a register it never represents. Over-cycling wraps past the target.

7 fuel read as code
each action takes up 2 yellow cells from left to right, and after 4 moves, the first 4 columns turn gray

Verbatim machine output. The depleting fuel bar is mistaken for a code grid; the model that would solve the level — three discrete registers — never appears.


the dead run · four signals · 184 turns to fuel-death

How one wrong frame survives the whole run

The same misread compounds: a fuel bar read as a grid, then a code puzzle reframed as movement, then pixel archaeology, then the reset that wipes whatever code was set.

ls20-L2 · 64×64 · the frame the agent is reading

Bottom band of yellow (11 = fuel/trail) is what t7 reads as code columns. The three discrete registers it must set are elsewhere, off the bar.

ACTION4 repeated — fixation streak ×many
7fuel read as code
each action takes up 2 yellow cells from left to right, and after 4 moves, the first 4 columns turn gray

Wrong: the depleting fuel bar is read as a code grid.

33navigation misframe
Investigating movement issues... bounding remains at x34, but maybe the second/right is blocked

Wrong: a code puzzle is framed as a movement problem.

127pixel over-analysis
def pattern5(fr): ar=fr.grid_np ... rows.append(...)

Wrong: tries to READ the lock motif from pixels; never reaches (5,1,3).

149reset / fuel death
Figuring out the reset issue... something burned... reset to the initial

Wrong: fuel runs out, the code is wiped, the run restarts from zero.


what we tried · a fixed set, not a pipeline

Four components, one shared blind spot

Each component attacks the stuck run from a different angle. None of them installs the discrete code-register model — they all converge on the same wrong “stencil” picture.

WorldModel Miner Judge Use
WorldModel · theorist

Its abductive hypothesis is plausible but wrong — it invents a hidden trap instead of a register:

Single hidden constraint... Level 2's yellow checkpoint/refill tiles act like a checkpoint/reset trap that teleports/reverts the key and code state.

Committed skill (decode ON): “Count covers from the current state and stop on the first state that makes the lock open; if the activator cycles, prefer the minimum additional covers.” Still a stencil, not a register.

Miner · 3-lens tournament

Three lenses, one winner — and all three converge on the same stencil model.

none explore 0.79 · EXPLOIT 0.88 (wins) · divergent 0.74
worldmodel explore 0.21 (collapsed) · exploit 0.86 carried
Judge · counterfactual commit

Commits a wrong stencil skill at high confidence — with zero usefulness behind it.

combined = advantage(dIG) × grounding = 0.88 ≥ 0.7 → COMMIT

But discovery-lift DP = 0.00 for every arm. The judge approves a wrong skill at 0.88. (A3 eval-axis: novel_state cross-judge 0.80 vs 0.10.)

Use · observability root

The root cause, measured: the agent can only name the field when handed the decoded state — never from text or raw pixels.

correct_field 0/12 text · 0/12 raw grid · 7/12 decoded (Fisher p=0.0046)

Skill direction matters: toward = principle survives a target reseed (DP +0.36); world-model-as-text is harmful (DP −0.17).