Keep a step's assignment rows and their notify settings when a canvas modeler saves it
Fixes #3630243.
A canvas modeler (BPMN.io) edits a step's users and roles as one flat field each. On save, Assignments::getValueFromFlatValues() rebuilt a single row per audience with the settings of the first row it replaced, so a step offered to Alice (notified) and to Bob (not notified) came back as one row notifying both, after a save that changed nothing.
Assignments::getValueFromFlatValues()now reconciles the field with the rows: each row keeps its place and its settings and loses only the names the field no longer lists; a row left empty is dropped; an added name joins the first standing row of its audience, or a new row with the settings of the first row the field emptied.docs/concepts.mdsays so.
Tests (AssignmentProjectionTest): testCanvasSaveKeepsEachRowOfAnAudience fails on 1.x (the two rows fold into one); testCanvasSaveMovesOnlyTheNamesThatChanged and testCanvasSaveReplacingEveryNameKeepsTheFirstRowSettings each fail on a mutation of the branch they cover.
AI-Generated: Yes (Claude Code was used to help write the fix, its tests and this description. I reviewed them, and the new test was confirmed to fail without the fix and to pass with it.)