What’s going on is that “instead of” rules preempt the regular action processing rules - they tell Inform that you want it to run that code instead of the regular code for how the action should be handled. Instead rules get checked after before rules do (see the chart in this bit of the docs), so that one works, but none of your after rules are actually firing.
This is why it’s generally a good idea not to use instead rules unless you’re really sure there’s a special-case reason to use one - most of the time you’ll want to use carry out rules instead.
This is an incredibly common mistake to make when learning inform, by the way - I way overused instead rules in my first game, since it was hard to wrap my head around the very complex way regular actions are processed, and instead rules seem like a handy shortcut. But they can really bite you in the butt, per this example and others in this thread: The perils of INSTEAD
BTW I’m not sure whether you’ve come across the RULES testing command yet? If you type that while playing (in the ide or in a game file that’s not compiled for release) you’ll get a printout of the name of every rule that’s running right before it fires. So that’s really helpful as a diagnostic tool, since in this case for example it would have shown you the after rules aren’t ever firing.
(I should say, your every turn hack will work, but it’s also not a best practice; every turn rules are more computationally expensive which usually isn’t a big deal but could matter in a mechanically complex game; more importantly, offloading ordinary parts of action processing to them risks confusing you later, and also runs the risk of weird timing bugs being introduced because it’s not guaranteed that this every turn rule would always fire right after the potion drinking is resolved).
Hope this helps!