[pt::Builder] add error handling

first pass at some of the TODO items
`expect_subnodes` will add an error to session, so no additional output is required, you can remove the TODO.