main.reduce_single_frame always crashes on this line:
if not image_utils.image_can_be_processed(fits_utils.get_primary_header(runtime_context.path), runtime_context):
fits_utils.get_primary_header returns an astropy.io.fits.Header object, but image_utils.image_can_be_processed expects an ObservationFrame object for the image argument, because it checks image.obstype, for example.