Repository navigation
Conversation
A held collection whose upstream head adds undeclared children kept a `new-skill` finding that no hold could cover, so the tracking issue stayed open even after maintainers had reviewed those children and decided not to declare them. `upstream-health-hold.json` may now list `new-skill` as well. A `new-skill` hold applies only while the undeclared child paths at branch head are the same set as at the reviewed head and those directories are unchanged since then. The staleness diff therefore adds the undeclared child paths found at head to the installed scope (declared children plus root license files). A different set reports `stale-hold` with the added and removed paths; a content change reports that upstream changed within the installed scope or undeclared children. A network error while listing children at the reviewed head stays `unreachable`. Holds that do not list `new-skill` compare the same scope with the same messages as before; only the validation message for an unholdable status now names `new-skill` among the holdable ones. The checker docstring, the tracking-issue guidance in the workflow and both READMEs describe the extended hold. Validation: 47 upstream-health (5 new), 10 collection-generator, 51 catalog-metadata and 19 i18n tests pass. Catalog metadata and i18n (0 errors, 103 existing warnings), translation-freshness, actionlint and `git diff --check` are clean. A live run on marketingskills with a temporary hold listing `outdated` and `new-skill`, reviewed at a commit whose tree equals the current head, reports both findings as `held` with `actionable: false`; that hold is not committed. Refs #213.
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.
Why
upstream-health-hold.jsoncould only coverupstream-path-changeandoutdated. When the upstream head of a held collection adds children thatchildrendoes not declare, thenew-skillfinding stays actionable even after maintainers have reviewed those children and decided not to declare them, so the tracking issue (#213) can never close.skills/marketingskillsis in this state today: its two new upstream children were reviewed in the 2026-10-27 round (#227), but nothing can hold the finding.What changes
new-skillis now a holdable status (HOLDABLE = ("upstream-path-change", "new-skill", "outdated")).new-skillalso checks the undeclared children:head; otherwisestale-hold: undeclared children changed since <head> (added …; removed …);LICENSE*/NOTICE*/COPYING*), so any change inside them givesstale-hold: upstream changed within the installed scope or undeclared children since <head>;unreachable, not a stale hold.new-skillcompare the same scope and keep every existing message. The only wording change for them is the validation error for an unholdable status, which now listsnew-skillamong the holdable statuses.undeclared_children(), which thenew-skillfinding and the hold check share, so both always agree on what is undeclared..github/workflows/upstream-health.yml,README.mdandREADME.zh-CN.mddescribe the extended hold.Tests
New cases in
scripts/catalog/test_check_upstream_health.py:new-skillhold is reported asheld, and stays held after an unrelated upstream change;outdated-only hold on a collection still ignores changes to undeclared children (existing behaviour);unreachable.The validation test now accepts
new-skilland still rejects broken,unreachable,unpinned,held,stale-holdandok.Validation
scripts/i18n/test_validate_i18n.py: 19 tests pass.scripts/catalog/test_validate_catalog_metadata.py: 51 tests pass.scripts/catalog/test_collection_generator.py: 10 tests pass.scripts/catalog/test_check_upstream_health.py: 47 tests pass (5 new).validate_catalog_metadata.py --require-completeandvalidate-i18n.py: 0 errors, 103 existing warnings.translate.py --check,actionlintandgit diff --checkare clean.marketingskills(entry and hold as onmain, in a scratch copy, not committed):new-skilladded to the 2026-10-27 hold, the result isstale-hold, because upstream has since moved from17772c7to0cd9b3aand changed declared children. The same hold withoutnew-skillis also stale, so this is not caused by the new check. The two undeclared children are unchanged between those heads.new-skillandoutdatedare bothheldand the summary reportsactionable: false.Follow-up
After this lands, the
marketingskillshold can addnew-skillto itsstatuses. Its reviewed head needs a fresh review first, because upstream has changed declared children since17772c7.The pre-publication sensitive-token scan was run privately by the maintainer and passed.
Refs #213.