To be fair, that's a pebkac problem. You got exactly what you requested (and the language was unambiguous).
This is like writing `if (cond_x && cond_y) {}` and then blaming the compiler because it didn't realise that actually meant to write `if (cond_x || cond_y) {}`.
The language is not unambiguous; it's exactly ambiguous (you and your first reply demonstrate how hard it can be to see the other reading):
0. "find issues that are both critical and related to X"
...could be read as "issues that are X and are Y":
1. [valid, intended] find [all] issues that are[, at the same time,] 1) critical; and 2) related to X
...or as "issues, both of which issues are X and are Y":
2. [valid, your reading] find [an to-be-specified number of] issues that are, both [so I want two issues], possessing X and Y attributes.
That's not what they said, they said it limited its output to 2 issues because it saw the "both" in the sentence, which is clearly an incorrect reading of their instructions.