And why we should write our recipes (code) carefully to imply intent such that dependencies like this are not created unnecessarily. Consider:
"Add one onion", vs
"Dip piece of onion in mixture until it begins to fry"
Latter clearly indicates no aspect of the recipe should be a dependency on the onion or inherit properties from the onion as the onion will be removed before runtime (consumption)
This still wouldn't be sufficient in mechanical_fish's example. Someone might still remove the onions (and the needed proteins) after the introduction of thermometers with the reasoning that this would be a "simple" and "well understood" tweak.
That is just an excellent explanation of why removing stuff from a working system can be so dangerous. Thank you.