fix(validate): a dead link in an imported body warns instead of failing - #9
Merged
Conversation
This was referenced Sep 3, 2026
napetrov
force-pushed
the
fix/imported-body-dead-link-warns
branch
from
September 3, 2026 16:27
f54bbb7 to
a5b91fc
Compare
`main` is red on Validate, and every open pull request inherits it:
FAIL skills/vllm-xpu-run/SKILL.md: link
https://docs.vllm.ai/en/latest/getting_started/xpu-installation.html is gone (HTTP 404)
The link really is dead — docs.vllm.ai dropped the `.html` URL scheme, so it now
redirects to a path that 404s. But `skills/vllm-xpu-run/` is an import pinned to
intel/gpu-ai-skills, so editing the URL here would only move the failure one step
down the job, to `sync_external.py --check`, which byte-compares the copy against
its pin. There is no edit to this repository that both satisfies the link check and
keeps the import intact.
Check 8 already resolves exactly this tension. A file a skill ships but never
mentions fails when the skill was written here and warns when it was imported,
because "the only way to satisfy it would be to edit another team's body, and an
edited import no longer matches the text their measurements describe". A dead link
in an imported body is the same shape of finding, so it gets the same treatment,
and the warning says where the repair has to land:
WARN skills/vllm-xpu-run/SKILL.md: link ... is gone (HTTP 404)
(imported: upstream's body is kept as it is — fix it upstream, then move
external-commit)
What still fails: a dead link in a body this repository wrote, and a pinned commit
that has gone missing. The second one shares the mechanism but not the ownership —
`external-commit` is our claim about upstream, not upstream's text, so a SHA
rewritten out of history is our defect to fix and stays an error.
link_targets() now returns a third element saying which origin a URL came from,
rather than check_links() re-deriving it, because the pinned-commit target is
synthesised from .source.json and would otherwise be indistinguishable from a URL
found in the body it sits next to.
MAINTAINERS.md documents the route the warning asks for, and says the thing worth
saying out loud: a warning that outlives a release means the pin is the wrong pin.
Verified locally: the gate passes with the warning, and both error paths were
checked directly — a dead link attributed to a body written here still errors, and
a rewritten external-commit still errors.
The stale docs.vllm.ai URLs themselves are fixed in intel/gpu-ai-skills#12; the pin
move lands here once that merges.
Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
…NERS The behaviour change landed in validate_skills.py, validate.yml and the generator paragraph of MAINTAINERS.md, but three places still described the old policy: - README's list of what blocks a merge said a 404 or 410 fails, full stop. That is now false for 23 of the 33 skills in the catalog, and the README is where a contributor reads the merge bar. - README's "Reported but not blocking" line omitted the new warning. - MAINTAINERS' Level 1 section said dead links are reported without blocking, which understates it the other way: a dead link in a skill written here still fails. Also moves the modified-files sentence back beside the generator paragraph it belongs to. Inserted where it was, with no blank line before the new paragraph, rendered Markdown joined it to the warnings paragraph and "it" lost its antecedent. Signed-off-by: Rybkin <alexander.rybkin@intel.com>
xaleryb
approved these changes
Sep 3, 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.
1 of 5 in a split stack.
mainmain#9 and #12 are independent and both go straight to
main— they fix the two unrelated jobsthat are red there, and neither waits on the other. #10, #11 and #13 sit on #9 only so their
Validate runs are green while
main's link check is failing; GitHub retargets them tomainwhen #9 lands.
mainis failing two independent jobs, so any PR fixing one still displays the other.Nothing here introduces the failure it shows:
zizmor— the Pages workflow from #7validate— the dead docs.vllm.ai linkEverything else is green on every PR. All five test-merge into
maincleanly in any order,and the merged combination passes the full gate plus zizmor and actionlint.
What this changes
mainis red on Validate, and every open pull request inherits it:The link really is dead — docs.vllm.ai dropped the
.htmlURL scheme, so it now redirectsto a path that 404s. But
skills/vllm-xpu-run/is an import pinned tointel/gpu-ai-skills, so editing the URL here would only move the failure one step downthe same job, to
sync_external.py --check, which byte-compares the copy against its pin.There is no edit to this repository that both satisfies the link check and keeps the
import intact.
Check 8 already resolves exactly this tension — a file a skill ships but never mentions
fails when the skill was written here and warns when it was imported, because "the only way
to satisfy it would be to edit another team's body, and an edited import no longer matches
the text their measurements describe". A dead link in an imported body is the same shape of
finding, so it gets the same treatment, and the warning says where the repair has to land:
What still fails, and this is the part worth reviewing:
external-commitgone from upstream historylink_targets()now returns a third element naming which origin a URL came from, ratherthan
check_links()re-deriving it. The pinned-commit target is synthesised from.source.json, so by the time it reachescheck_links()it would otherwise beindistinguishable from a URL found in the body it sits next to.
MAINTAINERS.mddocuments the route the warning asks for, and says the thing worth sayingout loud: a warning that outlives a release means the pin is the wrong pin.
Verified
Gate passes with the warning, and both error paths were exercised directly rather than
argued for — a dead link attributed to a body written here still errors, and a rewritten
external-commitstill errors.Follow-up, not in this PR
The stale docs.vllm.ai URLs themselves are fixed in intel/gpu-ai-skills#12. The pin
move here (bump
external-commiton the three vllm skills, re-runsync_external.py --write) lands once that merges, and the warning goes away with it. Two of the three linksin that PR answer 200 while landing on the wrong page, via a Read-the-Docs fuzzy
redirect — no status-code link checker can see those, here or anywhere.
Checklist
descriptionagainst requests a user would really type — see CONTRIBUTING.md. (no skill text changed)python3 tools/validate_skills.pypasses locally.git commit -s(DCO).