Lint stored definitions, as `tcm view` shows them (current names, imports, `export`), cached by hash and the linter's version and configuration. `fresh` lints again regardless.
A tool tcm provides: the one it ships, or installed in the cache as `toolModule` says (there already, if it was installed with other packages, as a test runner's are).
What a tool tcm provides is installed as in the codebase's cache (`npm:vitest@5`), or undefined when it's the one tcm ships (`shippedPackage`), unless the codebase settled on a range that one isn't in (chosen with `tcm upgrade <tool>@<range>`, or the one its tests import Vitest at): at that range, else the newest release's. For installing several at once (`provideTool` installs one).
How tcm lints, as part of a finding's cache key: a change to what tcm keeps of oxlint's findings lints again. 2: findings about a definition's own cycle-mates as imports are dropped.
Findings that come from linting a definition apart from the ones stored with it. Definitions that refer to each other are one module where they run, but each is linted as `tcm view` shows it, the others imported: assigning to one (a `let` they share) isn't assigning to an import, and an import only assigned to isn't unused.