b127f43b

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Read a Validation's failure only where it accumulates

base, mtl and transformers fix the argument order of Either, Except, ExceptT
and MonadError, so matching those names is matching the types we think they
are. Nothing fixes Validation: it is a name several packages define, and one
that put its success first would read the same way here, so a bare String in
the first argument was as likely to be a success as a failure. The rule had no
way to tell and no way to say so.

What tells the orders apart is that this one accumulates. A container of prose
in the first argument is not something a success-first type would have, so only
a list or a NonEmpty of prose is read as prose there. The recall that costs is
recall over code nobody writes, since a Validation that does not accumulate is
an Either with more syllables: over nix-ci8, smos, salsa, kronor, sydtest,
validity and graphql-engine the findings are the same 1531 as before, and all
eight Validation findings among them were already written as
Validation (NonEmpty Text).

good.hs holds the silence so it stays a decision.
e2e-added-rule-is-rune2e-artifacts-are-reade2e-choices-are-found-beside-the-repositorye2e-cleane2e-dirty-package-is-judged-failinge2e-dirty-project-is-judged-failinge2e-dirty-report-is-readablee2e-disabled-rule-is-not-rune2e-incomplete-artifacts-are-a-failuree2e-judging-nothing-failse2e-named-packages-are-every-packagee2e-no-packages-is-judged-failinge2e-no-store-paths-in-findingse2e-paths-are-repository-relativee2e-withheld-facts-faile2e-wrong-source-mapping-is-a-complainthlint-checkhopinionpre-commitreleaseshellweeder-checkconfiguredevShelldefaultx86_64-linux