Nice article! I've got a question though, why do you guys branch from "Staging" ? Personally, I branch from "Master" or "Production" and the reason is that "Staging" may have "features" that need proper testing and the "development to production cycle" be longer and I don't want that to be included. Does this make sense ? Can you explain me how you prevent that from happening ?
Also, once something is on develop/staging, it is about to be shipped. If there is any bug in there, they are they should be fixed ASAP.
As we grow, we might have to do things differently, we'll see, but this works really well for us right now. :)