I’ve had something get corrupted in a script before where simply copying and pasting the code into a new script document fixes it. So you could give that a try.
Try a new super simple script and see if it works with Contacts.
tell application "Contacts"
display dialog "hey"
end tell
Another thing that would maybe shed some light on this is to see what the names of your applications are showing up as:
tell application "System Events"
set appProcessNames to the name of every application process
end tell
Is “Contacts” showing up in the list?
Hope some of this can maybe point us in the right direction. Good luck.