how about the server queries the client to see if they've finished that map at least 3 times, then sends the information to the GLS. Not sure what the GLS would do with it, though. Maybe it's just saved on the server. BUT, all servers will get the same information from the client.
example (try and follow - it's simpler than it looks):
player 1 connects to a map - pp1
it finishes (as they connected near the end)
-----no rating (didnt play in full)---
---client records that the player has played pp1 in full once---
next map - shazz33
it finishes
----no rating (they only played shz33 once) ---
----client records that the player has played shazz33 in full once---
next map - blah
disconnects
---no rating---
---client does not record playing the map---
connects to another server
next map - shazz33
map finishes
---no rating (only played twice)---
---client records that the map has been played twice---
next map - blah2
finishes
---no rating (only played once)---
---client records that blah2 has been played once---
next map - shazz33
finishes
---rating taken (played 3 times in full)---
---client records that the rating has been taken---