A biomedical knowledge graph gives you edges. Most of them assert co-occurrence, not cause, and an estimator applied to the wrong edge returns a plausible number with nothing behind it. CausalPhylo applies Pearl's backdoor criterion to the graph first and sorts each candidate into one of three outcomes: identifiable with no adjustment, identifiable given an adjustment set the library hands back, or not identifiable at all — which is a refusal rather than a zero, and is reported as one.
Correctness is checked on the four cases that separate a right implementation from a wrong one: a confounder recovered, a collider left alone, a mediator left alone, and the trivial case identified. DoWhy takes over for estimation once identification is settled. Isolating identification as its own library was the point — it is the stage where a pipeline quietly assumes what it should prove, and the stage whose defects forced the correction below.