Looks good. One should not forget that also diagonal boundaries would be required (for example for the "SCATTER" stage), so in 2 dimensions, each node has 8 neighbors (but I assume you left those out in order not to clutter the graphics).
I wonder, how difficult would it be at this stage to allow not only for "1 past the last one" (in grid boundary for hardwall, periodic, and gate), but "n past the last one" with n being a user-definable number (e.g. n=1, 2, 3, ...), where n of course is less than (or equal to) the smallest grid size of a node. This could be a global number for the whole simulation. Higher-order algorithms for derivative and curl may require access to n neighboring cells in each direction. If it is not a big problem, one could introduce this variable. If you think it would complicate things a lot, let's just hard-code 1 for now.
Also, in the graphics "boundary classes", the grid classes and particle classes seem completely unrelated. While it may be interesting to explore situations where nodes are connected differently for grids or particles, in most physical cases they would be connected in the same way (e.g. if grid 1 bottom border is connected to grid 3 top border, then also particle border 1 bottom will be connected to particle border 3 top). So i wonder if it would make sense to establish the connection only once, and let both, particles and grids, communicate over the same connection? Maybe this is just a detail of implementation.