Repository navigation
feat(artifact-delivery): flag a run command that keeps failing - #490
Merged
Merged
Conversation
The sweep from #481 records how each Skill's run check settles, but a visitor still saw a run command that fails every time. Two checks in a row that fail for a reason a retry cannot change now flag the run command on the Skill page, and the curated surfaces leave the Skill out until one check passes. A retryable failure never counts.
A failed or mocked fetch leaves the data null, so the page must not assume the default answer.
Collaborator
Author
Contributor
🤖 MERGED
GitHub merged this pull request. No material findings were recorded. The pull request closed. |
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
The
sweep-skill-runstask from #481 records how each Skill's run check settles. A visitor could still copy a run command that failed every check, and the homepage could feature that Skill.Now two checks in a row that fail for a reason a retry cannot change flag the Skill. One passing check clears the flag. A retryable failure, such as
RATE_LIMITEDorSERVICE_UNAVAILABLE, never counts toward a flag and never clears one./api/skill-demos(homepage demos and/skills/demos),/api/feed/trending(homepage board and/skills/trending) and the collection page route leave a flagged Skill out. A collection's Repository entries stay.GET /api/run-checks/flagsin artifact delivery returns every flag, or one Skill's with?skill=owner/repository/name. It usesdefineApiHandlerwith a schema, handler and presenter. It has no policy, because it is a public read of facts the Skill page shows. Other layers read it over HTTP. If that read fails, the surface logsrun-check-flags-readand shows every Skill.nextRunCheckStateandrunCheckFlaginrun-check-state.tshold it. The sweep stores the state they return, and the route applies the samerunCheckFlag.0143addsfailure_streak,failed_atand an index on the streak, so the route reads only flagged rows. It counts each row's current failure once. On 7 Oct 2026, 3 production rows had failed this way:garrytan/gstack/gstack,hugohe3/ppt-master/ppt-masterandclerk/skills/clerk-orgs. Each flags only after one more failing check.#483 merged while this branch was open. Its rule, where a retryable failure keeps a known failure, now lives in
nextRunCheckState, and its test is unchanged.These surfaces still show a flagged Skill: track pages, the all time range of
/skills/trending,/api/collections/featured, the weekly email, and the collection install manifest. Because of the manifest, a collection install still includes a flagged Skill, while the page counts only the Skills it lists.Proposed term.
GLOSSARY.mdhas no name for the scheduled check, so this PR uses run check: one Resolution request the sweep sends for an indexed Skill's run command, and how it ended. The run check flag is the state after two failures in a row. The UI says "Run failed in the last two checks" and "Last checked 6 Oct 2026". "Check" also names acheck resulton one Artifact, so the entry should record that collision.GLOSSARY.mdstays unchanged until the term is approved.