{"record":{"id":"4b33c11f4e0be99e","repo":"jdx/mise","slug":"aqua-package-does-not-have-repo-owner-and-or-re","errorCode":null,"errorMessage":"aqua package {} does not have repo_owner and/or repo_name.","messagePattern":"aqua package (.+?) does not have repo_owner and/or repo_name\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/aqua.rs","lineNumber":2146,"sourceCode":"                        for tag in tags.into_iter().rev() {\n                            let (version, _) = match versioned_package_from_tag(\n                                &pkg,\n                                &tag,\n                                target_os,\n                                target_arch,\n                                target_libc.as_deref(),\n                            ) {\n                                Ok(Some(versioned)) => versioned,\n                                Ok(None) => continue,\n                                Err(e) => {\n                                    warn!(\"[{}] aqua version filter error: {e}\", self.ba());\n                                    continue;\n                                }\n                            };\n                            versions.push((version, tag));\n                        }\n                    } else {\n                        bail!(\n                            \"aqua package {} does not have repo_owner and/or repo_name.\",\n                            self.id\n                        );\n                    }\n                    Ok(versions)\n                },\n                // Don't cache an empty tag list: the all-filtered happy path can\n                // produce `[]` (valid repo, but no platform-matching release), and\n                // a transient registry blip could too. Caching it would persist a\n                // miss — same class as #9444 \"don't cache empty version lists\".\n                |versions| !versions.is_empty(),\n            )\n            .await\n    }\n\n    /// Returns `(url, url_api, checked, digest)` where `url_api` is the GitHub API asset\n    /// endpoint used as a download fallback for private repositories.\n    async fn get_url(","sourceCodeStart":2128,"sourceCodeEnd":2164,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/aqua.rs#L2128-L2164","documentation":"When listing versions for an aqua package of GitHub-release type, the code reads repo_owner and repo_name from the package definition to query releases. If either is missing, it cannot build the GitHub releases URL and bails naming the package id.","triggerScenarios":"Version listing for an aqua package whose TOML omits repo_owner or repo_name (only one set, or neither).","commonSituations":"Copied/merged aqua package entry missing an owner or name; typo like repoName; registry entry for an HTTP-type package mistakenly treated as a GitHub-release package.","solutions":["Add both `repo_owner` and `repo_name` to the aqua package TOML.","Correct misspelled keys and re-validate against the aqua package schema.","Fix or pin the upstream aqua-registry entry if the omission comes from the registry rather than local config."],"exampleFix":"// before\n[package]\nname = \"example\"\nrepo_owner = \"example-org\"   # repo_name missing\n// after\n[package]\nname = \"example\"\nrepo_owner = \"example-org\"\nrepo_name = \"example\"","handlingStrategy":"validation","validationCode":"fn github_release_ok(pkg: &toml::Value) -> bool {\n    pkg.get(\"repo_owner\").and_then(|v| v.as_str()).map(|s| !s.is_empty()).unwrap_or(false)\n        && pkg.get(\"repo_name\").and_then(|v| v.as_str()).map(|s| !s.is_empty()).unwrap_or(false)\n}","typeGuard":null,"tryCatchPattern":"match list_versions(pkg) {\n    Ok(vs) => use(vs),\n    Err(e) if e.to_string().contains(\"repo_owner and/or repo_name\") => {\n        eprintln!(\"add repo_owner and repo_name to the package TOML\");\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Always define both repo_owner and repo_name for GitHub-release aqua packages.","Validate package TOML against the aqua schema.","Diff upstream registry updates for renamed/removed fields."],"tags":["aqua","config","github"],"backgroundTag":"missing-required-config-field","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}