Re-band five adoption records from verified package figures - #425
Conversation
|
Reverted and closed. The re-bands were wrong on role, and two of them reversed a judgment the corpus had already recorded. The distinction I missed: this package belongs to the project is not downloads of this package measure adoption of the scored product. All five packages are clients or SDKs for a server, service or gateway — confirmed from their own PyPI summaries:
Worse than a missed distinction: two of the notes I overwrote already said this.
And So this is the resolution-ledger failure again, in a place that needed no ledger. The judgment was in the field I was replacing, and a scripted re-band did not read it. Declaring these artifacts would have made the warehouse more confidently wrong, because routing prefers a precisely measured but semantically weaker channel over stars. Nothing here is worth keeping in the corpus. The 429 handling — a non-200 fetch must refuse to band, never record an absence as zero — lives in #426, where it belongs, along with artifact role as a first-class finding. |
25c6511 to
f8ca9a0
Compare
…he product Applying the same standard that reverted #425. TensorFlow Serving is a serving system - a server - and tensorflow-serving-api announces itself as 'TensorFlow Serving Python API', the client library. Its 4,627,937 monthly downloads measure client use, not deployments of the server, so banding on it overstates the product and declaring it as an artifact would make routing prefer a precisely measured but semantically weaker channel over stars. The declaration is removed and the band returns to stars_fallback level 2. The note now records both larger figures and why neither is the instrument: the client package, and the tensorflow/serving image at 80,659,067 pulls, which IS the product but is cumulative against a monthly scale. That shape is borrowed from the typesense and lakefs notes, which had reasoned this correctly before a scripted re-band overwrote them.
…gs as artifacts Seven ledger entries recorded decided_in: '#423 inference_code pass'. #423 is a merged, unrelated PR correcting a stale deployed-table count - the number was guessed before this PR was opened. Provenance corruption in the file built to prevent it, so the pointer is now #424. A declared artifact is the MEASUREMENT identity, not a statement that a relationship exists: sum_stars_across_artifacts sums stars across declared artifacts and the adoption unit is downloads summed across them. So declaring a third-party binding counts its reach as the engine's, and react-native-executorch's 1,705 stars measure the binding rather than the runtime. abetlen/llama-cpp-python and software-mansion/react-native-executorch stay as ledger existing_product entries, so no sweep proposes them, with the distinction stated in each note. Neither is declared. llama-cpp and executorch are back to one artifact each; the same-owner vllm plugins and the onnxruntime extension are unchanged. This is the GitHub form of the client-package problem that reverted #425: correct relationship, wrong measurement identity.
…he product Applying the same standard that reverted #425. TensorFlow Serving is a serving system - a server - and tensorflow-serving-api announces itself as 'TensorFlow Serving Python API', the client library. Its 4,627,937 monthly downloads measure client use, not deployments of the server, so banding on it overstates the product and declaring it as an artifact would make routing prefer a precisely measured but semantically weaker channel over stars. The declaration is removed and the band returns to stars_fallback level 2. The note now records both larger figures and why neither is the instrument: the client package, and the tensorflow/serving image at 80,659,067 pulls, which IS the product but is cumulative against a monthly scale. That shape is borrowed from the typesense and lakefs notes, which had reasoned this correctly before a scripted re-band overwrote them.
…gs as artifacts Seven ledger entries recorded decided_in: '#423 inference_code pass'. #423 is a merged, unrelated PR correcting a stale deployed-table count - the number was guessed before this PR was opened. Provenance corruption in the file built to prevent it, so the pointer is now #424. A declared artifact is the MEASUREMENT identity, not a statement that a relationship exists: sum_stars_across_artifacts sums stars across declared artifacts and the adoption unit is downloads summed across them. So declaring a third-party binding counts its reach as the engine's, and react-native-executorch's 1,705 stars measure the binding rather than the runtime. abetlen/llama-cpp-python and software-mansion/react-native-executorch stay as ledger existing_product entries, so no sweep proposes them, with the distinction stated in each note. Neither is declared. llama-cpp and executorch are back to one artifact each; the same-owner vllm plugins and the onnxruntime extension are unchanged. This is the GitHub form of the client-package problem that reverted #425: correct relationship, wrong measurement identity.
…anchor (#424) * feat(inference_code): add seven engines and fold five repos into three families The first per-category pass, working from the Band-1 candidates the crosswalk rejected rather than resweeping discovery. The fifteen candidates were not one category: seven are control planes that orchestrate engines rather than engines themselves, and go to a deployment pass. Seven engines and runtimes land here; two KV-cache layers are held unresolved because neither inference_code nor compilers fits. vllm-ascend, vllm-omni and production-stack fold into vllm; onnxruntime-genai into onnx-runtime; llama-cpp-python into llama-cpp. Same owner is not the same family, and seven came back distinct on the evidence. The anchor is re-verified rather than assumed: vllm's capability value was null, so every 'one below vllm' in the category pointed at nothing. It now records the surface the bands are measured against. Three PyPI names were traps - xllm is an unrelated finetuning library, zml is 'zero markup language', lightllm names no repository - and two that do resolve measure a minority channel against Rust-primary distribution. * feat(inference_code): add five engines the deployment triage reclassified The deployment evidence showed five of its twelve candidates run models themselves rather than orchestrating engines, so they belong here: rtp-llm, sonar, fastdeploy, tensorflow-serving and executorch. react-native-executorch is declared as an executorch family artifact. rtp-llm joins the existing alibaba-cloud org, whose retired alias is exactly 'alibaba' - validate caught the duplicate. Two packages are not declared: tensorflow-serving-api names no repository, and fastdeploy-python resolves correctly but drew 323 downloads against 3,711 stars, so it measures a minority channel. nativelink is excluded as a Bazel build cache under FSL-1.1 with a competing-use restriction; kaito and toolhive are held, kaito because its LICENSE is Apache-2.0 reworded rather than verbatim. * fix(scores): correct two adoption bands and record two anchor feature sets Spot checks found stars understating infrastructure that ships as an image or an embedded runtime rather than as a starred repository. executorch: adoption 2 stars -> 5 reported_traction. Meta's engineering blog and the PyTorch success-stories page both state it powers on-device inference across Instagram, WhatsApp, Messenger, Quest and Ray-Ban for billions of people. Its BSD-3-Clause header carries eight copyright holders - Meta, Arm, Qualcomm, Apple, MediaTek, NXP, Samsung, Intel - which is vendor participation in the runtime, and capability moves 3 -> 4 on a backend matrix wider than apple-core-ml-runtime's. tensorflow-serving: adoption 2 stars -> 4 usage_volume on 4,627,937 monthly downloads. The package was rejected earlier because it publishes no repository link; ownership is established by its author, Google Inc., and its homepage, tensorflow.org/serving. The container image corroborates at 80.6M pulls, cited rather than banded because it is cumulative. langfuse and openhands are named as relative_to by 22 and 25 records with an empty capability value, so those comparisons were checkable for arithmetic and not for correctness. Recording openhands' surface also surfaced a shape change the band predates: its README now leads with Agent Canvas, a control centre that runs third-party agents, which means 'runs somebody else's loop' is no longer a low-rung discriminator in that category. * fix(tensorflow-serving): revert to stars, the client package is not the product Applying the same standard that reverted #425. TensorFlow Serving is a serving system - a server - and tensorflow-serving-api announces itself as 'TensorFlow Serving Python API', the client library. Its 4,627,937 monthly downloads measure client use, not deployments of the server, so banding on it overstates the product and declaring it as an artifact would make routing prefer a precisely measured but semantically weaker channel over stars. The declaration is removed and the band returns to stars_fallback level 2. The note now records both larger figures and why neither is the instrument: the client package, and the tensorflow/serving image at 80,659,067 pulls, which IS the product but is cumulative against a monthly scale. That shape is borrowed from the typesense and lakefs notes, which had reasoned this correctly before a scripted re-band overwrote them. * fix: correct ledger provenance, and stop declaring third-party bindings as artifacts Seven ledger entries recorded decided_in: '#423 inference_code pass'. #423 is a merged, unrelated PR correcting a stale deployed-table count - the number was guessed before this PR was opened. Provenance corruption in the file built to prevent it, so the pointer is now #424. A declared artifact is the MEASUREMENT identity, not a statement that a relationship exists: sum_stars_across_artifacts sums stars across declared artifacts and the adoption unit is downloads summed across them. So declaring a third-party binding counts its reach as the engine's, and react-native-executorch's 1,705 stars measure the binding rather than the runtime. abetlen/llama-cpp-python and software-mansion/react-native-executorch stay as ledger existing_product entries, so no sweep proposes them, with the distinction stated in each note. Neither is declared. llama-cpp and executorch are back to one artifact each; the same-owner vllm plugins and the onnxruntime extension are unchanged. This is the GitHub form of the client-package problem that reverted #425: correct relationship, wrong measurement identity. * test: tighten the weak-root cap to the twelve that remain The inference_code pass records capability values for langfuse, openhands and vllm, which were three of the fifteen roots the cap was set against. Fan-out falls from 68 bands to 18. Leaving the cap at 15 would keep slack in a ratchet whose only purpose is that the number moves deliberately.
Two spot checks found stars understating products whose primary distribution is a package or a container image rather than a starred repository. Sweeping every
stars_fallbackrecord for a package the project itself installs from, then verifying ownership by hand, found five where a measured monthly figure was available and simply never declared.firecrawlfirecrawl-pytypesensetypesenselakefslakefstensorlake-sandboxtensorlakeotariotariEach now declares the package as an artifact, so the warehouse measures the same instrument the record claims instead of falling back to stars. All five were pre-existing records; none came from a recent batch.
Ownership was established by hand, per package
A repository-link check is not sufficient and is what hid these. Only
firecrawl-pynames the repository as itshome_page.typesenseestablishes ownership through a Source project URL,lakefsthrough a Homepage URL pointing intotreeverse/lakeFS,tensorlakethrough Homepage and Repository URLs,otarithroughmozilla-ai.github.io/otari. The same blind spot rejectedtensorflow-serving-apiearlier, whose owner is "Google Inc." and whose homepage istensorflow.org/serving.The sweep is a candidate generator, not a corrector
It produced two false positives that would have been severe:
packagingat 2,191,710,133 monthly downloads attributed tobigcodebenchopenaiat 417,881,229 attributed tosimple-evalsBoth because an install line names dependencies alongside the product, and in the second case because an owner-name match saw "openai" in both the org and the package. It also matched
pnnxtoncnn— that one is genuinely Tencent's own conversion tool, but it is a sub-tool rather than the product. Nothing from the sweep is applied without a person confirming the package.Two deliberate non-changes
pgvectoris not re-banded. Its container image has 164,768,842 pulls, but that is cumulative since publication and the adoption scale is explicitly monthly. Treating a lifetime total as a monthly figure is the overstatement the guide strips numeric labels for.A rate limit is not a finding. The first sweep run drew HTTP 429 from pypistats for four of the five, and the banding loop turned "no data" into "0 downloads, level 1" — a rate limit recorded as a measurement. The script now refuses to band a fetch that did not return 200, and retries with pacing. Worth stating because the failure was silent and would have shipped four wrong bands in the opposite direction.
Gates
All 14 offline CI steps pass.