ng>: Each DAG node (e.g., an invocation to a CG service, a ranker, or a filter) had to be implemented only once. After that, it could be reused across any workflow by referencing it in config.</li>
<li><strong>Config-driven Dynamic Graphs</strong>: Execution graphs were defined as adjacency lists stored in <strong>ZooKeeper</strong>, allowing teams to modify the sequence or structure of operations without touching application code.</li>
<li><strong>Plug-and-play CGs</strong>: The Candidate Generator interfa