We can use 'should have' to talk about past events that did not happen.
I should have let her know what was happening but I forgot.
He should have sent everybody a reminder by email.
They should have remembered that their guests don't eat pork.
We can also use 'should have' to speculate about events that may or may not have happened.
She should have got the letter this morning. I expect she'll give us a call about it later.
He should have arrived at his office by now. Let's try ringing him.
They should have all read that first email by this stage. It's time to send the next one.
We can use ' should not have' to speculate negatively about what may or may not have happened.
She shouldn't have left work yet. I'll call her office.
He shouldn't have boarded his plane yet. We can probably still get hold of him.
They shouldn't have sent the report off for printing yet. There is still time to make changes.
We can also use 'should not have' to regret past actions.
I shouldn't have shouted at you. I apologise.
We shouldn't have left the office so late. We should have anticipated this bad traffic.
They shouldn't have sacked him. He was the most creative person on their team.