The anorexia, nausea and loss of weight
could have several causes.
It is logical to assume it's a food allergy. You indicate the change from chicken to lamb helped. You could also try switching again to duck, turkey, or fish based dog food. You also indicate the dog tore right into it after switching to lamb, but despite a healthy appetite gained only 3 lbs in 3 months, still 14 lbs from his original weight. Despite the initial success with lamb the lack of real weight gain may suggest something else is going on.
Another possibility is that your dog has an ulcer. For a dog your size, you could try giving 150 mg Rantidine (Zantac) morning and at night -especially at night. If an ulcer is the underlying cause you should start to see a renewed interest in food (i.e. lack of a nauseated feeling) within a week.
A third possibility is an absorption problem due to improper levels of pancreatic/digestive enzymes. This can be checked via specific blood tests.
Also possible is chronic pancreatitis that could also create a chronic nauseated condition.
But before you get too fixated on food, you should definitely have a blood panel run to check the liver and kidney function or enzyme levels.
If the blood appears normal, then a final diagnostic would be a ACTH response test - to check for Addison's Disease. This disease resulting from insufficient production of adrenal hormones has the symptoms of poor appetite, sometimes with nausea and vomiting, and lethargy. If untreated heart problems can occur. Supplemental oral cortisteroids are used to control the disease.
In summary: Try further diet change, along with Rantidine to lower the stomach acid. If puppy doesn't respond to this, then you need to run some more diagnostics to eliminate some other common causes. The continued inability to gain weight even when eating might point to other causes than just diet. Try to get a referral to a specialist.