But what I think is really happening is that when the pattern (?!.*batch\s*=) is encountered, despite being within a parenthesized group, its effect extends beyond those parentheses, effectively setting the condition that from that point in the regex to the end of the regex there can be no “batch =” pattern present.
Close - but it's "from that point in the string to the end of the string". The fragment (?!.*batch\s*=) means "match at this point in the string only if at this point we do not satisfy /.*batch\s*=/". There's no scoping going on - the whole of the string (from the point we've matched to so far) is fair game. So this fragment can only match locations in the string that don't have a "batch =" anywhere after them, and since the second half of the pattern requires "batch", we have a contradiction and the whole will never match.