By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Say nothing when the name names no type, or names one nobody can build Running the rule over nix-ci had it name a type on no basis twice over. That repository declares three ClientSecret newtypes, one per forge, because one forge's client secret is not another's. The rule told a reader to use "ClientSecret" and chose between the three by the order their rows came back in. A name the project declares in more than one module names no type, so it is not in the lexicon at all now. It also named Width for a field holding a Word, where Width is exported without its constructor on purpose so that a panel can only have a width the grid has room for. A constructor leaves a module only inside its type's subordinate list, so a bare entry in an export list is the type and not the constructor however alike they are spelled, and a type nothing outside can wrap a value in is not a fix any field can apply. That is the same thing the dependency walk already asks: do not name what the site cannot use. Four of this rule's eleven findings in nix-ci remain wrong and none of them is wrong in a way a checker can see: a GitLab payload's username is not the validated account name this project parses, and a cursor's row height in grid units is not a panel's declared height. Those want annotations, which is what the rule's bucket is for, and they are the reason it is not the error-grade rule it was argued for.