Just because there is a function to force baggage acceptance, doesn't mean one should expect it.
I would suspect at more complicated stations like LHR the likelihood of an exception being made are much smaller. Certainly wouldn't count on it or blame the agent, who was likely just following station procedure (and the conditions of contract).
As for being offloaded, AC does publish a "boarding gate deadline" of 45 minutes prior to departure for international flights. It's not the same as "boarding gate closes", but it is a published time on their website.
Does LHR still use a hold room that you scan into prior to boarding? If so, I imagine that, for better or for worse, that's what they used in order to determine whether to close the flight before T-15. If they checked to see if you had scanned through security when all passengers were boarded, and did not see that scan, I can see why they buttoned up the flight early.
They are covered by the
CoC which states:
Additionally, you must be available for boarding at the boarding gate as per the boarding gate deadlines indicated below. Failure to respect check-in and boarding gate deadlines may result in the reassignment of any pre-reserved seats, the cancellation of a reservation, and/or ineligibility for denied boarding compensation.
The 45 minute boarding deadline is indicated in the grid further below.
From a contract standpoint, AC didn't appear to do anything wrong.
From a customer service standpoint, they could have handled it better. But a busy/large station like LHR isn't one where one would expect exceptions to be made.
While I sympathize with the OP, I don't believe responsibility should be laid on AC in this case. My answer to OP's initial question is that the anger is misguided as opposed to justified.