Never mind, I just tried my Kwikset 912, The status is correct unless I use the lock button as you said. Turning the lock from the inside or issuing commands digitally all is as it should be. I all most never lock it with the button so I had not noticed.
update: I got busy yesterday with testing this lock and narrowed down it's quirks.
Manually turning the lock/unlock results in the driver correctly tracking the status.
Operating the lock digitally also tracks the correct status.
If the lock is unlocked digitally pressing the keypad lock button locks it and updates the status in the driver.
If it was Locked digitally then unlocked from the keypad the correct status is tracked.
But if the lock was locked or unlocked manually by turning the center mechanism then using the keypad, the lock operates as expected but does not update the driver of its new status which may cause rules to operate incorrectly.
Here is the big one... If I try to issue a refresh to the lock, hubitat gets into a tight loop trying to read the key code locations which error. Soon I get a hubitat alert about a high load. I have not found a way out short of a hub reboot or deleting the device. Disabling the lock driver only causes the system to wait for the driver to become active then picks up where it was stopped.
I Use the same generic lock driver for my Yale 256 dead bolt but have not observed similar behavior.
If your lock gets weird, look at the device event logs.