== legal swap: plan matches model ==
model: legal true depth 1 score 30 moves 1
plan:  legal true rounds 1 score 30 moves 1
final==model true
contiguous true
final board:
RRPBORRG
PGPPOGRO
YYBOPRYB
GBYBYRGP
OGBYRGOY
BYRRPRBG
YOYYROBB
OROBPPRB
== illegal swap: untouched ==
legal false rounds 0 score 0 moves 0
== input gate: locked while animating ==
accepts idle true busy false settled true
release_gate_commits true press_gate_commits false
ok: animation layer leaves the model result unchanged
