A short update. As recommended here, I've given the roofers plenty of time to make a good faith attempt to fix the various problems they caused.
It took three months just to get the father to respond -- he finally offered a two thousand dollar settlement. Our costs are going to be in the region of $10,000. We said no.
He did drop one interesting thing. He only gave the job to his son, he said, because of the son's precarious financial situation, expecting a new baby, etc. There was more than a hint there that he knew his son wasn't fully competent.
I suppose that speaks well of him as a father.. but less so as a roofer knowingly assigning work to a lesser professional.
Since they don't have liability insurance for roofing -- though, oddly, they do have it for the painting side of their business -- I'm going to make a claim on their contractor's license bond.
This is a course of action recommended by the CA contractors board and another roofing consultant we've been dealing with.
The crucial test will be whether our roofers violated items 10 and 13 of the Proof of Claim form, i.e., "Breach of Contract" for lack of "reasonable diligence" and failing to follow "accepted trade standards for good and workmanlike construction."
Something I didn't mention before because we only discovered it later -- they tarred and sealed several electrical junction boxes on our roof, making them inaccessible. That would seem to be a violation of the National Electric Code (NEC 314.19) and our local California/Los Angeles building and safety codes.
So I think we have a good case. Our claim goes in this week.
More as things progress...
Thanks again for all your support and suggestions. They've been very helpful to us.