Scrub freaks out on Warlocks with 0/40/21 specs. This is a perfectly viable "in-between affliction and destruction" build with a large damage ceiling or a lot of threat reduction via the Imp.
I will give a unified diff if nobody objects.
Edit:
Here are my suggestions.
Raiding locks probably shouldn't have 5/5 Fel Concentration, and having it means there is some room elsewhere for beneficial talents to the raid.
You shouldn't be called out for being 0/40/21. Master Demonologist gives you 20% threat reduction and the other talents in that tree help your damage output. It also encourages you to use the Imp, which some raids prefer. Indeed, you're best off using Improved Imp and rocking it most of the time unless you really need to squeeze more juice out of your Shadow Bolts with the Succubus out.
This build will typically do three things: Curse, spam Shadowbolts, and toss up an Immolate when appropriate.
Yellow'ed Improved Howl of Terror. I see it as a PVP talent. I could be wrong. It isn't worth a redline but it warrants looking at closer.
Took out the redline about Unholy Power without a Felguard. Of course you will have Unholy Power. You need 5 points in it to get Master Demonologist, which is the whole point of going that deep into Demonology.
Here is my diff:
$ diff Warlock.lua Warlock.lua.old
19c19
< check("Partial Demonology Spec", RED, function (talents) return (talents:spent(2) >= 21) and (talents:spent(2) < 40); end);
---
> check("Partial Demonology Spec", RED, function (talents) return (talents:spent(2) >= 22) and (talents:spent(2) < 41); end);
30d29
< check("Fel Concentration", YELLOW, function (talents) return (talents:spent(1) >= 10) and (talents:rank(1, 8) > 4); end);
36d34
< check("Improved Howl of Terror (PvP)", YELLOW, function (talents) return (talents:spent(1) >= 36) and (talents:rank(1, 19) > 0); end);
38c36
< check("No Unstable Affliction", RED, function (talents) return (talents:spent(1) >= 41) and (talents:rank(1, 21) < 1); end);
---
> check("No Unstable Affliction", YELLOW, function (talents) return (talents:spent(1) >= 41) and (talents:rank(1, 21) < 1); end);
44a43
> check("Unholy Power without Felguard", RED, function (talents) return (talents:rank(2, 12) > 0) and (talents:rank(2, 22) < 1); end);