My general question would be how to ensure a minimum x distance between the east anchor of one shape and the west anchor of another (assume the shapes are y-aligned if it helps), or similarly a minimum y distance between north/south anchors.
My more particular need is for a flowchart where text boxes (rectangles) can have fairly wide variation in text content, and I wish the spacing between them to be no less than some value, by pushing around the central nodes if needed. The borders of the rectangles themselves have a few width options but the problem is that the (central) node position ignores how wide the rectangle is, which can cause overlapping of rectangles (and mess up the arrows between them too).
TikZ: position a node depending on width of text? might hint to a solution for my particular need by calling pgf to measure the size of the text but (1) I failed to tailor it to my needs, (2) it seems to work only for simple text labels (not general "measure your anchor position" stuff, and not even automatic text flow measurement), and (3) it is from 2011 so maybe TikZ has changed since.
Example: (node distance
options fairly irrelevant to the behavior at hand, but it makes the problem appear for more realistic text lengths)
\documentclass[tikz]{standalone}
\begin{document}
\tikzstyle{block} = [draw, rectangle]
\begin{tikzpicture}[node distance=3cm]
\node [block] (A) {A};
\node [block, right of=A] (B) {B};
\node [block, right of=B] (C) {C};
\draw[->] (A) edge node[above] {AB} (B);
\draw[->] (B) edge node[above] {BC} (C);
\end{tikzpicture}
\begin{tikzpicture}[node distance=3cm]
\node [block] (A) {A};
\node [block, right of=A] (B) {Text in B};
\node [block, right of=B] (C) {C};
\draw[->] (A) edge node[above] {AB} (B);
\draw[->] (B) edge node[above] {BC} (C);
\end{tikzpicture}
\begin{tikzpicture}[node distance=3cm]
\node [block] (A) {A};
\node [block, right of=A] (B) {Very long text in position B};
\node [block, right of=B] (C) {C};
\draw[->] (A) edge node[above] {AB} (B);
\draw[->] (B) edge node[above] {BC} (C);
\end{tikzpicture}
\begin{tikzpicture}[node distance=3cm]
\node [block] (A) {A};
\node [block, right of=A] (B) {Very very long text in position B};
\node [block, right of=B] (C) {C};
\draw[->] (A) edge node[above] {AB} (B);
\draw[->] (B) edge node[above] {BC} (C);
\end{tikzpicture}
\end{document}