Genealogy and triplet-selection helpers for the merge proposer.
Summary
Functions
Canonical tuple for recording a merge triplet irrespective of pair ordering.
Return true when a common-ancestor triplet can produce a useful merged predictor.
Filter common ancestors to official-compatible merge triplet candidates.
Find a non-ancestor pair of programs with a valid common ancestor.
Return all ancestors of program, excluding the program itself.
Functions
@spec canonical_triplet(non_neg_integer(), non_neg_integer(), non_neg_integer()) :: tuple()
Canonical tuple for recording a merge triplet irrespective of pair ordering.
@spec does_triplet_have_desirable_predictors?( [map()], non_neg_integer(), non_neg_integer(), non_neg_integer() ) :: boolean()
Return true when a common-ancestor triplet can produce a useful merged predictor.
@spec filter_ancestors( non_neg_integer(), non_neg_integer(), [non_neg_integer()], {[tuple()], [tuple()]}, map(), [map()] ) :: [non_neg_integer()]
Filter common ancestors to official-compatible merge triplet candidates.
@spec find_common_ancestor_pair([non_neg_integer()], map() | list(), map(), keyword()) :: {non_neg_integer(), non_neg_integer(), non_neg_integer()} | nil
Find a non-ancestor pair of programs with a valid common ancestor.
@spec get_ancestors(non_neg_integer(), map() | list()) :: [non_neg_integer()]
Return all ancestors of program, excluding the program itself.