Duplicate variable names across contracts are not a merge problem -- each contract independently processes its own copy of the raw value, there is no runtime merge at all. This is purely a build-time lint.
Only one thing is treated as provable without executing code: two
processors with explicit, differing : T return type annotations. That is
a hard error. Everything else (differing processor/validator source text
with no annotation, or none at all) is a warning -- we cannot prove
semantic non-equivalence via static analysis alone, and the library never
executes schema code to check further (see literal-eval.ts).
Flags cases where two contracts declare the same variable name but appear to disagree about its shape, so a human can confirm they're still meant to be "the same" var.