Unlike the threshold factories above, this predicate can inspect individual tasks' results (via
+ * {@link DagCompletionStatus#items()} / {@link DagCompletionStatus#results()}), not just aggregate counts — for
+ * example, stopping the moment any task's result matches a business condition.
+ *
+ * @param shouldComplete receives a live {@link DagCompletionStatus} snapshot; return
+ * {@link DagCompletionDecision#continueDag()} to keep scheduling or
+ * {@link DagCompletionDecision#complete(DagCompletionOutcome)} to stop the DAG now
+ */
+ static DagCompletionConfig custom(Function