OK, I think this makes sense.  What I conclude is that: (1) each sequence of forward steps (say at different epochs) dynamically builds up a computation graph, and (2) the nodes of such a graph are immutable.  In other words, multiple graphs may be built up throughout program execution, but once a node is entered in such a graph, that node is treated as a mutable object.
This also fits with their comment that in-place objects are handled by “rebasing” pointers within the computation graph (which is different from editing the node itself).