{"record":{"id":"636e2652f38493ee","repo":"dagger/dagger","slug":"result-call-frame-q-implicit-inputs-w","errorCode":null,"errorMessage":"result call frame %q implicit inputs: %w","messagePattern":"result call frame %q implicit inputs: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"dagql/result_call_frame.go","lineNumber":963,"sourceCode":"\t\t}\n\t\th = nextH\n\t\tinputRefs = nextInputRefs\n\t\th = h.WithDelim()\n\t}\n\th = h.WithDelim()\n\n\tif includeImplicitInputs {\n\t\tfor _, input := range frame.ImplicitInputs {\n\t\t\tinput = redactedCallArgForDigest(input)\n\t\t\tif input == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tnextH, nextInputRefs, err := appendResultCallArgSelfRefs(c, input, h, inputRefs)\n\t\t\tif err != nil {\n\t\t\t\tif h != nil {\n\t\t\t\t\th.Close()\n\t\t\t\t}\n\t\t\t\treturn \"\", nil, fmt.Errorf(\"result call frame %q implicit inputs: %w\", field, err)\n\t\t\t}\n\t\t\th = nextH\n\t\t\tinputRefs = nextInputRefs\n\t\t\th = h.WithDelim()\n\t\t}\n\t}\n\n\tif frame.Module != nil {\n\t\tif frame.Module.ResultRef == nil {\n\t\t\tif h != nil {\n\t\t\t\th.Close()\n\t\t\t}\n\t\t\treturn \"\", nil, fmt.Errorf(\"result call frame %q module: missing result ref\", field)\n\t\t}\n\t\tinputRefs = append(inputRefs, ResultCallStructuralInputRef{\n\t\t\tResult: frame.Module.ResultRef,\n\t\t})\n\t}","sourceCodeStart":945,"sourceCodeEnd":981,"githubUrl":"https://github.com/dagger/dagger/blob/82ba2681dbe30d3547a1dc50ea495900ab5b6047/dagql/result_call_frame.go#L945-L981","documentation":"Thrown by structuralSelfDigestAndInputRefs in dagql/result_call_frame.go:963 (only when includeImplicitInputs is true). While hashing frame.ImplicitInputs via appendResultCallArgSelfRefs, an implicit input failed to resolve/validate; the error is wrapped as 'result call frame %q implicit inputs: %w' and aborts the self digest and its structural input refs.","triggerScenarios":"SelfDigestAndInputRefs on a frame whose ImplicitInputs reference results that fail ref validation or are absent from the engine cache.","commonSituations":"Implicit inputs (env vars, platform, secrets) whose backing frames were never materialized in this session; stale or partially restored serialized sessions; hand-built frames with dangling implicit input refs.","solutions":["Follow the wrapped error to the failing implicit input and fix or remove it from the frame.","Ensure all implicit-input results are present in the session cache before computing the self digest.","Validate implicit input refs (ref.Validate()) beforehand.","Rebuild the frame via a live engine call instead of deserializing stale frames."],"exampleFix":"// before\ndig, refs, err := frame.SelfDigestAndInputRefs(ctx) // \"container.withEnvVariable\" implicit inputs: ...\n\n// after\nfor _, in := range frame.ImplicitInputs {\n    if in.Value.Ref != nil && in.Value.Ref.Validate() != nil {\n        return fmt.Errorf(\"implicit input %q unresolvable; re-run the call\", in.Name)\n    }\n}\ndig, refs, err := frame.SelfDigestAndInputRefs(ctx)","handlingStrategy":"validation","validationCode":"for _, in := range frame.ImplicitInputs {\n    if in.Value != nil && in.Value.Ref != nil {\n        if err := in.Value.Ref.Validate(); err != nil {\n            return fmt.Errorf(\"implicit input %q unresolvable: %w\", in.Name, err)\n        }\n    }\n}","typeGuard":"func implicitInputsSelfRefSafe(frame *dagql.ResultCall) bool {\n    for _, in := range frame.ImplicitInputs {\n        if in.Value != nil && in.Value.Ref != nil && in.Value.Ref.Validate() != nil {\n            return false\n        }\n    }\n    return true\n}","tryCatchPattern":"dig, refs, err := frame.SelfDigestAndInputRefs(ctx)\nif err != nil && strings.Contains(err.Error(), \"implicit inputs:\") {\n    // re-run the original call to regenerate implicit inputs, then retry\n}","preventionTips":["Materialize implicit inputs (env, platform, secrets) in-session before digesting.","Validate implicit input refs before calling SelfDigestAndInputRefs.","Avoid digesting partially restored frames.","Prefer freshly produced frames for cache-pairing digests."],"tags":["dagql","digest","implicit-inputs","cache"],"backgroundTag":"result-call-digest-failed","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"}