I think that Mary has two game-changing secrets that explain all of the plot holes in S3.
She’s a double agent (Read my definitive proof here.)
She has a secret child.
The Secret Child is the invisible thread that connects everything together.
I have an abundance of ACD canon facts supporting this premise, but first here’s a visual to highlight my point.
I believe that Mary is based on Effie Munro; the suspicious wife in The Yellow Face.
Here’s a quick numeral summary of the parallels.
1) Effie moved to the UK five years ago.
2) She hides her past from her husband.
3) She is obviously involved in something shady.
4) Her husband catches her sneaking off and she refuses to explain herself or defend herself.
5) Her dear husband forgives her without further explanation. Okay, this is important: not only does her husband forgive her… but he forgives her using almost the same speech John used to forgive Mary (the essence of the message is exactly the same even if the wording is a bit different).
You are at liberty to preserve your secret, but you must promise me that there shall be no more nightly visits, no more doings which are kept from my knowledge. I am willing to forget those which are past if you will promise that there shall be no more in the future.
6) It turns out Effie was hiding her child from a previous relationship.
7) It is a locket with the picture of the child that reveals the secret.
Now remember the necklace Mary was wearing in HLV?
Well, Moffatt, Gatiss, and Sue have said in the DVD commentary of HLV that the necklace has meaning and explains something.
Sue: She’s got a necklace there, hasn’t she?
Mark: Yes, we’ll have to explain that at one point.
Steven: There’s quite alot of things we’ll have to explain, Mark.
I think just like in canon, the necklace represents the secret child. Instead of a locket with a photo (not really worn present day), it is a 5 petal redish-purple flower. I surmise that the flower is an actual violet and that the secret child is named Violet. (There are a tons of females named Violet in ACD canon!)
ETA: And now we know the name of the little sister is Rosie. Two flowers!
I wrote this post over three years ago and deleted it for *reasons*. I knew Mary had a secret child almost after viewing HLV but didn’t see it in the deductions until later on that year. I decided to write my theory in a fanfic instead. You can read it here: Mixed Messages.
To conclude, I think the fact that Mary has a secret child is the hidden variable that explains several S3 plot holes (including why Mary shot Sherlock; why John apparently forgave her; why Sherlock was willing to go to his death in Eastern Europe and leave John with Mary, why there was no romantic chemistry between John and Mary, why Sherlock seems to like Mary; why Mary didn’t defend herself; and finally why Mary isn’t jealous.)
Go to Part 2 to read the real reason why Mary shot Sherlock….