I2C flakiness: best strategy to identify and fix?

I gave background information, so you know about the limits. But you can relax 8), the length of wires and the 3mA are not hard limits.

There are Youtube videos how to start with KiCad, if you watch a few, you might be able to make your first schematic.
I use it only for drawing schematics, I have not even began with the PCB layout.

Doh! :o I totally forgot that when one Leonardo was communicating on the I2C bus, the other Leonardo could sample the SDA or SCL at the wrong moment and detect a low. Sorry about that :-[ I'm glad you came up with it. I suggest to remove that test completely.

My power supply gets a little hotter when I turn off my computer and current flows into the computer. In my case I don't care. A power supply of 7.5V is better (less voltage drop for the 5V voltage regulator). You can check with your finger if the voltage regulator on the Leonardo board gets too hot when you turn off the computer.

About the pullup resistors. The I2C specification is maximum 3 mA, but most components will still work when it is set to 10 mA. The best value to compensate for long wires is not 1.5 mA, but closer to 3 mA. It is to compensate for the capacitance to GND of the wires and a lower impedance I2C bus is less influenced by electrical noise.

Do you understand the calculation ?
Suppose the Leonardo boards have two internal pullup resistors of 50k, and two modules have 10k pullup resistors each. The total pullup value is those four parallel. It can be written as: 50k // 50k // 10k // 10k.
The value can be calculated in Google, try this: 1/(1/50000 + 1/50000 + 1/10000 + 1/10000) - Google Search

The length of the wires of 50 cm is just a rule of thumb for beginners. It is indeed not SDA + SCL, but for each seperately. It is when a GND wire is next to SDA or SCL or everything is put into a small box. If both the SDA and SCL wires are 99% just hanging around in the air, it is possible to go as far as a few meters. That is three times a few foot (I think) OCC vs Metric.
The length is limited by the capacitance of SDA and SCL to GND and by the crosstalk between SDA and SCL. The crosstalk is the worst, because lowering the clock speed will not help.

There is a handy test: MultiSpeed I2C Scanner - 50,100,200,400 KHz. - Libraries - Arduino Forum.
If 400 kHz is rock solid, then you can use 200 kHz without problems.