def METHOD_NAME(
    runbook_builder: RunbookBuilder,
    phase: str = constants.TRANSFORMER_PHASE_INIT,
) -> Dict[str, VariableEntry]:
    # resolve variables
    transformers_dict = _load_transformers(runbook_builder=runbook_builder)
    transformers_runbook = [x for x in transformers_dict.values()]
    # resort the runbooks, and it's used in real run
    transformers_runbook = _sort(transformers_runbook)
    copied_variables: Dict[str, VariableEntry] = dict()
    for value in runbook_builder.variables.values():
        copied_variables[value.name] = value.copy()
    factory = subclasses.Factory[Transformer](Transformer)
    for runbook in transformers_runbook:
        # load the original runbook to solve variables again.
        raw_transformers = _load_transformers(
            runbook_builder=runbook_builder, variables=copied_variables
        )
        runbook = raw_transformers[runbook.name]
        # if phase is empty, pick up all of them.
        if not runbook.enabled or (phase and runbook.phase != phase):
            continue
        derived_builder = runbook_builder.derive(copied_variables)
        transformer = factory.create_by_runbook(
            runbook=runbook, runbook_builder=derived_builder
        )
        transformer.initialize()
        values = transformer.run()
        merge_variables(copied_variables, values)
    return copied_variables