What turns 'two tools' into a framework for program analysis? A shared substrate (one derivable semantics) plus a fixed instrument interface (six slots), so the n-th tool is added by filling slots and discharging one linking theorem — never by re-describing the language. What are the two honest ways to make two tools agree about a program, and the disease that strikes if you do neither? (1) Share the semantics literally — agreement is definitional and free. (2) Link two descriptions by a theorem (adequacy, simulation, soundness, conformance). Skip both and you get drift: multiple hand-written 'semantics' that silently disagree as the language evolves. What are the six slots that define an instrument in this framework? 1) Carrier (what the fold lands in), 2) Transfer per operator, 3) Fixpoint strategy, 4) Query language, 5) Linking obligation (the theorem binding it to the substrate), 6) Evidence/output. Slots 1–3 make it run; slot 5 makes it trustworthy; slots 4 & 6 make it useful. Why are the substrate layers of the analyzability contract cheaper than they look? Layers 0–3 (signature, a derivable reference semantics, a named observable configuration, rule families) are paid once per language. The per-instrument extras (a domain + Galois connection, an assertion language, a proof system) are paid once per tool and shared across every tool of the same family — every numeric instrument reuses the same domain.