HPAI · Working diagnostic replay · Studio tests separate

Replay the duplicate-reward bug and fix

This working JavaScript replay runs the same timed events through broken and guarded state models. The log is produced by the code you run, not a screenshot or fabricated Roblox Output.

Completed diagnosis for this controlled reproduction

Expected: one reward per shared coin in three seconds. Reproduction: A at 0ms, A at 40ms and B at 80ms. The broken model rewards every callback. The guarded model records every callback but rewards only the first. The evidence identifies the missing guard in this model; it does not diagnose an unseen real game.

Minimal Roblox changes

Restore: if not available then return end
Keep: available = false before the score change
Restore: coin.CanTouch = false during the cooldown

· Executed browser-model logic checks

The actual Studio scripts still need their own Studio test. Never insert the broken copy into a published game.