I'm not entirely sure if this is a bug or not. I read in the Minecraft Wiki "The Field Block requires water at any level. Water one block above, below, or the same height as the crop will work." So when I place dirt exactly above water and prepare it, it doesn't hydrate and reverts back to dirt.
Block will hydrate if within the specified range, but only when a water block is at or above the dirt's level. I tried making a farm with underground aqueducts, and it was a complete waste of time. There was plenty of light and the water was at full level, right underneath the dirt.
Just so you get the picture, here's an example from side view.
I have a bug that on a farm with 3 rows with water in between each row, in the middle row if any seeds are are planted next to each other the dirt spits all the seeds in within a 4 block radius back out of the dirt. I'm running snapshot 12w30b