{"record":{"id":"b390bd3aacbbf1b8","repo":"HKUDS/nanobot","slug":"channelplugin-management-instance-specs-for-plug-b390bd","errorCode":null,"errorMessage":"ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate runtime name '{runtime_name}'","messagePattern":"ChannelPlugin\\.management\\.instance_specs for '(.+?)' returned duplicate runtime name '(.+?)'","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/contracts.py","lineNumber":366,"sourceCode":"            f\"ChannelPlugin.management.instance_specs for '{plugin.name}' returned an invalid item\"\n        )\n\n    instance_ids: set[str] = set()\n    runtime_names: set[str] = set()\n    for spec in specs:\n        instance_id = cast(object, spec.instance_id)\n        if not isinstance(instance_id, str) or not instance_id.strip():\n            raise ValueError(\n                f\"ChannelPlugin.management.instance_specs for '{plugin.name}' returned an empty instance id\"\n            )\n        if spec.instance_id in instance_ids:\n            raise ValueError(\n                f\"ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate instance id \"\n                f\"'{spec.instance_id}'\"\n            )\n        runtime_name = channel_runtime_name(plugin, spec.instance_id)\n        if runtime_name in runtime_names:\n            raise ValueError(\n                f\"ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate runtime name \"\n                f\"'{runtime_name}'\"\n            )\n        instance_ids.add(spec.instance_id)\n        runtime_names.add(runtime_name)\n    return specs\n\n\ndef _all_channel_instance_specs(\n    values: list[object],\n) -> TypeGuard[list[ChannelInstanceSpec]]:\n    return all(isinstance(value, ChannelInstanceSpec) for value in values)\n\n\ndef resolve_channel_action_target(\n    requested_instance_id: str | None,\n) -> str:\n    \"\"\"Resolve a feature action to an explicit or default instance.\"\"\"","sourceCodeStart":348,"sourceCodeEnd":384,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/contracts.py#L348-L384","documentation":"Error \"ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate runtime name '{runtime_name}'\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/contracts.py:366 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}