A junior engineer who read the documentation, but didn't quite understand parts of it. And also got parts mixed up with documentation for something else.
And a lazy one, with a lousy memory. I don't konw if it is just my lousy prompts, but I seem to very often get first a skeleton code where core functionality is just a comment "# implement foo here". And every further request is fulfilled by the simplest possible intetpretation. And when I move to the next issue, sooner or later it forgets the accepted solution for another part of the code.