Decides a gating edge, given a way to evaluate its condition.
evaluate is a thunk rather than a value because the terminality guard has to prevent the
evaluation from happening at all, not merely discard its answer. Evaluating succeeded against a
still-Pending origin does not fail — it returns a confident, wrong false, which is exactly how
the original bug produced blocked graphs with no error anywhere. Passing the thunk lets a caller
(and a test) observe that an undecided origin is never asked.
Decides a gating edge, given a way to evaluate its condition.
evaluateis a thunk rather than a value because the terminality guard has to prevent the evaluation from happening at all, not merely discard its answer. Evaluatingsucceededagainst a still-Pendingorigin does not fail — it returns a confident, wrongfalse, which is exactly how the original bug produced blocked graphs with no error anywhere. Passing the thunk lets a caller (and a test) observe that an undecided origin is never asked.