The problem is easy to see in the StateExampleWithDynamicRules. After the addition of the dynamic rule, it is activated 4 times instead of a single time as it is supposed to be.
The problem is in the AlphaNode.updateSink() method, that simply calls (when node memory is off):
// get the objects from the parent
Passing "sink" as a parameter, what causes the propagation to skip the alpha constraints.
I was able to isolate that in an unit test. Fixing now.