Local runners (ollama, llama-cpp-python, mlx-lm) and production serving engines (vllm, sglang) answer different needs, and one use case could not hold both at the cap. The old page redirects to LLM Serving.
Co-Authored-By: Claude <noreply@anthropic.com>
Each line keeps the ClickPy downloads and the reason at decision time, so later PR reviews and star scans don't propose these projects again without new evidence.
Co-Authored-By: Claude <noreply@anthropic.com>
Drop meant three things on the review page: remove a listed entry, leave a candidate out, or park a structure question with no record. Verdicts are now per row kind: keep/remove for listed entries, add/reject for candidates, restructure/park/reject for structure questions, and the feedback JSON carries the same words.
The page also gains an optional Source column naming where each row came from. Star scans now judge an unlisted project a reject names as the better pick, seed judgment-call rows as park, and keep any parked row unrecorded.
Co-Authored-By: Claude <noreply@anthropic.com>
gensim's last push was 2025-11-01, so it crosses the 12-month activity line on 2026-11-01. It is kept on 2,904,015 downloads/month (ClickPy, 2026-10-12).
Every entry in these sections was re-checked against ClickPy downloads (2026-10-12) and live repo and PyPI state (2026-10-15); none needed a keep, drop, tier, or order change.
The hero-rise fade-in started .hero-copy, which holds the LCP <h1>, at opacity 0, and Chrome ignores opacity-0 paints for LCP, delaying it by about 455 ms.
Co-Authored-By: Claude <noreply@anthropic.com>
Entries were matched across revisions by normalized name only, so a rename (dateutil to python-dateutil, mock to unittest.mock) showed as one removal plus one addition and flagged the section as changed since its audit.
Co-Authored-By: Claude <noreply@anthropic.com>
audit_priority.py dated a section's audit from its sweep commit, so the `feat: add` commits made right after the sweep counted as changes since that audit and the just-audited section ranked first again.
Co-Authored-By: Claude <noreply@anthropic.com>
sglang was listed above vllm on a ClickPy monthly count inflated by release-day spikes. The audit kept every other entry.
- ClickPy last-30-day, fetched 2026-10-12: sglang 2,136,488, vllm 2,109,399.
- pypistats daily, mirrors excluded, fetched 2026-10-14: sglang swings between 7K and 487K a day while vllm holds 56K-82K. Last week: vllm 463,948, sglang 176,630.
Co-Authored-By: Claude <noreply@anthropic.com>
`.results-note` carried an inner `max-width: 28rem`, which breaks the rule that `.section-shell` is the only width cap.
Co-Authored-By: Claude <noreply@anthropic.com>
DESIGN.md claimed ~650 projects (README has 506) and omitted the Downloads column the table sorts by; CONTRIBUTING.md said GitHub-linked projects rank higher when build.py sorts by PyPI downloads first and uses stars only for entries without downloads; ADR 0001 said challengers are "marked" while CONTRIBUTING.md says position is the only marker.
Co-Authored-By: Claude <noreply@anthropic.com>
CONTEXT.md duplicated CONTRIBUTING.md's vocabulary, and CONTRIBUTING.md used the term Second Tier without defining it.
Co-Authored-By: Claude <noreply@anthropic.com>
Ruff 0.16 enables 413 default rules (up from 59), so make lint failed with 11 findings, and it treated website/ modules as third-party.
Co-Authored-By: Claude <noreply@anthropic.com>
The dependency-group floors still named the pre-upgrade versions (e.g. ruff>=0.15.6, ty>=0.0.33), so they no longer matched the versions the code is linted, typed, and tested against.
Co-Authored-By: Claude <noreply@anthropic.com>
uv picked CPython 3.15.0 on CI runners and the locked markupsafe 3.0.3 has no 3.15 wheel under no-build, so CI and the nightly website deploy failed at uv sync.
Co-Authored-By: Claude <noreply@anthropic.com>
Nine entries linked https://github.com/owner/repo/ while every other
entry uses the bare form. Formatting only; the site's repo regex already
accepted both.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>