Backups suddenly broke with fileset errors and constraint violations after repair

That looks like the kind of thing that could come out during dlist file processing. This is where the information on the files are kept – dblock files are block data, and dindex is an index for a dblock.

Again, a verbose log might help, but even an information level log might help, or no log, if on CLI.

If there is a problem with some backup versions on the destination, the question is – which ones?

Direct restore from backup files is one way to look around in different versions, but may be harder.

The REPAIR command (IIRC, and at least for recreation) lets you pick versions you want it to get:

--version
By default, Duplicati will list and restore files from the most recent backup, use this option to select another item. You may enter multiple values separated with comma, and ranges using -, e.g. 0,2-4,7.

Since you’ve done some great deep diving so far, I’ll point to some other articles on the internals:

How the backup process works
Database and destination internals

Basically, this might wind up being bad (duplicate entry?) path information in a dlist filelist.json file.

I’m not suggesting going right for a hand-edit, e.g. “if” there’s only one bad version, maybe drop it.