{"record":{"id":"ab060a30fcdc42e7","repo":"dagger/dagger","slug":"resolve-interface-implementation-raw-id-nil","errorCode":null,"errorMessage":"resolve interface implementation raw id: nil","messagePattern":"resolve interface implementation raw id: nil","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/interface.go","lineNumber":199,"sourceCode":"\n\tloadedImpl := &loadedIfaceImpl{\n\t\tval:     objVal,\n\t\tvalType: modType,\n\t}\n\treturn loadedImpl, nil\n}\n\nfunc (iface *InterfaceType) CollectContent(ctx context.Context, value dagql.AnyResult, content *CollectedContent) error {\n\tif value == nil {\n\t\treturn content.CollectJSONable(nil)\n\t}\n\n\tid, err := value.ID()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"resolve interface implementation raw id: %w\", err)\n\t}\n\tif id == nil {\n\t\treturn fmt.Errorf(\"resolve interface implementation raw id: nil\")\n\t}\n\n\tloadedImpl, err := iface.loadImpl(ctx, id)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"load interface implementation: %w\", err)\n\t}\n\n\treturn loadedImpl.valType.CollectContent(ctx, loadedImpl.val, content)\n}\n\nfunc (iface *InterfaceType) ConvertToSDKInput(ctx context.Context, value dagql.Typed) (any, error) {\n\tif value == nil {\n\t\treturn nil, nil\n\t}\n\tidable, ok := value.(dagql.IDable)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unexpected interface value type for conversion to sdk input %T\", value)\n\t}","sourceCodeStart":181,"sourceCodeEnd":217,"githubUrl":"https://github.com/dagger/dagger/blob/82ba2681dbe30d3547a1dc50ea495900ab5b6047/core/interface.go#L181-L217","documentation":"CollectContent on InterfaceType: the value's ID() succeeded but returned a nil *call.ID, so there is no reference to load an implementation from. A degenerate value that claims to be IDable but carries no ID.","triggerScenarios":"Thrown at core/interface.go:199 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Collect from a value whose ID is actually populated","Rebuild the result through a real dagql selection so it has a call ID","Treat nil-ID values as unsupported inputs earlier in the pipeline"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"82ba2681dbe30d3547a1dc50ea495900ab5b6047","analyzedAt":"2026-09-05T07:21:37.930Z","contentChangedAt":"2026-09-05T07:21:37.930Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}