async fn fetch_derived_spec(
existing_exercise_task: Option<&ExerciseTaskIdAndSpec>,
task_update: &NormalizedCmsExerciseTask,
urls_by_exercise_type: &HashMap<&String, Url>,
spec_fetcher: impl SpecFetcher,
previous_spec: Option<Value>,
cms_block_id: Uuid,
) -> Result<Option<Value>, ModelError>