I still don't see how the network determines that a node has not forged?
It sees that someone else forged the next block.
Okay - so "forget about *who is online*" and just look at "who *should* forge the next node based upon the hash value".
If we know that account 1111 was *supposed* to *forge* but didn't then we penalise node 1111 for not doing so (regardless of whether they were *online* or not).