The short answer
Mushy biryani rice is almost always over-boiled before the dum. Boil only until about 70% done, drain well, and do not stir once layered. Too much liquid in the masala, soaking for hours, and young or broken rice also cause it.
The usual causes
- Over-boiling: the rice keeps cooking on dum. Drain while the centre is still firm.
- Wet masala: too much gravy steams the bottom layer to mush. Cook the masala down first.
- Stirring: fold only from the sides, after dum.
- Long soaking: more than an hour softens basmati too much.
- Weak grain: young or broken rice cannot take two rounds of cooking.
How to check 70%
Press a grain between your fingers. It should break into two or three pieces with a tiny hard core in the middle. That is the moment to drain.