{"record":{"id":"3a0e7ec45e54f09c","repo":"hasura/graphql-engine","slug":"expected-version-info-not-found-at-s","errorCode":null,"errorMessage":"expected version info not found at %s","messagePattern":"expected version info not found at (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cli/update/update.go","lineNumber":47,"sourceCode":"\n\tres, err := http.Get(updateCheckURL)\n\tif err != nil {\n\t\treturn nil, nil, errors.E(op, fmt.Errorf(\"update check request: %w\", err))\n\t}\n\n\tdefer res.Body.Close()\n\n\tvar response updateCheckResponse\n\n\terr = json.NewDecoder(res.Body).Decode(&response)\n\tif err != nil {\n\t\treturn nil, nil, errors.E(op, fmt.Errorf(\"decoding update check response: %w\", err))\n\t}\n\n\tif response.Latest == nil && response.PreRelease == nil {\n\t\treturn nil, nil, errors.E(\n\t\t\top,\n\t\t\tfmt.Errorf(\"expected version info not found at %s\", updateCheckURL),\n\t\t)\n\t}\n\n\treturn response.Latest, response.PreRelease, nil\n}\n\nfunc buildAssetURL(v string) string {\n\tos := runtime.GOOS\n\tarch := runtime.GOARCH\n\n\textension := \"\"\n\tif os == \"windows\" {\n\t\textension = \".exe\"\n\t}\n\n\treturn fmt.Sprintf(\n\t\t\"https://github.com/hasura/graphql-engine/releases/download/v%s/cli-hasura-%s-%s%s\",\n\t\tv, os, arch, extension,","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/cli/update/update.go#L29-L65","documentation":"The update-check response decoded successfully but contained neither Latest nor PreRelease version fields, so there is nothing to compare the current version against. This indicates a server-side or schema change rather than a client network problem.","triggerScenarios":"Calling update.HasUpdate() when the endpoint returns valid JSON like {} or a payload where the expected fields are named differently (schema drift on the update service).","commonSituations":"The update service being migrated or a staged rollout serving an empty payload, an API version change, or a misconfigured mirror/redirect serving an unexpected JSON document.","solutions":["Fetch updateCheckURL manually and confirm the response contains the expected latest/pre-release fields","If self-hosting/mirroring the update endpoint, fix the payload to match the expected schema","Disable update checks if the endpoint is known to be incompatible"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"if _, _, err := update.HasUpdate(); err != nil {\n    // missing version info: degrade to current version, do not block the CLI\n    log.Printf(\"update info unavailable: %v\", err)\n}","preventionTips":["Pin CLI versions in CI so update-check results are advisory only","Monitor the update service contract if self-hosted"],"tags":["update-check","schema","hasura-cli"],"backgroundTag":"unexpected-api-response-schema","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}