If i understood the design, trait would bubble up by repeated firing of the rules (by allowing rule to be fired on subset).
My concern is about scalability; this logic doesn't capture which paths in the tree can take advantage of the trait (needs trait) and hence trait would traverse up in all the paths towards the root of the tree.