This gotta be definitely a bug. I also run into the same situation. I have been doing a bit of debugging and found a Game Genie code that would help those that run into the same situation as me:
NYKLGKAE (aka $B444?08:FF)
Basically, I guess that just to keep homogeneity with the rest of the door people, the door person doesn't really check the total amount of magic containers (position $0783) but rather some other memory position that should be synchronized with that value ($079D). This (supposedly
) synchronised value is then AND with the value of position $F444 in the ROM without headers ($B444 in CPU memory), whose value is 0x08 or 0000 1000 in binary. Only if that operation returns true you would be granted to enter.
For some reason (that if I have time, I will investigate in the future) that synchronization is lost.
In my savegame, the value of $079D is 0xE5 which in binary is 1110 0101, so, obviously, 0000 1000 AND 1110 0101 is false
.
The Game Genie just forces $B444 to return 0xFF or 1111 1111 in binary, so, the comparison is going to be true as long as there is some value other than 0x00 in $079D.
I decided to test this one out properly with Redux.
I started a blank save file, then started grabbing all of the Magic Containers one by one (cave at the start, end of Death Mountain, Maze).
After getting the 3rd one (the one in the Maze), I headed straight to New Kasuto.
The old lady let me into her house, being able to grab the last Magic Container without any issues whatsoever.
The culprit of this might is most likely the use of Game Genie of cheat codes.
There are two RAM addresses that keep track of Magic Containers, one being $0783, which is the current amount of Magic Containers (04-08), and another being $079D, which is the one that keeps track of how many containers you have obtained, and the one the old lady checks for letting you in the house.
As @lopezvit explained there's a certain check that must be met so the lady lets you in, and if that check fails, then she will refuse to do so. Forcing address $079D to have value $08 should fix the issue.
I am not sure what exactly could cause the value there to not match, but use of cheat codes could be a reason.
Otherwise, so far with Redux I cannot replicate the issue precisely.
If anyone does have a specific way of replicating it consistently, and/or knows what the exact culprit might be, I'll surely give it a look.