Arrange nodes between ranks correctly

Another way to produce ~ same result as @jjlong, using group and constraint=false

/******************************************************************************
  forum - https://forum.graphviz.org/t/arrange-nodes-between-ranks-correctly/2503
  - now
    - rankdir=LR
    - removed rank=same - not needed
    - changed grouping A1, A2, A3 ...
    - added constraint=false keeps the groups linear
******************************************************************************/
digraph {

  rankdir=LR;  // changed

    A1  [group=1]
    A2  [group=1]
    A3  [group=1]
 
    B1  [group=2]
    B2  [group=2]
    B3  [group=2]

    C1  [group=3]
    C2  [group=3]
    C3  [group=3]

    A1 -> B1
    B1 -> C1
    
    //A1 -> B2
    A1 -> A2
    A1 -> A3   [constraint=false]  // constraint=false keeps the group linear
    A2 -> A3 
    
    B1 -> B2
    B2 -> B3
    B1 -> B3  [constraint=false]  // constraint=false keeps the group linear
    B2 -> A2   
    //B3 -> C2
    
    C1 -> C2
    C2 -> C3

  //B1 -> C2
  C3 -> B2
}

Giving: