Heat the oil in a nonstick pan, add the mustard seeds, cardamom pods, cloves, and cinnamon stick and stir-fry for 20 seconds (be careful, the mustard seeds might pop). Add half of the chopped onion and stir-fry for 4 to 5 minutes, or until the onions are soft.
Meanwhile, place the remaining onion, the ginger, garlic, ground coriander, and 2 ounces (1/4 cup) of coconut milk into a blender or food processor, and blend to a smooth puree.
Add the coconut milk mixture to the pan along with the whole green chiles, and salt, to taste. Cover the pan with a lid, and cook over a low heat for 12 to 15 minutes, giving the pot an occasional stir.
Add the remaining coconut milk, the water, the curry leaves, black pepper, garam masala, and the fish, and leave to cook undisturbed for about 3 to 5 minutes, or until the fish is opaque and cooked through.
To serve this dish, stir in the lemon juice and fresh cilantro. Taste and adjust the seasonings, if necessary, and then pour into bowls and serve with rice.
NotesThe whole spices and green chiles add background flavor but are not overly hot (the seeds and membranes of chiles contain the heat and they are not exposed to the curry), so this is mild enough for the children to eat and enjoy.