{"record":{"id":"4eeaad3a009b3c67","repo":"OpenBMB/ChatDev","slug":"edge-condition-type-condition-type-does-not-pr","errorCode":null,"errorMessage":"Edge condition type '{condition.type}' does not provide a manager implementation","messagePattern":"Edge condition type '(.+?)' does not provide a manager implementation","errorType":"validation","errorClass":"RegistryError","httpStatus":null,"severity":"error","filePath":"runtime/edge/conditions/registry.py","lineNumber":80,"sourceCode":"    return registration\n\n\ndef iter_edge_condition_registrations() -> Dict[str, EdgeConditionRegistration]:\n    \"\"\"Iterate over registered condition types.\"\"\"\n    _ensure_builtins_loaded()\n    return {name: entry.load() for name, entry in edge_condition_registry.items()}\n\n\ndef build_edge_condition_manager(\n    condition: \"EdgeConditionConfig\",\n    context: ConditionFactoryContext,\n    execution_context: ExecutionContext\n) -> \"EdgeConditionManager[Any]\":\n    \"\"\"Instantiate the manager responsible for a specific edge.\"\"\"\n    registration = get_edge_condition_registration(condition.type)\n    manager_cls = registration.manager_cls\n    if not manager_cls:\n        raise RegistryError(\n            f\"Edge condition type '{condition.type}' does not provide a manager implementation\"\n        )\n    return manager_cls(condition.config, context, execution_context)\n\n\n__all__ = [\n    \"EdgeConditionRegistration\",\n    \"register_edge_condition\",\n    \"get_edge_condition_registration\",\n    \"iter_edge_condition_registrations\",\n    \"build_edge_condition_manager\",\n]\n","sourceCodeStart":62,"sourceCodeEnd":93,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/runtime/edge/conditions/registry.py#L62-L93","documentation":"The requested edge condition type is registered, but its registration has no manager_cls, so build_edge_condition_manager cannot instantiate an EdgeConditionManager for the edge. Every usable condition type must supply a manager implementation class.","triggerScenarios":"An edge config uses condition.type = X where X's registration was created with manager_cls=None (or omitted), and the graph executes edges via _prepare_edge_conditions or _execute_node which call build_edge_condition_manager.","commonSituations":"Registering a config-only or abstract condition type meant only for schema/documentation; copying a registration call and forgetting the manager_cls argument; custom condition types that were never fully implemented.","solutions":["Register the condition type with a concrete manager_cls implementing EdgeConditionManager","If the condition is intentionally abstract, stop referencing it in edge configs","Switch the edge to a fully implemented builtin condition type"],"exampleFix":"# before\nregister_edge_condition('mycond', config_cls=C, manager_cls=None)\n\n# after\nclass MyCondManager(EdgeConditionManager[MyCondConfig]):\n    ...\nregister_edge_condition('mycond', config_cls=C, manager_cls=MyCondManager)","handlingStrategy":"validation","validationCode":"from runtime.edge.conditions.registry import get_edge_condition_registration\nreg = get_edge_condition_registration(cond.type)\nif reg.manager_cls is None:\n    raise ConfigError(f'{cond.type} has no manager; pick a builtin type')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate graph config before execution","Only reference fully implemented condition types"],"tags":["registry","edge-conditions","missing-implementation"],"backgroundTag":"missing-implementation-class","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}