Close library requests whose artifact cannot be resolved - #9269
Merged
Conversation
kimeta
force-pushed
the
triage-close-unresolvable-artifacts
branch
from
August 10, 2026 13:41
4149b0d to
299a3f2
Compare
vjovanov
approved these changes
Aug 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #9139
What this does
Requests for artifacts that no configured repository serves currently flow all the way into the agent workflows, which discover the problem the expensive way. #7767, #7768 and #7769 each burned three agent runs across three different bots before landing in
human-intervention, every one of them rediscovering the same404from Maven Central fororacle.spectra.bundles:*. This adds a resolvability gate to issue triage that catches it in one HTTP request.The gate deliberately does only the deterministic check. Two richer designs were considered and dropped:
human-interventionrequests shows the "public library on a repository we don't configure" case is close to empty: 18org.springframework.boot, 8io.opentelemetry.instrumentation, 6org.springframework.aiand the rest are on Maven Central already and stuck for unrelated reasons. The only non-Central coordinates are the Oracle-internal ones this issue is about. Extra repositories would also be consulted for every resolution in the whole suite, which costs latency and widens the dependency-confusion surface.models.github.ai/catalog/modelsand the inference endpoint return410 github_models_retirement_brownout, and every remaining option needs a model API secret in the triage path. Not worth it for a case the data says barely occurs.How the check decides
Resolution is a closed-world search: Gradle only ever asks the repositories declared in
org.graalvm.internal.tck.gradle, so a miss proves absence from those repositories, never that the artifact does not exist. The gate is built around that limit. It probes the POM, and on a missmaven-metadata.xml, across Maven Central and Confluent, and acts only on a result it can prove:200anywhere404404, metadata200version-missing404unresolvableA
404is the server stating it looked and the file is not there. A5xx, a401, or a timeout is not an answer at all, so it can never close an issue. This matters because triage runs unattended onissues: [opened]: without that rule a Maven Central outage would auto-close and comment on every request opened during it.Verified against real coordinates:
The Confluent case is why the probe covers both repositories: a Central-only check would have closed a library the repository already supports.
Comment examples
Only the two closing outcomes comment. Because absence is unprovable, both messages ask rather than simply reject.
version-missing, fororg.postgresql:postgresql:99.99.99:unresolvable, fororacle.spectra.bundles:helidon-mp:2607.0.8:Behavior is specified in §CI-triage-new-issues; the dependency-graph expansion gate now also excludes both closing outcomes, so a closed issue never fans out into transitive dependency issues.
Open questions
issues: [opened], so it will not retroactively touch Support for oracle.spectra.bundles:helidon-mp:2607.0.8 #7767-Support for oracle.spectra.bundles:ucpwrapper-helidon-se:2607.0.8 #7769. I'd close them by hand with the same explanation.add_new_library_support.pywould close that path; I left it out to keep this change to triage.org.graalvm.internal.tck.gradle, now stated as a requirement in the spec becausemavenCentral()has no URL literal to extract. A Gradle task printing resolved repository URLs would remove the drift risk if that seems worth it.