0c989f12

Drop the guide citation and the class from a rule

Stacked on #12. Review that first; this diff is against it.

Both were fields the tool carried and nothing acted on. 20 files, and it takes 53 lines out net.

## The class was a label claiming a behaviour

Its own Haddock said so: *"which `list-rules` prints and nothing else acts on"*, and *"Not a runtime setting. Every finding fails the run whatever this says."* Nothing branched on it anywhere. So `TestGenValidSpecPerGenValid` printed `ratchet` and failed the build exactly like an error.

`plan/rule-triage.md` had it right all along: *"Class, the confidence gate a check must clear before it ships. Every rule is on by default and every finding fails, so this is not a runtime setting."* The plan's class column stays, because it is a gate on shipping. The tool's field is gone, because the tool was printing that gate as though it were runtime behaviour.

## The guide said the same thing twice

For `HsNoFilePath` the citation pointed at a section of `haskell-style.md` that says nothing about paths, because the rule was decided in review. But the worse problem was for the rules that *did* have a guide: the report stated the requirement twice, once in the guide's words under the span and once in the rule's own in the note above the reason. The goldens show what a reader was paying for it:

```diff
-     • ╰╸ Put generators (like GenValid instances) in the <package>-gen package
-     │ Note: From haskell-style.md. A GenValid instance in a package's own library
-       gets compiled into the executable. Move it to the matching -gen package.
+     • ╰╸ A GenValid instance in a package's own library gets compiled into the
+       executable. Move it to the matching -gen package.
```

What a rule asks for and why is in `ruleText` and `ruleWhy`, which every finding already carried.

## What went with them

`Class`, `classText`, `GuideRef` and its accessors, their `GenValid` instances and their `genValidSpec` calls. `list-rules` now prints the id, whether this run makes the rule, and what it sees. `explain` drops the guide line and the class from the level line.

Four goldens moved and every changed line is one of the two removals.

## The README check got stronger, not weaker

Its table carried which guide says each rule; it now carries what each rule sees, which `list-rules` still prints. So `scripts/check-readme.sh` holds the levels instead of the citations, and I falsified it again: claiming `HsNoFilePath` is a `project` rule fails it.

## Review loop

```
nix flake check
nix develop --command cabal test hopinion-test --test-options="--ai-executor"
```

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 2s 1s 1s 3s 2s
Eval 3s 11s 11s 15s 0s
Build 11s 6s 10s 22s 0s
Suite 2s 20s 20s 22s 2s

Timeline

0s10s20s