{"record":{"id":"500e30be0435070b","repo":"dagger/dagger","slug":"invalid-s-lock-value","errorCode":null,"errorMessage":"invalid %s lock value","messagePattern":"invalid (.+?) lock value","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/lockfile_update.go","lineNumber":110,"sourceCode":"}\n\nfunc containsLockEntry(entries []workspace.LookupEntry, target workspace.LookupEntry) bool {\n\tfor _, entry := range entries {\n\t\tif entry.Namespace == target.Namespace &&\n\t\t\tentry.Operation == target.Operation &&\n\t\t\treflect.DeepEqual(entry.Inputs, target.Inputs) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc selectedSHAEntry(\n\tentry workspace.LookupEntry,\n\tvalue string,\n) (workspace.LookupEntry, error) {\n\tif value == \"\" {\n\t\treturn workspace.LookupEntry{}, fmt.Errorf(\"invalid %s lock value\", entry.Operation)\n\t}\n\trequired, options, err := workspace.ParseLookupInputs(entry.Inputs)\n\tif err != nil {\n\t\treturn workspace.LookupEntry{}, fmt.Errorf(\"invalid %s inputs %v: %w\", entry.Operation, entry.Inputs, err)\n\t}\n\n\tvar operation string\n\tvar selectedInputs []any\n\tswitch entry.Operation {\n\tcase workspace.LockOperationGitLatest:\n\t\tif len(required) != 1 {\n\t\t\treturn workspace.LookupEntry{}, fmt.Errorf(\"invalid %s inputs %v\", entry.Operation, entry.Inputs)\n\t\t}\n\t\toperation = workspace.LockOperationGitSHA\n\t\tselectedInputs = []any{required[0], value}\n\tcase workspace.LockOperationOCILatest:\n\t\tif len(required) != 1 {\n\t\t\treturn workspace.LookupEntry{}, fmt.Errorf(\"invalid %s inputs %v\", entry.Operation, entry.Inputs)","sourceCodeStart":92,"sourceCodeEnd":128,"githubUrl":"https://github.com/dagger/dagger/blob/82ba2681dbe30d3547a1dc50ea495900ab5b6047/core/lockfile_update.go#L92-L128","documentation":"selectedSHAEntry: the lock entry's stored value is the empty string, so there is no resolved SHA/digest to pin into a selected entry. The lockfile entry exists but its value is missing.","triggerScenarios":"Thrown at core/lockfile_update.go:110 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-resolve the latest entry so a concrete value is stored","Regenerate the lockfile — the empty value indicates corruption","Validate lock values at load time to catch this earlier"],"exampleFix":null,"handlingStrategy":"validation","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"}