This is going to be really pernickety. I'm sorry, I can't help myself :wink:

I probably find these kinds of "initialize, merge stuff, return" blocks easier to scan for side-effects if they're wrapped in a `tap`, like:

```ruby
        {}.tap do |errors|
          errors[:http_status] = ERRORS[:http_status_invalid] if http_status.blank?
          errors[:paths]       = ERRORS[:paths_empty]         if canonical_paths.empty?
          errors[:new_url]     = ERRORS[:new_url_invalid]     if would_fail_on_new_url?
        end
```

... perhaps because that first line says "we're populating a hash" and the eye scans the whole block and says "yep, all this method does is return that hash". If this is really too pernickety, please ignore.