Distribution, in full

How far this work reaches — and the four things we still cannot tell you.

This is the whole picture, not the flattering part of it. Seven stages, measured seven different ways, over different spans of time, about different populations. Three of them carry a number today. Four do not, and each one says why.

You will not find a conversion rate on this page. Dividing one of these stages by another would invent a ratio nobody measured — it is the most common way an adoption figure stops being true, and we would rather publish four blanks than one of those.

  • Registry listings—
  • Downloads—
  • Non-mirror downloads—
  • Observed executions—
  • Paying wallets—
  • Repeat payers—
  • Institutions—

Each stage is a separate measurement of a separate thing, never added to another and never derived from another. Downloads are not users, and users are not customers. Every figure, its source and its as-of.

What each stage counts, and what the empty ones would need

The line under each stage is that stage's own account of itself, printed word for word from /api/footprint. It is not our summary of the reason, so it cannot drift away from the thing that produces it.

  • Registry listings

    STALE

    How many named things we publish are actually listed in a public registry.

    What it would take: registry census measured 123.5 h ago, past this endpoint's 48 h freshness policy

  • Downloads

    STALE

    Reported package-download events, counted package by package. PyPI uses third-party Pepy; npm and Hugging Face use their public APIs.

    What it would take: measured 97.7 h ago, past the 48 h the artifact declares; the number is what was measured then, not now — and when it was taken: not every counter answered in full; the value is a lower bound over 836 of 837 packages

  • Non-mirror downloads

    UNMEASURED

    The same downloads with mirrors, build servers and crawlers taken out.

    What it would take: No mirror-adjusted counter exists for the fleet. A sample is not a rate to multiply by.

  • Observed executions

    UNMEASURED

    How many times something we published was actually run, rather than fetched.

    What it would take: No counter exists behind a verify-page execution, a tool call or an install being run: /api/counters publishes verify_page_executions as UNPUBLISHED because nothing instruments it. A number here would be invented.

  • Paying wallets

    READ

    How many distinct wallets, that are not ours, have paid for something.

  • Repeat payers

    UNMEASURED

    How many of those came back and paid again.

    What it would take: /api/revenue publishes distinct payers and settlement totals, not per-wallet settlement counts; a repeat payer cannot be derived from what it exposes, and nothing else records one.

  • Institutions

    UNMEASURED

    How many named organisations are using this, as organisations.

    What it would take: No register of institutions using the estate exists, and a download or a payer wallet does not identify one.

Why we publish the blanks

A download is not a person. A person is not a customer. Every adoption number you have ever been shown collapses those three, and once they are collapsed there is no way back to what was actually counted.

So we keep them apart, publish each one with the date and the source it came from, and leave the stages we have not instrumented visibly empty. An empty stage here is not a gap in the reporting — it is the reporting. It tells you precisely what we do and do not know about our own reach, which is the same standard we hold every system we measure to.

Where to go next