I think I have figured out a solution (in my head), so when I get time I will code it. We just moved into a new house today so chaos will reign for a few days.
Congratulations on your new home!
Now, I'd hate to derail the comments thread (and suggest things that could potentially delay the update) even further, but it's difficult to keep silent when tactical AI is being discussed. NPRs learning how to scout JPs and properly assault them with squadron jumps would be incredible, yes, but would it work without granting the AI object permanence?
I don't know if it can memorize lost contacts on the strategic level (i.e. if it keeps a list of enemy ships seen in each system recently), but it definitely doesn't remember any lost contacts on the tactical level and is therefore very vulnerable to ambushes of all kinds, and will routinely split its forces to chase contacts whose smaller escorts it recently saw/got attacked by. but then forgot about, or jump into blockaded systems where its ships were already assaulted upon entry, sometimes doing so dozens of times. Not to mention the old peeking problem that was already mentioned here would return if the AI doesn't remember what it sees.
I might be asking for too much here, implementing lost contact awareness does seem like a substantial task, but for combat AI, I'd say this would be the biggest improvement that I could possibly think of.
As for how this would actually look like, I'd suggest the AI should behave like every enemy ship it sees in a system is still there until contact is re-established or a sufficient amount of time (days? weeks? something on the order of double or triple the time it would take for known enemy contacts to approach any NPR colony or fleet, or leave the system, whichever would take longer) elapses. So if it detects 20 hostile ships entering its system, it should consolidate its forces and only create detachments that it deems capable of engaging those 20 ships, and keep its colonies protected while putting in every effort to re-establish contact using its scout ships and possibly scout fighters.
Re-acquiring any contact that was previously seen in a large group of contacts (a fleet) should make it react as if the whole fleet was there until the opposite is proven. If it observes those contacts leave the system via a JP, it should blockade that jump point (as it currently always does), but also consider giving chase right away if it judges its own forces to be superior. There's never a valid reason for a hungry swarm to abandon its pursuit of a slow, tasty survey ship just because it managed to transit a JP while minutes away from getting devoured.
Since I mentioned scout fighters, we've yet to see NPR carriers in your AARs so I don't know if what I'm suggesting here is plausible, but I can say from my own experience that long-range scout fighters are a very powerful detection tool and if the AI could use them to locate enemy forces and maintain contact, it would grant it enough battlefield intelligence to engage the player on far more even terms.