Interesting thanks.
What bothers me though is that almost all developers do exactly what you see in issue #1: We found it! fix committed done!
Nope, you should understand exactly what went wrong: assuming parents must exist... Now search the entire codebase for the same kind of mistakes. Use your creative brain to figure out where else same thing can happen. It will never be in just done place.
All modern software is unreliable bug ridden nightmare, mostly because of capitalism constraints yes... but it is possible to do better