To build off what Vinter said,
Stealth is so finicky. I mean there's times in Skyrim when someone notices you through a wall and you're not even moving or making sound, and other times where you're stealing shirt off a dude's back whilst stabbing him and he's just like, "What? Where???"
My advice is to be like Rocket League, give the players all the tools to succeed, but don't hold their hands at all. I'd say that's the biggest problem with stealth in video games, and why as the aforementioned MGS get's it so right most of the time: stealth is often too quantized, based on a skill-level, random value, or just has certain set variables that aren't all that flexible or interesting.
How to get around this? Unfortunately, it means more work for you, the programmer. If you can create an intelligent, but more importantly, interesting and nuanced A.I. that reacts (and/or learns) to the player in at least somewhat predictable ways then you increase a player's number of options. And that's what stealth is all about really, isn't it? Finding a different or overlooked way to avoid a fight? The key, I think, is emergent gameplay.
Just make sure you don't fall in to the trap of set-pieces and gimmicks. Let the players solve the problems. Etc. Etc.