Is it haulting really in conflict with linear types?
If we inspect function from outside and we pick random time T after starting (but before finish) the event has been happen at most once. After function is finished event is done exactly once. I think conceptually situation is pretty much the same is T: 1ns | trillion years | infinite. So I feel that "It WILL happen after infinite time." is valid claim and therefore haulting by itself is not a problem.
In real world issue seems to be that we cannot run our software from very long to infinite time whenever is it haulted or not => at some point we kill that process. Killing process on the other hand is harmful thing for promise to run exactly once since killed process won't product anything new for sure. So in practice haulting results always to killing process but if process is killed it don't mean that process was haulted. So I claim that you shouldn't proof that your system won't hault but instead you should proof that process cannot be killed if anything. At the end it depends how we want box our world.
What you think?