{"record":{"id":"b0d32613c2863dec","repo":"BoundaryML/baml","slug":"error-decoding-value","errorCode":null,"errorMessage":"error decoding value","messagePattern":"error decoding value","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"engine/language_client_go/baml_go/serde/decode.go","lineNumber":330,"sourceCode":"\treturn checkedValue.Elem(), goType\n}\n\nfunc decodeStreamStateType(state cffi.CFFIStreamState) shared.StreamStateType {\n\tswitch state {\n\tcase cffi.CFFIStreamState_PENDING:\n\t\treturn shared.StreamStatePending\n\tcase cffi.CFFIStreamState_STARTED:\n\t\treturn shared.StreamStateIncomplete\n\tcase cffi.CFFIStreamState_DONE:\n\t\treturn shared.StreamStateComplete\n\tdefault:\n\t\tpanic(\"unexpected stream state\")\n\t}\n}\n\nfunc convertFieldTypeToGoType(fieldType *cffi.CFFIFieldTypeHolder, typeMap TypeMap) reflect.Type {\n\tif fieldType == nil {\n\t\tpanic(\"error decoding value\")\n\t}\n\n\ttype_ := fieldType.Type\n\n\tif _, ok := type_.(*cffi.CFFIFieldTypeHolder_StringType); ok {\n\t\treturn reflect.TypeOf(\"\")\n\t}\n\n\tif _, ok := type_.(*cffi.CFFIFieldTypeHolder_BoolType); ok {\n\t\treturn reflect.TypeOf(false)\n\t}\n\n\tif _, ok := type_.(*cffi.CFFIFieldTypeHolder_IntType); ok {\n\t\treturn reflect.TypeOf(int64(0))\n\t}\n\n\tif _, ok := type_.(*cffi.CFFIFieldTypeHolder_FloatType); ok {\n\t\treturn reflect.TypeOf(float64(0))","sourceCodeStart":312,"sourceCodeEnd":348,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/language_client_go/baml_go/serde/decode.go#L312-L348","documentation":"convertFieldTypeToGoType panics when the *cffi.CFFIFieldTypeHolder is nil. Field type metadata is required to map a CFFI field to a Go reflect.Type (used by lists, maps, unions, and recursive type conversion); nil means the runtime supplied incomplete type information.","triggerScenarios":"decodeListValue, decodeMapValue, decodeUnionValue, or a recursive convertFieldTypeToGoType call receives a nil field-type holder from the CFFI payload.","commonSituations":"Runtime/generator version mismatch where field metadata is dropped, corrupted native responses, or BAML schema constructs the installed bindings cannot describe.","solutions":["Regenerate baml_client and rebuild so type metadata matches the runtime","Upgrade baml_go bindings to the version matching your BAML CLI","Check the .baml schema for exotic types and simplify if on an old version","File a bug with the schema and payload that produced nil field metadata"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"if fieldType == nil { return reflect.TypeOf(nil) }","typeGuard":"func hasFieldType(h *cffi.CFFIFieldTypeHolder) bool { return h != nil && h.Type != nil }","tryCatchPattern":"defer func() { if r := recover(); r != nil { log.Printf(\"field type decode failed: %v\", r) } }()","preventionTips":["Nil-check field metadata before decoding lists/maps/unions","Regenerate the client after runtime upgrades","Report schemas that produce nil field metadata to maintainers"],"tags":["go","panic","decoding","types"],"backgroundTag":"null-argument","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}