A thought on custom validation and error messages:
I'm writing a custom validation function that uploads a file so the error message it generates on failure needs to be relatively dynamic. instead of defining the error message in the language file I am setting it manually using $object->error_message.
This effectively sets the error message, but also results in an extra error message of 'Unable to access an error message corresponding to your rule name: attempt_upload.'
I'm thinking custom error messages might frequently need to be more dynamic than what the language file setup allows for so it might be good to not include that error message?
Then again, there's probably merit to the argument that the file uploading logic shouldn't be part of a validation function.