3fd1c4b1

Created Started Finished

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

Make the contract the next rule has to keep

The two commits before this gave the three fields distinct jobs. Nothing
recorded that, so the next rule is free to go back to answering the same
question three times.

Record it where a rule author is already looking: on the fields
themselves. The finding message names what was found and only that, the
rule text is one short line, and the why is the argument for the rule
rather than for any one finding.

Assert the one part of it a machine can hold. A rule text over 80
columns is a rule saying two things, and the second belongs in the why.
RuleSpec is where the meta-properties live, so it costs nothing per rule.

Three things the sweep before this missed:

ExampleNoShouting is the rule a repository copies when it writes one of
its own, and it was the worst negation in the tree: a comment is not
written in capitals, there is no standard and there does not need to be,
a rule hopinion does not ship. The template is the last place to leave
the pattern.

HsNoFilePath said "so those mistakes compile" after a sentence that
named no mistake. It names one now.

HsAppOnlyMain claimed only a library can be imported, which is not what
stops an executable being tested: a test suite imports its own modules
happily. What is true is that an executable's modules are private to it.

Goldens reset.