I had events and actions turned on. I would've expected useful logs from the actions part (and have seen that in the past) if it had actually run. I'm not sure how you're making the assertion it definitely ran?
I've just turned on all logging but don't think that'll help shed light on it since action logging was empty.
Given toggling the switch manually (still via HomeKit but not off via timed off) I'm wondering if there's something odd about the timer event though the code seems pretty straightforward using #runIn. The only difference (I suspect) between this and using the native one is this one allows much longer delayed off times... it does seem to turn off so I'm not sure what would be odd about events during a longer delayed off vs. a more immediate one.
However, I'm also now thinking I don't even need auto-off since all the work you've done in RM3 should allow me to turn it off via the true action... I'm a bit curious so I may tinker a bit but think in the end I'll try setting things up directly in the rule to remove the switch side of the variable and see if it fixes it or not.