{"record":{"id":"44b8c38e0b006da0","repo":"HKUDS/nanobot","slug":"channelplugin-management-feature-instances-for-p","errorCode":null,"errorMessage":"ChannelPlugin.management.feature_instances for '{plugin.name}' must return a list of dicts or None","messagePattern":"ChannelPlugin\\.management\\.feature_instances for '(.+?)' must return a list of dicts or None","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/contracts.py","lineNumber":477,"sourceCode":"def channel_feature_instances(\n    plugin: ChannelPlugin,\n    section: Any,\n    *,\n    setup_spec: ChannelSetupSpec | None = None,\n) -> list[dict[str, Any]] | None:\n    factory = plugin.management.feature_instances\n    overrides = (\n        cast(object, factory(section, setup_spec=setup_spec))\n        if factory is not None\n        else None\n    )\n    if overrides is None and not plugin.management.multi_instance:\n        return None\n    if overrides is not None and (\n        not isinstance(overrides, list)\n        or any(not isinstance(instance, dict) for instance in cast(list[object], overrides))\n    ):\n        raise TypeError(\n            f\"ChannelPlugin.management.feature_instances for '{plugin.name}' \"\n            \"must return a list of dicts or None\"\n        )\n\n    enabled_ids = {\n        spec.instance_id for spec in channel_instance_specs(plugin, section, enabled_only=True)\n    }\n\n    instances = [\n        _channel_feature_instance(\n            plugin.name,\n            spec,\n            setup_spec,\n            enabled=spec.instance_id in enabled_ids,\n        )\n        for spec in channel_instance_specs(plugin, section, enabled_only=False)\n    ]\n    if overrides is None:","sourceCodeStart":459,"sourceCodeEnd":495,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/contracts.py#L459-L495","documentation":"Error \"ChannelPlugin.management.feature_instances for '{plugin.name}' must return a list of dicts or None\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/contracts.py:477 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"}