{"record":{"id":"4ff6b6edc3de76c2","repo":"BoundaryML/baml","slug":"error-decoding-value-checked-type-not-found","errorCode":null,"errorMessage":"error decoding value, checked type not found: ","messagePattern":"error decoding value, checked type not found: ","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"engine/language_client_go/baml_go/serde/decode.go","lineNumber":307,"sourceCode":"\nfunc decodeCheckedValue(valueChecked *cffi.CFFIValueChecked, typeMap TypeMap) (reflect.Value, reflect.Type) {\n\tif valueChecked == nil {\n\t\tpanic(\"decodeCheckedValue: valueChecked is nil\")\n\t}\n\n\tvalue := valueChecked.Value\n\tdecodedValue, _ := Decode(value, typeMap)\n\tchecks := make(map[string]shared.Check, len(valueChecked.Checks))\n\tfor _, check := range valueChecked.Checks {\n\t\tchecks[string(check.Name)] = shared.Check{\n\t\t\tName:       string(check.Name),\n\t\t\tExpression: string(check.Expression),\n\t\t\tStatus:     string(check.Status),\n\t\t}\n\t}\n\tgoType, ok := typeMap.GetType(valueChecked.Name)\n\tif !ok {\n\t\tpanic(\"error decoding value, checked type not found: \" + valueChecked.Name.String())\n\t}\n\tcheckedValue := reflect.New(goType)\n\tcheckedValue.Elem().FieldByName(\"Value\").Set(decodedValue)\n\tcheckedValue.Elem().FieldByName(\"Checks\").Set(reflect.ValueOf(checks))\n\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}","sourceCodeStart":289,"sourceCodeEnd":325,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/language_client_go/baml_go/serde/decode.go#L289-L325","documentation":"After decoding a checked value's payload and checks, the decoder looks up the checked type's Go type by name in the supplied TypeMap. If the name is absent, it panics, because it cannot construct the target struct holding Value and Checks fields. This means the TypeMap generated from the BAML schema does not know this checked type.","triggerScenarios":"Decode() on a CFFIValueChecked whose Name is not registered in typeMap — typically when generated client types are stale relative to the BAML schema (a check/assert type was added or renamed).","commonSituations":"Editing a BAML file to add a new check without regenerating baml_client; switching branches where the schema changed; running an older compiled client against a newer .baml schema.","solutions":["Run `baml-cli generate` (or your build step) to regenerate baml_client after schema changes","Ensure the Go binary is rebuilt after regeneration so the new TypeMap is compiled in","Verify check/assert names in the .baml schema match those the client was generated with","Align baml_go bindings and BAML runtime versions"],"exampleFix":"// before (stale generated client after adding a check)\n// after\n// terminal: baml-cli generate && go build ./...","handlingStrategy":"validation","validationCode":"if _, ok := typeMap.GetType(checkedName); !ok { return fmt.Errorf(\"type %v missing; regenerate client\", checkedName) }","typeGuard":null,"tryCatchPattern":"defer func() { if r := recover(); r != nil { return fmt.Errorf(\"checked type not in typemap: %v\", r) } }()","preventionTips":["Run baml-cli generate in CI whenever .baml files change","Rebuild the Go binary after regeneration","Never run a stale compiled client against an edited schema"],"tags":["go","panic","schema","code-generation"],"backgroundTag":"schema-validation-failed","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}