Thanks guys for looking into this.
I never got to the root cause of this, but the failure was with Augeas trying to set some value in an xml file.
I tried all levels of debug and verbosity and manually trying to see why Augeas would fail, even manually running Augeas on the file would pass.
I wanted puppet to stop immediately on error so that I could manually go through Augeas and sniff around, but since puppet does a million-and-one things after the error, and it's unreproducible after puppet runs.
To make a long story short, it looks like there is no way to halt puppet on error, and I could not figure out what was causing Augeas to fail, so i just worked around Augeas by not even using it.
Thanks,
Alex