fix(coinfall): the pusher pays, on measurements rather than guesses
- Physics.setVelocity applies its vector in the body's own frame (#7618), so
every machine on the left wall was driving itself out of its own cabinet down
the hall. The pusher is driven in its local frame and clamped to its rails.
- The moving platform reached only the back third of the field, so a swept coin
landed on static steel and nothing could move it again. It now runs to within
a few coins of the lip.
- The bed is laid TOUCHING and staggered: at a 6%% pitch the coins sat 2 mm
apart and a push died in the first gap. Measured, 30 coins dropped into that
bed banked exactly zero.
- The bed fills its base layer solid before heaping, and is loaded at the level
the machine holds at rest with the drive stopped -- an overfilled bed shed
most of a quota over the lip before the player touched it.
- Prizes are scattered through the bed rather than parked at the front edge.
- A machine loads its own bed from its update, sweeping orphans a hot reload
left behind: a field written on a component in the frame it was added is
overwritten when the component initialises.
- Pay events are collected and fired after the settle walk. Firing inside it ran
the quota check, which cleared the field the walk was still indexing.
- Quota targets recalibrated against measured throughput.