The simplified explanation to the Halting Problem relies on the contradiction in if you have a Turing Machine H that can decided if a program p halts, it loops forever if p halts and halts if the p doesn't. Then be feeding this program into it's self you end up with the logical contradiction.
I feel like I am missing something fundamental here. Why do the outputs of H have to be loop or halt, rather than 0 or 1?
Since we start from the assumption that H is some magic box which can decided the Halting Problem, why can'y we assume that it gives a yes/no answer and then always halts?