mp_test_driver.gd was 1458 lines doing six unrelated jobs. It is now
orchestration only — the scripted sequence, the RPC plumbing between peers, and
the manual keyboard controls — with the work in modules that each have one:
MpWorldView finding things in the world and describing what they are doing
MpSteps the simulated player actions (reach, grab, carry, drop)
MpAsserts the per-step checks
MpSnapshot the cross-peer sync audit
MpReport the ledger, the log, the overlay, the screenshots
The scenario list and the audit logic carry over unchanged. That audit compares
what is actually RENDERED on both peers, not just the replicated values behind
it, which is the only thing that catches a plate whose contents arrived but
whose visuals were never rebuilt — so it was worth moving verbatim.
Assertions that tested the old model now test the new one: "who is holding
this" is the authority of the object's NetXform, not of the object itself.
Suite: 146/146 passing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>