{"record":{"id":"7a04c3a019655868","repo":"tinyhumansai/openhuman","slug":"unregistered-controller-namespace-function","errorCode":null,"errorMessage":"unregistered controller '{namespace}.{function}'","messagePattern":"unregistered controller '(.+?)\\.(.+?)'","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/cli.rs","lineNumber":596,"sourceCode":"        all::capability_for_parts(namespace, function).flatten(),\n        &format!(\"openhuman {namespace} {function}\"),\n    )?;\n\n    let Some(schema) = schemas.iter().find(|s| s.function == function).cloned() else {\n        return Err(anyhow::anyhow!(\n            \"unknown function '{namespace} {function}'. Run `openhuman {namespace} --help`.\"\n        ));\n    };\n\n    if args.len() > 1 && is_help(&args[1]) {\n        print_function_help(namespace, &schema);\n        return Ok(());\n    }\n\n    // Generic parameter parsing and validation based on schema.\n    let params = parse_function_params(&schema, &args[1..]).map_err(anyhow::Error::msg)?;\n    let method = all::rpc_method_from_parts(namespace, function)\n        .ok_or_else(|| anyhow::anyhow!(\"unregistered controller '{namespace}.{function}'\"))?;\n\n    // Same as the explicit `call` path above — any registered controller may\n    // ultimately drive an orchestrator turn.\n    let rt = tokio::runtime::Builder::new_multi_thread()\n        .enable_all()\n        .thread_stack_size(crate::core::runtime::AGENT_WORKER_STACK_BYTES)\n        .max_blocking_threads(crate::core::runtime::MAX_BLOCKING_THREADS)\n        .build()?;\n    let value = rt\n        .block_on(async { invoke_method(default_state(), &method, Value::Object(params)).await })\n        .map_err(anyhow::Error::msg)?;\n\n    println!(\"{}\", serde_json::to_string_pretty(&value)?);\n    Ok(())\n}\n\n/// Parses command-line arguments into a JSON map based on a function's schema.\n///","sourceCodeStart":578,"sourceCodeEnd":614,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/core/cli.rs#L578-L614","documentation":"Internal consistency guard after capability checking: the schema lookup for the requested namespace.function found no matching ControllerSchema even though capability resolution allowed the call. Indicates a controller registered in the capability map but absent from the grouped schema list — a build/registration inconsistency rather than a user typo.","triggerScenarios":"Thrown at src/core/cli.rs:596 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the exact function name with `openhuman <namespace> --help`","Report it as a bug if the name is listed — the controller registry and schema list have drifted","Try the equivalent RPC call over the HTTP transport as a workaround"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}