Finally ready for review. The high-level logic is in a new Task ABC in obs_base, with a concrete subclass in obs_subaru. daf_butler has a lot of supporting changes, some of which are fairly significant in their own right (e.g. adding runs and collections to templates, and requiring at least one of them). ci_hsc changes are trivial updates spurred by module-shuffling in obs_subaru.
Raw ingest for gen3 is by no means done, but this seems like a good stopping point to go fix up other bits of daf_butler and obs_base before returning to it.