A declared field and its written type. Resolution uses this fact for
receiver chains such as self.harness.check() without pretending that
the field access itself is a symbol definition.
Everything extraction produces for one file. Content-addressed: the hash
is the incrementality key — same bytes, same facts. The persisted set of
FileFacts is the source of truth every derived table rebuilds from.
A local binding (parameter, let/const, loop variable, catch variable)
that shadows outer names. Not a symbol — recorded so resolution never
binds a shadowed reference to the outer definition it no longer means.
An impl block naming the trait it implements (impl Runner for Widget).
Pairing fact for dynamic-dispatch edges: methods defined inside span
implement the same-named methods of the trait trait_name resolves to.