66d7191c

Let a rule cite no guide

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

`HsNoFilePath` cited `haskell-style.md`'s "Preferred libraries", which says nothing about paths. The rule was decided in review and the guides have not caught up. Pointing it at some other section to make the citation resolve would have been worse than pointing it nowhere: a reader following it would land on a section that does not say what they were sent to read.

So `ruleGuide` is a `Maybe GuideRef`, and `HsNoFilePath` has none.

## What a reader sees

`explain` says `Decided in review. The guides do not carry this one yet.` where it otherwise says which guide and which section.

A finding puts what the rule asks for under the span, where a guided rule puts the guide's own words, and drops the note that would say where the rule comes from:

```
[error HsNoFilePath]: The type FilePath. Say what the path is with Path from path.
     ╭──▶ thing/src/Thing.hs@3:16-3:24
   3 │ resourceDir :: FilePath
     •                ┬───────
     •                ╰╸ Say what a path is with path's Path, rather than with FilePath.
     │ Note: A FilePath is a String, so it says nothing about what it holds: ...
     │ Hint: To suppress, write this directly above line 3 ...
```

Dropping that note is the point rather than a saving: with it, the note and the label said the same sentence twice, which is what my first attempt did.

`list-rules` leaves the guide column empty, which the README's table says as `none yet` and `scripts/check-readme.sh` reads back as empty.

The other five rules keep their guides and are unchanged in every output, which the report golden still holds: `Note: From comments.md. A TODO needs an issue reference or a URL ...`

## Review loop

```
nix flake check
nix develop --command cabal test hopinion-test --test-options="--ai-executor"
```
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-checkhopinionplanpre-commitreadmereleaseshellweeder-checkconfiguredevShelldefaultx86_64-linux