Under the hood
Artifact read-permission errors now use the same wording across list_files, read_file, verify, and read actions
What
Previously, the list_files and read_file artifact actions produced a different error message when blocked by a read-permission deny rule than the verify and read actions did. Now all four actions route through the same shared error-handling logic, so a blocked read produces the same denial or target-changed message no matter which action triggered it.
Why
This makes the behavior consistent and predictable: whichever way an artifact read is blocked, the resulting error message is now the same across the board.