Two previous contractors had repainted the ceiling. The water was entering at the junction between the terrace slab and the parapet, where the waterproofing had been turned up only fifty millimetres and then covered with screed.
What we did
Removed the screed, formed a proper upstand of three hundred millimetres, applied a liquid membrane with a reinforcing fabric at the junction, flood tested for forty eight hours, then relaid the screed to a corrected fall and tiled.
Result
Two monsoons later the ceiling is dry. The repair cost roughly the same as the two repaints that did not work.