I think this is a typical case of hypercorrection.
The author claims that
(1) To sew well, a strong light is necessary.
is incorrect because you don't know who's sewing. The correction suggested is inserting the agent you. So, let's just do that to see if that's the problem.
(2) For you to sew well, a strong light is necessary.
I'm sure the author would say (2) is now correct. But I'd say For you here is not required and is even bordering on redundant, if you're referring to any person in general by you.
Then, why did the author think you is necessary when it isn't? Because the author doesn't know this:
Most non-finite clauses have no overt subject, but the interpretation of the clause requires that an understood subject be retrieved from the linguistic or non-linguistic context.
-The Cambridge Grammar of the English Language (Page 65).
(Boldface mine.)
Since the understood subject you is not retrievable from the linguistic context in (1), the question is whether it is retrievable from the non-linguistic context, by which I'm sure CGEL means knowledge that resides outside the discourse.
And the answer is yes, unless the non-linguistic context dictates that the understood subject is anything but 'any person in general' (e.g., a particular person), in which case the author should have mentioned such non-linguistic context before labeling (1) and its variant as "incorrect", but they didn't.