Thanks for doing this! I had to time box the review because obviously there's a lot to cover, and a number of things can be refined with further iterative development. I hope that the comments I have provided are at least educational and can frame future work.
In general, an easy win is to ensure that all the descriptions are sentences (capitalized and ending with a period).
I also noticed that there are references to DipoleFitAlgorithm, but that class isn't part of the public API documentation. You might want to look into either making that API public in `lsst.ip.diffim` or adding another `automodapi` directive that points to the module where DipoleFitAlgorithm is located (choose whichever is appropriate).
Thanks for being willing to take a look at this, there are a lot of lines of code changed. I tried to go through everything and add docstrings to every function, though I ran out of time at the end and left filling in a few of the details for a future ticket (DM-17458). I tried to leave a TODO with that ticket number instead of just leaving it blank, but please let me know if something else would be better filler.