Review complete.
My only major concern is that I'd like to replace the mechanism for choosing table versions in pipe_tasks; I don't think we want to have a separate config option that has to be set by the user to match the version expected by the measurement task. Here's a proposal for an alternative: we add a TABLE_VERSION class attribute constant to the measurement tasks (both the new one and the old one), and have ProcessImageTask do table.setVersion(self.measurement.TABLE_VERSION). That'd require opening up a branch for this issue in meas_algorithms, but I think it's worthwhile.
I also have two minor issues:
- I don't think the code to chose the highest numerical flag in SdssShape has any value. Granted, we can't do the right thing on this ticket, but I think this extra logic adds confusion without any additional value. If you choose to leave it, add a comment that it's completely ad-hoc and needs to be replaced.
- The indentation in Inputs.cc is off, in FootprintCentroidInput's ctor.
Finally, looking at the concerns you brought up in your email that still need to be resolved, we should update some tickets:
1. Cannot both set flags and return values in the new framework.
I see you've already filed this as DM-688.
2. It seems obvious to me that we should adopt standards for EDGE, NOPIXELS, NOPSF and NOWCS errors so that all algorithms handle these things in the same way.
Good idea. I could see this being part of DM-461, or I could see it being a new issue; I'll leave which up to you. Could you either add this as a note to DM-461 or open a new issue for it?
3. More consistency in the configuration options between the fluxes.
I think you're probably right in general, but I'd like to know what you mean specifically. But please just open a new issue and describe it there.
The goal of this exercise is to run the newly minted algorithms on real (well, lsstSim) data, and see how the results match up with the existing meas_algorithm framework