docs: generate the competitive landscape from data fetched this run - #41
Merged
Conversation
The competitive tables in this family of repositories stated their own method -- "repository metadata fetched via the GitHub API" -- and were then typed by hand, from data 17 days stale. api-verity-lab shows what that costs: its table recorded a live competitor as "repo gone (404)" because its fetcher asked for the wrong org name and wrote the resulting null into the artifact as a finding. So the numbers now come from a fetch run today and the table is generated from the committed result, with scripts/generate_landscape.py --check failing the build when the markdown and the data disagree. Only api-verity-lab had a checked-in fetcher; the others had committed capability data with no reproducible way to refresh it. All four have one now, each with its own competitor set, and all four inherit the fix that makes a failed lookup raise rather than silently become data. The README gains a "How this compares" section that says plainly where this project overlaps its neighbours and where it does not -- linking to the full table rather than duplicating it, so there is one place for the numbers to be right. Nothing here asserts that a competitor lacks a feature. Stars, licences and dates are facts about repositories on the fetch date; capability judgements stay in the prose, where they can be argued with. Verified: ruff, ruff format, mypy, 316 tests pass, landscape --check clean.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.
The competitive tables across these four repositories stated their own method — "repository metadata fetched via the GitHub API" — and were then typed by hand, from data 17 days stale.
api-verity-labshows what that costs. Its table recorded a live competitor as "repo gone (404)" because the fetcher asked for the wrong org name and wrote the resulting null into the artifact as a finding. The repository was archived and public with 1,534 stars.What changed
data/competitor-meta.json.scripts/generate_landscape.py --checkfails the build when the markdown and the data disagree, and runs in CI.api-verity-labhad a checked-in fetcher; the others had capability data with no reproducible way to refresh it. All four have one now, each with its own competitor set.README
A
## How this comparessection says plainly where this project overlaps its neighbours and where it does not, linking to the full table rather than duplicating it — one place for the numbers to be right.What this deliberately does not do
Nothing here asserts a competitor lacks a feature. Stars, licences and dates are facts about repositories on the fetch date. Capability judgements stay in prose, where they can be argued with.
Verification
ruff·ruff format --check·mypy· full test suite ·generate_landscape.py --check— all clean.