• So I wanted to post what we found in case this helps anyone in the future. In this particular case, the clustered unique index includes a date field. As we learned in a great article by Fabaino Amorim (https://www.simple-talk.com/sql/learn-sql-server/showplan-operator-of-the-week---split,-sort,-collapse/), SQL Server will sort based on this index while performing the update.

    What we have is:

    old values:

    5, 201301 (row 1)

    6, 201302 (row 2)

    Update to:

    5, 201301 (+ other changes) (row 1new)

    6, 201301 (row 2new)

    Sorting, what happens is

    delete row 1 (5,201301)

    insert row 1new (5,201301)

    insert row 2new (6,201301)

    delete row 2 (6,201302)

    CDC is recording exactly what happened. It is still odd that CDC is recording the internals of an update that can be open to misinterpretation via the get_net_changes MSFT provided function, but it isn't wrong, strictly speaking.