d6fd000 wrote the behaviors that played an animation on the player
itself. A player is plain data, and those behaviors are entities of
the run with their parents and children. The actor smoke reads the
world as JSON and threw "Converting circular structure to JSON" as
soon as its graph had played a walk animation.
- The starters live in a WeakMap next to the player and are read
with startersOf. The player carries no field for them any more.
- The animation system reads them from there when a pass ends. What
a behavior hears does not change.
- Only the hook the check scripts read the world through was hit.
The editor and a running game never serialise a player.
Tests:
- Gate on melektaus-atx: 219 files, 3400 tests, CHECK EXIT 0. It
ran on the working tree, which also held the fix to e2e 47 and
the kept panel sizes that are not committed yet. Seven of the
tests belong to those.
- One new unit test: a player played by an asker that reaches back
to its holder stays plain data, through JSON and structuredClone,
and names the asker once. Its counter-probe bites.
- Smokes on melektaus-atx: 24, 19 and 21 checks, all pass. Before
the fix the third stopped after 9 checks.
- e2e 6,17-26 on melektaus-atx: 480 checks, all pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>