When something is marked dirty, it means ITS NOT YET COMPUTED, n other words its marked needing compute at some point in the future if needed. In light of this its your nodes job to issue the recomputtion. In fact maya will NEVER compute something it never needs no matter how much the input changes, maya just evaluates stuff thats in the node tetwork in meaningful way.
Now since you use events your not actually working on the graph like its supposed to, so you must ask for the plug value yourself so it has chance to compute.
Having to resport to somehow putting attribue changed callbacks for each parent in the heirarchy aboe the locator,
well using events in maya is a very sucky way of getting things done at all, since connections are encapsulated events but with much more intelligence USE THEM. Dont think maya -> events not a good strategy. Think, event in other software need node in maya.*
Anyway word of advice reveiew how maya works before you continue it will actually be much more valuable to you than actually trying to guess how it works.
PS. the most elegant way is to make a dummy shape node then you wouldnt have to worry about anything youd just get a a callback automatically. In ganaral aany querry you may awant to do SHOUDL be a shape node, evemn if a empty one.
- a node is a event that MAYA knows how to manage this means MUCH improved performance, as you specify your need for the data up front in way thats much mroe solvable. (if you need the ndoe to be invisible just mark it as auxilliary)