Generally Declare Onchange will be triggered when there is a change of value in watched property. In your requirement you are witing into log file when the status is changed. Please check the conditions in when rule are met according to requirement and try to trace the onchange rule whether the value is changing or not for the property at that triggered time.
and the activity prints both .pyStatusWorkOld and .pyStatusWork to the log file
What's interesting is that it prints that the status changed from In Progress to Complete, but the case audit trail doesn't have this change entry (this discrepancy happens only in few instances and is currently an issue here)
On reviewing the SR, it was observed that the issue was due to the AllCoveredResolved ticket not working as expected. On removing this and adding a refersh condition to teh attachments section resolves the issue.