@vanepp After going over issue parts with grouped pins don’t connect correctly in schematic, doing some research and exploration, I think most of the issue seen here is “works as designed”. Bused connections (pins) are effectively a single wire, and the schematic ratsnest will (and should) only connect one wire from one group to another. That covers the missing GND wires. For the other, visually miss-placed ratsnest wires, the schematic is a logical view, and does not know anything about the physical positioning. It just looks for the shortest way to connect 2 (groups of) pins together. So, with the parts positioned as shown, it is shorter to draw a ratsnest from shield pin “D13” to shield pin “ICSP2 SCK” than from Arduino “SCK” to shield “SCK”. Those are electrically (logically) equivalent wires, because shield pin “SCK” is internally connected (bused) to shield “ICSP2 SCK”. However, that “shortest path” changes based on the position of the parts. Deleting all of the wires on the schematic view, and moving the parts closer together (less than 0.2 in between the ends of the matching pins) moves all of the ratsnest wires to straight Arduino pin to shield pin. Once the short ratsnest wires are replaced by real wires on the schematic, the parts can be moved apart again, and everything (except the multiple GND pins) will be as expected.
correct-connections-by-overlay-shield-on-arduino-Sketch.fzz (49.0 KB)
There is still one bug outstanding, and a bit further documented in the referenced issue. That means the parts needed to be moved so that the automatically placed ratsnest wire goes where you want it, then create the real wire for it, then move the parts again to where they are really wanted. Instead of simply ignoring the ratsnest wire, and connecting where you want on the same bus.
Personally, I would change both parts to have a single GND pin at the bottom of the schematic, and wire each of them to a ground symbol, instead of to each other. Same for VIN, 3V3, 5V. Put a single one of each of those at the top of the schematic block, then connect to matching VCC symbols instead of to each other.
I would also leave out any pins on the shield that are not really used. If they are only used to pass signals through to the next stacked shield, they are not needed on the schematic. They have no logical function.
A (functional) block of pins on the Arduino for ICSP makes sense, but there is really no need for 2 of them (on the schematic). Internally the pins are connected together, so one set (without the common GND) would be enough. Also, is the 5V pin for the ICSP internally connected to the (outer row) Arduino 5V? If so, those should be bused, and are not needed in the ICSP block. Probably the ICSP block (group) of pins should only be SCK, MOSI, MISO. Those are the “functional” pins.