As for the session values, it was probably fine. I went off my notes after getting it working since it was different from the previous interface. I did see the session was active by diagnostic output when I still did not see the form values returned after validation. I think the problem was simply the error in the ValidatedField call. I can say for sure that
ValidatedField("/apps/contact/sendmessage","Contact_us_group_Email")
Did not work, but
ValidatedField("sendmessage","Contact_us_group_Email")
Did.
I also noted that the target page of the action did not get bound to the originating form automatically which the extension probably should do as well. Not a big deal, just an observation.
If it helps, I think (I don't remember for sure) that the extension generated the target file. I don't think I created it first which may or may not be related.