'Who hasn't had lunch yet?' is natural; 'Who has had lunch yet?' is not. We'd ask, 'Who has had luch (so far)?' or 'Who has already had lunch?' The answer is fine, if we know who 'he' is.
So we say "who hasn't had lunch yet?" and the short naswer is "he has" not "he hasn't". Why? I think because the verb is negative, the short answer must be negative too.
And when we say "Who isn't at home?", what is the correct short answer? "Mat isn't" or "Mat is"?
So we say "who hasn't had lunch yet?" and the short naswer is "he has" not "he hasn't". Why? I think because the verb is negative, the short answer must be negative too. If 'he' has had lunch, then the response is "He has (had lunch". If 'he' hasn't had lunch, then the answer is "He hasn't' (had lunch).
And when we say "Who isn't at home?", what is the correct short answer? "Mat isn't" or "Mat is"?
If Mat is not at home, then the answer is "Mat isn't (at home)" - or just "Mat".