If you’d like to carry information on the nodes, you can just add attributes to the node themselves freely: that’s quite cheap to do.
If you rather model this on the types themselves, then you’d just re-create a new type every time you want to modify the “split_strategy” and set it on the actual “edge” in the graph (a Value in MLIR terminology).
The actual mechanism depends on how is this “split_strategy” represented? Is this an enum or a more complex datastrutture?