Dirtiness is automaticaly propagated downstream once an attribute changes.
What kind of management for the dirty states did you expect ?
Yes offcourse but thats like implementing only part of the entire reason the dg exists, the cleaning and dirtying must be explicit. A change doesnt mean that the attribute got dirty there must be a way to say that this plug is now clean, and there must be a way to invoke dirtyness, and ask for dirtyness.
Obscurish example that heppens a lot inside maya. Imageine a node with 2 inputs and 1 outputs.
input 1 is a relatively heavy calcualtion its a ctually justa cache of a calculation
input 2 is a control for attribute 1
when input 2 changes input 1 is chekked for dirtyness, its not calculated if its not dirty but if it is its fetched after pushing a calculation, now its important that you can mark input 2 clean at this point since its been calculated input 1 isnt still clean tough so its going to get fetched next (the oprder of cheks in specifies whan i get there). maya node then asks after 2 is marked clean what the vale of input 1
Now by magic imput 2 is connected to another node! (maya allows for input output attributes) this allows for some corrective measures for the internal calculation of maya this other node is connected to input 1.
Think of this as a node inside a node. Indeed this happens to work for 50% of mroe complex maya nodes.
Now second less obscure thing.
whanever ussr change nodes they becme dirty and that causes the graph to update in reverse. But some nodes need the ability to allways project a clean state, this is how tools in maya work. Now they need to be able to set dirty to launch all downstream connections to become ditrtyed thus know that they need to update. But the projecting virtual tool node need to block the upstream. Otherwise for example you could never key things in maya. On the otherhand normal compute is not supposed to under normal situations do dirty marking, in any case its too late for that as pass for dirty propagation has gone for evalueation and no new key evaluees will be in the list.
Now there are many more normal maya operational examples that depend on user setting the dirty bits clean and dirty in order to manually affect what gets done. So when ist done is as critical as doing the calculation. Such as shading nodes evaluation etc etc.
So its not simply enough to handle it by simple setting, that dimishes the value of the dg. See clen states are not only important to know thet teh compute was called but that the datameber is in state to be fetched by any of the downsteram graphs. So having it as separate call makes sense out of the entire graphs function.