code: def supervise(project, workspace, namespace, workflow,
                sample_sets, recovery_file):
      
      # Get arguments
  
      logging.info("Initializing FireCloud Supervisor...")
      logging.info("Saving recovery checkpoints to " + recovery_file)
  
      # Parse workflow description
      # these three objects must be saved in order to recover the supervisor
  
      args = {
          'project'  : project,
          'workspace': workspace,
          'namespace': namespace,
          'workflow' : workflow,
          'sample_sets': sample_sets
      }
  
      monitor_data, dependencies = init_supervisor_data(workflow, sample_sets)
      recovery_data = {
          'args' : args,
          'monitor_data' : monitor_data,
          'dependencies' : dependencies
      }
  
      # Monitor loop. Keep going until all nodes have been evaluated
      supervise_until_complete(monitor_data, dependencies, args, recovery_file)
docs: Supervise submission of jobs from a Firehose-style workflow of workflows