fix(vendor-neutrality-score): never count partial-coverage tools as backends - #1381
Merged
potiuk merged 1 commit intoSep 25, 2026
Merged
Conversation
…ackends The scorer counted every `**Kind:** implementation` tool as a backend vendor and ignored the `**Coverage:**` qualifier, although docs/labels-and-capabilities.md says a partial tool "must not be counted as a complete/selectable backend". A read-only foundation for a new forge would therefore raise the contract counts in docs/vendor-neutrality.md as if it were a full backend. The scorer now reads `**Coverage:**` (`partial` or `partial-read-only`, backticks allowed), keeps partial tools out of the vendor count, lists them in the Basis column and the JSON output, and rejects unknown values. No score changes today: Atlassian stays counted through jira / jira-patch, and bitbucket is now shown as not counted. The coverage-qualifiers section also documents `partial`, which the bitbucket README already uses, and the scorer's behaviour. Generated-by: Claude Opus 5
13 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.
Summary
tools/vendor-neutrality-scorecounted every**Kind:** implementationtool as a backend vendor and never read the**Coverage:**qualifier.docs/labels-and-capabilities.mdsays a partial tool "must not be counted as a complete/selectable backend", but nothing enforced it. A read-only foundation for a new forge (for example the GitLab bridge in feat(tools/gitlab): add read-only GitLab bridge foundation (Part of #305) #1369) would raise the contract counts indocs/vendor-neutrality.mdas if it were a full backend, even after its README declared**Coverage:** partial.**Coverage:**(partialorpartial-read-only, with or without backticks), keeps partial tools out of the vendor count, lists them in the generated Basis column (partial foundation, not counted: …) and in--json(partial_implementations), and fails on unknown values, just as it already does for**Kind:**.contract:tracker/contract:change-requestthroughjira/jira-patch, andbitbucketnow appears as not counted.partial, whichtools/bitbucket/README.mdalready uses, and states that the scorer enforces it.Type of change
tools/*/withpyproject.toml)docs/)Test plan
uv run --directory tools/vendor-neutrality-score pytest: 36 passed (3 new: partial not counted; README parsing incl. backticked value; unknown value raises)ruff check,ruff format --check,mypyfor the tool: cleanvendor-neutrality-score --in-placeregenerated the doc block (Basis column only; counts unchanged)prek run --all-files: all hooks pass exceptworkspace-pytestfordev,agent-isolationandpr-management-stats, which fail identically on unmodifiedmainin my sandboxed environment (socket / subprocess denial, local plugin tree). CI runs them unsandboxed.Linked issues
Follow-up from the review of #1369.
Generative AI disclosure
This change was drafted with Claude Code (Claude Opus 5) and reviewed by me before submission.
🤖 Generated with Claude Code