I’m in the opposite camp from severedhand on this one: if I’m replaying a game, I don’t want to be forced to jump through the same discovery hoops again. If the brass key is under the doormat, I don’t want to be forced to have the conversation with the neighbor who tells me that he left the key under the doormat before I can find it. For me, any gatekeeping of that type feels punitive and is immersion-breaking.
On the one hand, no, the PC doesn’t know that the key is under the doormat, and there’s a whole lot of dramatic distance between the player at the keyboard and the player character in the game in situations like this: if I just look under the mat for the key based on my own knowledge from the last play-through, then I’m breaking my own immersion to a certain extent. On the other hand, it’s me who’s doing it, and it’s something I’m already willing to do, something that I’ve already made my peace with doing. Having the author drop into the game to play the role of Rules Nanny and shake their finger and say No-no-no! You have to talk to the neighbor first! feels condescending and heavy-handed to me, and it’s more of a turn-off for the game than it would be to just let me move forward, if that’s what I’ve decided I want to do.
Part of the issue here is that forcing the player to jump through hoops is a huge rip in the illusion of realism, which is always already tenuous in parser IF. If the neighbor told me in the last playthrough that he left the spare key under the mat, I want to be able to test whether that was done: it should be under the mat already. (Maybe the PC isn’t likely to look under the mat without being told, but it’s possible, and supporting that option is a small kindness to the player.) Keeping it off-stage until I check a box on the plot checklist and then moving it to the place where it was always supposed to be is like having the magician show you the pocket sewn into the jacket where he hides the doves.
But at a deeper level, it’s a violation of trust between the author and the player: we’ve been working together to tell this story, and we got to a place of cooperative mutual respect on the first playthrough. It’s not all that often that I give a game a second playthrough anyway: there are so many other games I want to play! (I can only think of one game I’ve played this year that I’d ever played all the way through before, and that’s Anchorhead.) If I liked the game enough to pick it up a second time, then chances are I want to spend my time poking at the things I didn’t do before, not checking off the same boxes I checked on the first playthrough; so having the author force me to jump through hoops out of a sense of narrative purity or misplaced loyalty to realism is not going to improve my opinion of the game. Ideally, I want the game to be on my side. Forcing the player to jump through hoops forces the author-player relationship into being adversarial instead of cooperative.
But it all depends on the totality of circumstances, of course. It depends on the PC’s character as developed in the game, and it depends on the exact situation, and it depends on how well it’s finessed, and it depends on how big a pain it is to jump through the relevant hoop. The situation you’ve described sounds like a small thing, and it wouldn’t be likely to get me to abandon a second playthrough.
All in all, I most like Zarf’s pragmatic suggestion of winking at the “cheating” and then allowing it, providing an in-game rationalization for how that came to be. (There are many other ways that that winking could plausibly occur: “You remember reading that in these old houses, there are often slots for keys under doormats. You check and there is the key!” – only better, of course.) It both satisfies the player’s desire to move forward and the author’s desire for conceptual plot unity.
Welp, that’s way more than I meant to write. Sorry about that.