Does it look at the raw source on disk?

Yes. JIT uses the inspect module to look at the source code for the function, and determines the function schema (types of the inputs and outputs) based on type annotations (either Python3 or mypy style).

How can we give it a  custom  callable type for a function and force it to recompile a copy of the function body with the new types (but a new name)?

Could you provide a code sample to clarify this question? What is it that you want to do?