Layout Column Constraint

How can I constrain the number of columns created by the layout, I can’t see anything obvious jumping out at me… what I want is something like this…
A B C D E
F G H I J
K L M …
Where I can set whether I allow 4 or 5 or 6 etc… columns…

No, there’s no support for that in the layered-digraph autolayout.
I haven’t tried this, but I think you can get the effect of limiting the number of nodes in any layer by overriding AssignLayers. The idea is to split up a layer that has too many nodes by assigning the excess to a new layer.
After calling the base method, you have to figure out how many extra layers each standard layer would need. Then you would need to reassign all the node’s (GoLayoutLayeredDigraphNodeData) .Layer to make room for the new layers. And then you would need to reassign the layers of the excess nodes in each layer.
One disadvantage to this technique is that the algorithm will not try to switch the layer of a node in order to reduce crossings. So depending on how you decide which excess nodes should be moved to a new layer, you may be preventing node crossing optimizations that would otherwise be possible.

Hmmm I wrote layout function at my previous company which worked well, it just makes no sense writing one now…