{"record":{"id":"196de229cbe85bf8","repo":"weaviate/weaviate","slug":"unknown-type-t-in-explore-classname-resolver","errorCode":null,"errorMessage":"unknown type %T in Explore..className resolver","messagePattern":"unknown type %T in Explore\\.\\.className resolver","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"adapters/handlers/graphql/local/explore/concepts.go","lineNumber":70,"sourceCode":"\tif modulesProvider != nil {\n\t\tfor name, argument := range modulesProvider.ExploreArguments(schema) {\n\t\t\tfield.Args[name] = argument\n\t\t}\n\t}\n\n\treturn field\n}\n\nfunc exploreObject() *graphql.Object {\n\tgetLocalExploreFields := graphql.Fields{\n\t\t\"className\": &graphql.Field{\n\t\t\tName:        \"ExploreClassName\",\n\t\t\tDescription: descriptions.ClassName,\n\t\t\tType:        graphql.String,\n\t\t\tResolve: func(p graphql.ResolveParams) (interface{}, error) {\n\t\t\t\tvsr, ok := p.Source.(search.Result)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unknown type %T in Explore..className resolver\", p.Source)\n\t\t\t\t}\n\n\t\t\t\treturn vsr.ClassName, nil\n\t\t\t},\n\t\t},\n\n\t\t\"beacon\": &graphql.Field{\n\t\t\tName:        \"ExploreBeacon\",\n\t\t\tDescription: descriptions.Beacon,\n\t\t\tType:        graphql.String,\n\t\t\tResolve: func(p graphql.ResolveParams) (interface{}, error) {\n\t\t\t\tvsr, ok := p.Source.(search.Result)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unknown type %T in Explore..className resolver\", p.Source)\n\t\t\t\t}\n\n\t\t\t\treturn vsr.Beacon, nil\n\t\t\t},","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/adapters/handlers/graphql/local/explore/concepts.go#L52-L88","documentation":"The Explore GraphQL object's className field resolver type-asserts its source to search.Result. If the GraphQL executor hands it any other type (a wiring bug in how the resolver is registered or an unexpected source object), it returns this error instead of panicking. End users cannot normally trigger it — it indicates an internal invariant violation in the Explore resolver setup.","triggerScenarios":"Querying the Explore { className } field when the resolver's p.Source is not a search.Result — e.g. after internal refactors, custom module patches, or a bug where Explore results are wrapped or converted into a different type before resolution.","commonSituations":"Running patched/custom Weaviate builds or modules that alter the Explore result pipeline; version upgrades where internal search.Result shapes changed; plugin code that replaces the Explore root resolver.","solutions":["Upgrade Weaviate to the latest patch release — this indicates an internal resolver/source mismatch bug","Check any installed custom modules or patches that touch the Explore/nearestObjects pipeline and remove or update them","Report the exact query and version to Weaviate maintainers with the full error including the %T type name"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  const res = await client.graphql.explore().withNearText(nearText).do();\n} catch (e) {\n  if (e.message.includes('unknown type') && e.message.includes('className resolver')) {\n    // internal invariant violation: report version + query to maintainers\n  }\n  throw e;\n}","preventionTips":["Run unpatched, supported Weaviate releases","Keep custom modules compatible with the installed core version","Pin and test module/core version combinations before upgrading production"],"tags":["graphql","explore","resolver","internal-bug"],"backgroundTag":"resolver-type-assertion-failed","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}