Monorepo for Aesthetic.Computer aesthetic.computer

land: multiuser 3D meadow + WorldManager worlds (per-world lobbies, UDP stall watchdog) master

- disks/land.mjs: peaceful meadow fork of arena — grass/sky/soil palette, trees (trunk colliders + visual canopies), boulders, flowers; grenades, HP, and lava stripped; same Q3-style netcode on the land:* prefix. - lib/land-world.mjs: ONE shared world cfg (client prediction, reconcile, and server pmove all import the same module — no MUST-MATCH duplication). - session-server: arena-manager → world-manager (WorldManager, one instance per world; generic hello/bye/cmd/ping routing over a worldManagers map). Lifecycle broadcasts are member-scoped now — the old everyone() broadcast leaked world join/leave to every client on the monolith (chat included). - UDP stall watchdog: a WebRTC channel can die while still reporting open, starving a client of snapshots forever (root cause of 'skippy' remotes). Server demotes to WS snaps when acks stall (sticky 30s); clients (arena + land) mirror cmds over WS when snaps go quiet. Caught by the new two-browser test below — reproduced 100% in headless Chromium. - tests: session-server/tests/world.test.mjs (vitest, 8 cases); artery/test-land-multiplayer.mjs (2× headless Chromium + wire walker bot); arena-probe gains --world for any-world smoke tests (npm run land:probe). - plans/multiplayer-architecture.md: stack map, skippiness diagnosis ranked, lobby model, test harness docs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>