Skip to content

Re-band five adoption records from verified package figures - #425

Closed
ccerv1 wants to merge 0 commit into
mainfrom
carl/reband-adoption-from-verified-packages
Closed

Re-band five adoption records from verified package figures#425
ccerv1 wants to merge 0 commit into
mainfrom
carl/reband-adoption-from-verified-packages

Conversation

@ccerv1

@ccerv1 ccerv1 commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

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_fallback record 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.

product was now figure
firecrawl 3, stars 4, usage_volume 6,614,973/mo firecrawl-py
typesense 3, stars 4, usage_volume 1,180,052/mo typesense
lakefs 2, stars 3, usage_volume 536,650/mo lakefs
tensorlake-sandbox 1, stars 3, usage_volume 143,429/mo tensorlake
otari 1, stars 2, usage_volume 28,523/mo otari

Each 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-py names the repository as its home_page. typesense establishes ownership through a Source project URL, lakefs through a Homepage URL pointing into treeverse/lakeFS, tensorlake through Homepage and Repository URLs, otari through mozilla-ai.github.io/otari. The same blind spot rejected tensorflow-serving-api earlier, whose owner is "Google Inc." and whose homepage is tensorflow.org/serving.

The sweep is a candidate generator, not a corrector

It produced two false positives that would have been severe:

  • packaging at 2,191,710,133 monthly downloads attributed to bigcodebench
  • openai at 417,881,229 attributed to simple-evals

Both 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 pnnx to ncnn — 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

pgvector is 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.

@ccerv1

ccerv1 commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator Author

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:

package its own summary
typesense "Python client for Typesense, an open source and typo tolerant search engine."
firecrawl-py "Python SDK for the Firecrawl API"
lakefs "lakeFS Python SDK Wrapper"
otari "Python client for the otari gateway" — the package's own title is "Otari Python Client SDK"
tensorlake "Tensorlake SDK for agent sandboxes"

Worse than a missed distinction: two of the notes I overwrote already said this.

  • typesense: "The typesense package on PyPI is the Python client for a running server, so its downloads are not the product's. With no published deployment figure the stars scale applies, capped at 3."
  • lakefs: "The lakefs package on PyPI is the Python SDK wrapper for the server's API rather than the server, so its downloads measure client use."

And firecrawl's note had reasoned the general case: "a paid API sells credits rather than reporting usage — so there is nothing here to band as usage volume."

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.

@ccerv1 ccerv1 closed this Aug 31, 2026
@ccerv1
ccerv1 force-pushed the carl/reband-adoption-from-verified-packages branch from 25c6511 to f8ca9a0 Compare August 31, 2026 08:23
ccerv1 added a commit that referenced this pull request Aug 31, 2026
…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.
ccerv1 added a commit that referenced this pull request Aug 31, 2026
…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.
ccerv1 added a commit that referenced this pull request Aug 31, 2026
…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.
ccerv1 added a commit that referenced this pull request Aug 31, 2026
…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.
ccerv1 added a commit that referenced this pull request Aug 31, 2026
…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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant