That is wonderful.
I always dread dealing with build systems, mostly in the C land.
Deterministic behaviour, especially in this rigorous fashion, is probably very helpful for much more cases than just trust.
This looming assumption that make executes pure functions to produce output could actually become true. Now it really suffices if make triggers a target if one of the inputs changed.