8da26eb6

Let a rule say it needs a whole package

Stacked on #16, which added the store this reads. Review that first; this diff is against it.

`HsGenValidInGenPackage`, from `haskell-style.md`: a `GenValid` instance belongs in the gen package, not beside the type. Answering that needs two packages at once, which no rule could ask for until now.

35 files, 610 lines. 249 tests.

## The level is the rule's constructor

So nothing can disagree with it. A module rule is handed one module; a package rule is handed a query over the store. The envelope never learns what is in a rule's table, which is why adding a rule adds no case to it: a package rule is a migration, what it writes out of one module, and the query it answers with.

Each level judges exactly the suppressions naming its own rules. That is what keeps unused-suppression detection sound without a pass over the whole repository: a suppression for a package rule cannot be called unused by the module phase, which has not run that rule.

The three module rules gain one line each saying which level they are. That is the whole of what the level costs a rule that does not need it.

## Why this is not two PRs

I tried. The level machinery on its own fails `weeder-check`: `runPackagePhase` and the rest are reachable only from a rule that declares a package level, so a machinery-only PR is dead code by the build's own measure. Machinery has to arrive with its first user, which is what the stack's rule about "exactly the machinery that rule needs" was already saying. The store could come out because it has a spec that exercises it; the level cannot, because what would exercise it is a rule.

## Still not here

One process, so the store has nowhere to go and nothing crosses a process boundary. Nothing reads what the compiler wrote down: the package check's signature does not take the compiler's answers, because this rule has no use for them. That is #12.

## 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 6m57s 1s 1s 6m58s 6m57s
Eval 8m43s 8s 8s 8m51s 1m44s
Build 8m51s 0s 0s 8m51s 0s
Suite 6m57s 9s 1m54s 8m51s 8m42s

Timeline

0s8m50s