little follow-up:
so i have now successfully added a feature to activeAttrNode.py, that allows the user to connect the output of any maya attr to the input of a dynamic attr on the activeAttrNode. then, in a string attr on the activeAttrNode (attr2command) that relates the dynamic attr to a function, one can now define either "attribute message filter", "attribute dirty condition" or both. whats more, the user can further define persistent dirty or normal dirty behavior for the triggering of the callback..
now a user can test any arbitrary group of normal maya node attrs for attribute change by attatching them to this node. this is a big improvement on the scriptJob attrChange functionality using the -allchildren flag (testing a compound parent to detect activity on all its children) because first of all, that does not work as described in the docs, and second, compound dynamic attrs are flakey at best to create in maya now adays, but most importantly, this does not require the generation, management and destruction of many scriptjobs to test for attrchange. whats more, the user can dectect and utilize, via callback, many other attribute signals that are not available with the scriptjopb command, such as 'eval', incoming outgoing connect/disconnect 'set', 'renamed', etc etc.. see enum values "MNodeMessage::AttributeMessage".
in testing the persistent dirty functionality, there are no ill effects as yet. further, i have timed the difference between the creation of 60 individual attr change scriptjobs, vs 60 individual connections to the activeattrnode using the persistent dirty functionality to trigger a simple callback function. there are two important differences in efficiency:
the scriptjob is always there, always activly listening for specific attribute change, and has a fairly large memory footprint. the node only triggers passively when any incoming connection is changed and has a smaller memory footprint; (as far as ram used by maya as far as i can currently tell)....(and is easier to create abnd destroy than the same number of scriptJobs.)
the triggering of the callback its self happens about 15% faster on my computer (according to timerX) than the same function called via numerous scriptjobs.
Because this node has no downstream connections, it is the only node ever pulling on its own attributes. when you change the attr on its incoming connection, the callback is tripped once, or consistently during manip, fcurve edit, or timeline scrub, based on user preference, and then immediately stops when that attr stops changing. there is no leakage, no build up, no crashes. if i were to (and i have) pull on the monitor attr or the attr being monitored in the callback function itself, still no spinning out of control, no crashes, no leaks.. you just get twice the number of callbacks.. but as soon as the input attr stops changing, the cycle stops as well. did i mention no spinning out of control?
i believe that this is a great example of a usefull plugin that bends the rules of push-pull, (as maya itself does internally) and is a credit to the fact that maya allows the user to do this.. and thus ultimately is in maya's extended plan for the user.
in conclusion: if maya crashes while you are experimenting.. don't have a cow. understand the rules, and then break them. don't be afraid of pushing the boundries, maya wants you to.. it gave you an api that lets you think outside the box. with this power comes responsability, but remember.. its just a cartoon.. or a game.. or whatever, your not driving a schoolbus full of kids. don't be afraid to crash maya.
-thanks for the help!