{"record":{"id":"a244343e01178228","repo":"ipfs/kubo","slug":"release-s-not-found-on-github-w","errorCode":null,"errorMessage":"release %s not found on GitHub: %w","messagePattern":"release (.+?) not found on GitHub: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/commands/update_github.go","lineNumber":194,"sourceCode":"\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tvar rel ghRelease\n\tif err := json.NewDecoder(resp.Body).Decode(&rel); err != nil {\n\t\treturn nil, fmt.Errorf(\"decoding GitHub release: %w\", err)\n\t}\n\treturn &rel, nil\n}\n\n// findReleaseAsset locates the platform-appropriate asset in a release.\n// It fails immediately with a clear message if:\n//   - the release tag does not exist on GitHub (typo, unreleased version)\n//   - the release exists but has no binary for this OS/arch (CI still building)\nfunc findReleaseAsset(ctx context.Context, tag string) (*ghRelease, *ghAsset, error) {\n\trel, err := githubReleaseByTag(ctx, tag)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"release %s not found on GitHub: %w\", tag, err)\n\t}\n\n\twant := assetNameForPlatformTag(tag)\n\tfor i := range rel.Assets {\n\t\tif rel.Assets[i].Name == want {\n\t\t\treturn rel, &rel.Assets[i], nil\n\t\t}\n\t}\n\n\treturn nil, nil, fmt.Errorf(\n\t\t\"release %s exists but has no binary for %s/%s yet; build artifacts may still be uploading, try again in a few hours\",\n\t\ttag, runtime.GOOS, runtime.GOARCH)\n}\n\n// downloadAsset downloads a release asset by its browser_download_url.\n// This hits GitHub's CDN directly, not the API, so no auth headers are needed.\nfunc downloadAsset(ctx context.Context, url string) ([]byte, error) {\n\treq, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)","sourceCodeStart":176,"sourceCodeEnd":212,"githubUrl":"https://github.com/ipfs/kubo/blob/329838acdfafae224582930457efe80aa217afc0/core/commands/update_github.go#L176-L212","documentation":"Fired by findReleaseAsset when githubReleaseByTag cannot fetch the release for the requested tag — typically a nonexistent or misspelled version tag, or an unreleased tag with no GitHub release object. The wrap carries the underlying API/HTTP error so the user can tell a bad tag name from a network problem.","triggerScenarios":"Thrown at core/commands/update_github.go:194 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the requested version against github.com/ipfs/kubo/releases","Retry in case of a transient GitHub API failure","Omit the version to update to the latest release"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"329838acdfafae224582930457efe80aa217afc0","analyzedAt":"2026-09-03T18:30:52.135Z","contentChangedAt":"2026-09-03T18:30:52.135Z","schemaVersion":2},"datasetVersion":"2026-09-11T00:17:11.886Z"}