Repository navigation
fix(novelty): keep a skill whose only spec error is an over-long description in the routing field #405
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+259
−58
Merged
fix(novelty): keep a skill whose only spec error is an over-long description in the routing field #405
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
8db4eb4
fix(novelty): keep a skill whose only spec error is a description ove…
napetrov 652958a
test: pin a 1024-character description as valid in the routing field
antonwolfy dc17ff8
docs: validate.py docstring lists a skill with only a long description
antonwolfy 24eaf88
Merge branch 'main' of https://github.com/intel/dokimi into fix/desc-…
napetrov a988ee8
Thread: PRRT_kwDOVBg7g860FMsc: already fixed in 652958a
napetrov e343bb2
Thread: PRRT_kwDOVBg7g860FMsm: already fixed in dc17ff8
napetrov 6ceeb24
Merge branch 'main' of https://github.com/intel/dokimi into fix/desc-…
napetrov d694b41
fix(novelty): say what the harnesses do at every over-limit length
napetrov 4d07f91
fix(novelty): warn about and save the skill under test when it is ove…
napetrov 83251e8
docs(changelog): say that routing baselines on such catalogs must be …
napetrov e6e9898
fix(novelty): name the skill under test as such in its over-limit war…
napetrov 7e12ed3
docs: re-wrap the over-limit lines; changelog names the skill under test
napetrov 60c1f41
Merge branch 'main' of https://github.com/intel/dokimi into fix/desc-…
napetrov 20ec659
Merge origin/main into fix/desc-over-limit-kept
xaleryb File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
16 changes: 16 additions & 0 deletions
16
dokimi/changelog.d/20261104_120000_napetrov_desc-over-limit-kept.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| ### Changed | ||
|
|
||
| - **A skill whose only spec error is a description over 1024 characters stays in the routing | ||
| field** — `dokimi novelty routing` (single-artifact and `--all-vs-all`) left such a skill out | ||
| unless `--include-invalid` was passed, but harnesses differ: Claude Code lists it and truncates | ||
| the description past about 1,536 characters, pi.dev rejects it. The skill now stays in the | ||
| field, from `--catalog` or `--competitors skill:`, with its full description. The run warns | ||
| with the skill name and its length, and the saved result lists it under `field.spec_warnings` | ||
| (an empty list when none); an over-limit skill under test (`--artifact`) is warned about and | ||
| listed there too. | ||
| Any other spec error (name not kebab-case or not its directory name, broken frontmatter) still | ||
| leaves a skill out unless `--include-invalid`. `dokimi catalog check` no longer treats such a | ||
| copy as unlisted, so it reports a `name-conflict` with a different copy of the same name, as | ||
| routing does. | ||
| The routing field of a catalog with such a skill changes, so routing rates measured before | ||
| this release on it differ: re-run a saved baseline before comparing with it. | ||
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # Copyright (C) 2026 Intel Corporation | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| """Which reviewed skills a harness lists, and so the routing field and ``catalog check`` agree on.""" | ||
|
|
||
| from __future__ import annotations | ||
|
|
||
| from typing import TYPE_CHECKING | ||
|
|
||
| if TYPE_CHECKING: | ||
| from .validate import SkillReview | ||
|
|
||
|
|
||
| def only_description_too_long(review: SkillReview) -> bool: | ||
| """Whether every spec error of ``review`` is a description over 1024 characters. | ||
|
|
||
| Harnesses differ on such a skill: pi.dev rejects it, Claude Code lists it and truncates the | ||
| description past about 1,536 characters. The routing field keeps it, so a result is not | ||
| silently measured without a skill that some harness would list. Any other spec error still | ||
| leaves a skill out. | ||
| """ | ||
| errors = [f for f in review.findings if f.level == "error"] | ||
| return bool(errors) and all(f.code == "description-too-long" for f in errors) | ||
|
|
||
|
|
||
| def in_field(review: SkillReview) -> bool: | ||
| """Whether the routing field lists the skill by default: not disabled, no spec error but length.""" | ||
| return not review.disable_model_invocation and ( | ||
| review.state != "error" or only_description_too_long(review)) |
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.