ConstHow many nodes a cluster holds directly — 0 for a leaf.
Nothing else in the UI says how big a cluster is: not the label, not the tooltip, not the sidebar. Without this the only way to find out is to expand it, which is the exact "read the value instead of hunting for it" the dock exists for.
Direct children, not the whole subtree, so it matches the structure a nested cluster's own row then reports one level down.
The clusters a nested node sits inside, outermost first — empty for a node of the
root graph. The flat nested mode's answer to "where is this row from", since flat
rows carry no structure of their own.
Total edges touching the node.
Edges pointing at the node.
Edges leaving the node.
The element's display name, as the rest of the UI resolves it.
Whether the node is pinned in place.
An edge's origin, by display name.
An edge's destination, by display name.
Whether the element is on the canvas, and if not, why — for a node, filtered by
the filter panel or excluded by hand; for an edge, filtered when its layer is
off or endpoint when an end of it has left. The dock lists hidden elements rather
than hiding them, so this is how you tell them apart.
Narrow and fixed-width: it leads the derived column set as a status gutter, so it should not eat the room the name needs.
The library's graph-aware columns — the ones no generic grid could compute, because they are about an element's place in the graph rather than its data.
Compose them into
UI.table.columns, cloning to adjust:labeland the edgesource/targetcolumns are resolved against the graph when the dock builds them, so they read the same names the rest of the UI shows. Give a column your ownaccessorto take that over.