Correct.
Your missing piece is the group functionality.
Associations are so a device sends reports of its activity or commands directly to other devices. Every device always has Group 1 (the Lifeline group), which sends activity reports back to the hub. Beyond that, a device may have no groups or it may have one or several. Each group is for a specific type of report or command.
For example- I have a Z-Wave flood sensor at my place. It has Group 1 for the hub, and it also has Group 2, where it sends a command when water is detected. I also have a Z-Wave water shutoff valve. So I associate the sensor’s Group 2 to the valve, and thus when water is detected the valve will shut off, even if the hub is offline.
Inovelli Red dimmer has 3 groups in this regard.
Group 2 sends a BasicSet command, namely just an ‘on’ or ‘off’ when the top or bottom paddle is pressed.
Group 3 sends a SwitchMultiLevelSet command- when you change the level of the dimmer, it sends the resulting level. This can keep multiple dimmers in sync.
Group 4 sends MultiLevel(Start/Stop)LevelChange commands- when you hold down the paddle, it sends StartLevelChange and when you let go it sends StopLevelChange.
Thus groups 3 and 4- Group 4 gives you live dimming / LED bar response when you dim. Group 3 keeps multiple dimmers in sync.
So for example let’s say you have 2 dimmers associated to each other with Group 3 / Group 4. But let’s say the first dimmer has a dimming time of 3 seconds, and the second has a dimming time of 1 second. If you hold down the first dimmer’s paddle for 1.5 seconds the first dimmer will dim halfway, but the second dimmer will have dimmed all the way (because 1.5 seconds between StartLevelChange and StopLevelChange). However when you let go, the Group 3 association will send the correct level, and they will stay in sync.
Does that all make sense?
The problem is, when you just have the associations, as one dimmer is ramping it’s sending commands to the other dimmer, which is a bit behind. Other dimmer gets the command, then sends its state back to the first, which interprets it as a control command, so they keep going in a loop.
That’s what P12=11 does- control what signals get forwarded to associated devices. Thus, no loop.
Does that explain it better?