<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def prune_existing_features(project, force=False):
 """Prune existing features"""

    if not force and not project.on_master_after_merge():
        raise SkippedValidationTest('Not on master')

    out = project.build()
    X_df, y, features = out['X_df'], out['y'], out['features']
    proposed_feature = get_proposed_feature(project)
    accepted_features = get_accepted_features(features, proposed_feature)
    evaluator = GFSSFPruningEvaluator(
        X_df, y, accepted_features, proposed_feature)
    redundant_features = evaluator.prune()

    # propose removal
    for feature in redundant_features:
        logger.debug(PRUNER_MESSAGE + feature.source)

    return redundant_features