Repository navigation
fix(artifact-delivery): read moved and oversized Repositories - #488
Merged
Merged
Conversation
A run of a Skill in a renamed or transferred Repository failed: GitHub answers the old name with a 301 to /repositories/<id>, and every read treated that redirect as fatal. 229 registry Skills across 13 Repositories hit it, facebook/react among them. The read now follows that one hop on the API origin. The Resolution keeps the name the request used, because the released CLI checks the attested name against its request. A load trusts the Repository ID and reads by the current name. A tree response over the 8 MiB read limit threw, so the queue spent its whole retry ladder and then failed as SERVICE_UNAVAILABLE. It is now a value each caller answers. A named search splits a tree that one response cannot hold, so a small Skill in posthog/posthog or vercel/next.js resolves by name.
Anyone can send a name, and every tree read comes out of the site's GitHub quota. The split walk now stops as soon as the folders it knows about cannot fit the budget. posthog/posthog needs more than 128 reads, so it used to spend 128 before it asked for a path; it now stops after about 40. n8n-io/n8n, vercel/next.js and openshift/hypershift need 27 to 45 and still resolve.
Contributor
🤖 MERGED
GitHub merged this pull request. No material findings were recorded. The pull request closed. |
Keeps #487's slug match and omitted files on top of the split tree listing. A truncated tree is now split, so the reject test truncates the single level read too.
1 of 6 tasks
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.
🔗 Linked issue
Related to #481
❓ Type of change
📚 Description
An offline sweep of the 5,949 Skills that show a run command found 587 that fail as
SERVICE_UNAVAILABLEwhen resolved by name. Two read rules ingithub-source.tscause all of them.Moved Repositories: 229 Skills in 13 Repositories. GitHub answers the old name of a renamed or transferred Repository with a 301 to
/repositories/<id>.requestJsontreated every redirect as fatal. facebook/react now lives at react/react, so all 14 of its Skills failed. In production,skilld run facebook/react/fixwaits through the queue retries and ends withRESOLUTION_TIMEOUT./repositories/<id>onapi.github.com. Every other redirect stays fatal.Trees over the 8 MiB read limit: 358 Skills in 4 Repositories. A recursive tree read of posthog/posthog, n8n-io/n8n, vercel/next.js or openshift/hypershift returns more than 8 MiB. The read threw, the queue tried the build 5 times, and the Resolution failed. #481 already resolves an admitted name by its folder, so production no longer reads these trees for registry Skills.
too-largevalue. It no longer throws into the retry ladder.MAX_NAME_SEARCH_TREE_READS). It stops early when the folders it still has to read cannot fit. n8n-io/n8n, vercel/next.js and openshift/hypershift need 27 to 45 reads. posthog/posthog needs more than 128, so a name the registry does not hold there getsINVALID_SOURCEwith "Name the Skill by its path" after about 40 reads.too-largethe way it already handles a truncated listing.Sweep harness counts for the Skills that failed on
main, run offline against the shared GitHub cache. "Ready" means the site built the Artifact.SERVICE_UNAVAILABLESERVICE_UNAVAILABLEINVALID_SOURCE(posthog/posthog)#484 also changes
loadFromTarball. Whichever merges second resolves a small conflict there.