Dir="none" not respected when headPos is specified

I’m trying to make a simple graph with vertically stacked nodes and and an edge looping back up from the bottom to the top. I’ve set a couple of invisible nodes on either side of the real ones and I can route the arrows through there. I only want the arrowheads on the last link in the path.

Here is my example:

digraph ESP4 {
  
  compound=true;
  rankdir="TB";
  node [shape="rectangle",style="rounded"]
  
  subgraph clust_AS {
    rank="min"
    AS0[label="",fixedsize="true",height=0,width=0,style="invis"]
    AS[label="Activity Selection"]
    AS1[label="",fixedsize="true",height=0,width=0,style="invis"]
    AS0 -> AS -> AS1 [style="invis"]
  }

  subgraph clust_EA {
    rank="max"
    EA0[label="",fixedsize="true",height=0,width=0,style="invis"]
    EA[label="Evidence Accumulation"]
    EA1[label="",fixedsize="true",height=0,width=0,style="invis"]
    EA0 -> EA -> EA1 [style="invis"]
  }

  AS -> EA
  AS0 -> EA0 [style="invis"]
  AS1 -> EA1 [style="invis"]
  EA -> EA1 [style="dashed", tailport="e", dir="none"]
  EA1 -> AS1 [style="dashed", dir="none", splines="false"]
  AS1 -> AS [style="dashed", headport="e"] 
  EA -> EA0 [style="dashed", dir="none"]
  EA0 -> AS0 [style="dashed", dir="none", splines="false"]
  AS0 -> AS [style="dashed"] 
 
}

This yields an arrowhead going from EA to EA1, despite the dir="none" attribute on that edge.

If I remove the tailport attribute, then the arrowhead goes away, but the tail of the edge attaches to the NE corner of the EA node.

I’m running dot - graphviz version 2.43.0 (0)

Thanks in advance for any suggestions.

[note that 2.43.0 is pretty old, but that is causing the problem]

This is a bug, probably related to these two:

The good-ish news is that there is an easy work-around - instead of dir=none use arrowhead=none (arrowhead | Graphviz), like so:

digraph ESP4 {
  
  compound=true;
  rankdir="TB";
  node [shape="rectangle",style="rounded"]
  
  subgraph clust_AS {
    rank="min"
    AS0[label="",fixedsize="true",height=0,width=0,style="invis"]
    AS[label="Activity Selection"]
    AS1[label="",fixedsize="true",height=0,width=0,style="invis"]
    AS0 -> AS -> AS1 [style="invis"]
  }

  subgraph clust_EA {
    rank="max"
    EA0[label="",fixedsize="true",height=0,width=0,style="invis"]
    EA[label="Evidence Accumulation"]
    EA1[label="",fixedsize="true",height=0,width=0,style="invis"]
    EA0 -> EA -> EA1 [style="invis"]
  }

  AS -> EA
  AS0 -> EA0 [style="invis"]
  AS1 -> EA1 [style="invis"]
  EA-> EA1 [style="dashed", tailport="e", arrowhead=none]  // set arrowhead to none
  EA1 -> AS1 [style="dashed", dir="none", splines="false"]
  AS1 -> AS [style="dashed", headport="e"] 
  EA -> EA0 [style="dashed", dir="none"]
  EA0 -> AS0 [style="dashed", dir="none", splines="false"]
  AS0 -> AS [style="dashed"] 
 
}

Giving:
badDir1