dd68c7c9

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

Remove annotate, and fix the bug that outlived it

annotate existed to adopt a repository in one pass: a suppression at every
finding, with a reason that is truthful, greppable and countable. It did that
for nix-ci, which was the whole job, and nothing has needed it since.

It was also the only broken thing in the first review of this tool. It decided
between the site-scoped and the file-scoped form of a suppression by asking
whether the finding's span was a whole file, but what decides whether a
site-scoped comment can attach is the comment's attachment. For a marker above a
module header, in an export list, or after the last declaration, it wrote a
suppression that attaches to nothing: the next run reported a broken suppression
AND still reported the finding, and each further pass inserted another one.
Reproduced, and it grew on every run.

Removing the writer does not remove that bug, because the report offers a reader
the same text from the same function. So the test is fixed rather than deleted,
and it is the disjunction, since neither half implies the other: a comment
attaching to the file has a real span and a file scope, while a generated
instance has a declaration scope and no line to point at. It lives in
'suppressionIsFileScoped', which the hint asks too, so the place named and the
text offered cannot disagree.

What replaces the deleted fixed-point test is narrower and true. The suppressed
fixture gains the two placements that were broken, each suppressed with the
file-scoped form the report now offers, and it is still clean. A new misplaced
fixture holds a site-scoped suppression in each of the three placements where
one cannot attach, and its golden is all three being reported.