{"record":{"id":"2d636e9233908cba","repo":"OpenBMB/ChatDev","slug":"entry-name-is-not-an-edgeconditionregistration","errorCode":null,"errorMessage":"Entry '{name}' is not an EdgeConditionRegistration","messagePattern":"Entry '(.+?)' is not an EdgeConditionRegistration","errorType":"validation","errorClass":"RegistryError","httpStatus":null,"severity":"error","filePath":"runtime/edge/conditions/registry.py","lineNumber":61,"sourceCode":"    if name in edge_condition_registry.names():\n        raise RegistryError(f\"Edge condition type '{name}' already registered\")\n    entry = EdgeConditionRegistration(\n        name=name,\n        config_cls=config_cls,\n        manager_cls=manager_cls,\n        summary=summary,\n    )\n    edge_condition_registry.register(name, target=entry)\n    register_edge_condition_schema(name, config_cls=config_cls, summary=summary)\n\n\ndef get_edge_condition_registration(name: str) -> EdgeConditionRegistration:\n    \"\"\"Retrieve a registered condition type.\"\"\"\n    _ensure_builtins_loaded()\n    entry: RegistryEntry = edge_condition_registry.get(name)\n    registration = entry.load()\n    if not isinstance(registration, EdgeConditionRegistration):\n        raise RegistryError(f\"Entry '{name}' is not an EdgeConditionRegistration\")\n    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:","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/runtime/edge/conditions/registry.py#L43-L79","documentation":"The registry entry stored under the requested condition type name did not load into an EdgeConditionRegistration. This means the registry contains a foreign or corrupted entry — the type name resolves, but to the wrong object type.","triggerScenarios":"Registering into edge_condition_registry directly (bypassing register_edge_condition) with a non-EdgeConditionRegistration target, or a name shadowed by another registry sharing the same backing store; then calling get_edge_condition_registration(name) or build_edge_condition_manager with that name.","commonSituations":"Plugins writing raw entries into the shared registry; version skew where the registration class was moved/redefined so isinstance fails after a partial upgrade; pickling/entrypoint-based registrations that resolve to a different class.","solutions":["Always register via register_edge_condition, never by mutating edge_condition_registry directly","Check what edge_condition_registry.get(name).load() actually returns for that name","If caused by upgrade, reinstall matching versions of the runtime package so EdgeConditionRegistration is a single class"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"from runtime.edge.conditions.registry import iter_edge_condition_registrations\nassert 'mycond' in iter_edge_condition_registrations()","typeGuard":null,"tryCatchPattern":"try:\n    mgr = build_edge_condition_manager(cond, ctx, ec)\nexcept RegistryError as e:\n    logger.error('bad condition registration: %s', e)\n    raise","preventionTips":["Never mutate registries directly","Keep single package version"],"tags":["registry","type-mismatch","plugin"],"backgroundTag":"registry-entry-type-mismatch","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}