Every number this site publishes is computed from a handful of tables: the payments behind each agent's rank, the agents themselves, the wallets bound to them, and the published snapshots. Before anyone trusts those tables, a set of assertion checks runs against them every three hours. Each check is a database query that returns zero rows when the data is healthy and the offending rows when it is not.
What a failure does
- block: a published number would be wrong while this fails. Our rule is that the number it protects is withheld until the check passes. The automatic gate that enforces this is being built; until then, a block failure here is fixed by hand.
- warn: something is late or drifting. The numbers are still right but may be behind.
- info: worth knowing, not a defect. It never changes a public number.
- A check that errors counts as failing. A broken smoke detector is not "no smoke".
By dataset and dimension
| Dataset | completeness | uniqueness | validity | consistency | referential | freshness | volume |
|---|---|---|---|---|---|---|---|
money_events | i note | i note | ✓ pass | ✓ pass | ✓ pass | ! late | ✓ pass |
actors | – | – | ✓ pass | ✓ pass | – | – | – |
bindings | – | i note | ✓ pass | ✓ pass | ✓ pass | – | – |
snapshots | – | – | ✓ pass | – | – | – | – |
series | ✓ pass | – | – | – | – | – | – |
acp_jobs | – | – | ✓ pass | ✓ pass | – | – | – |
bankr_launches | – | – | ✓ pass | ✓ pass | – | – | – |
partner_identities | – | – | – | ✓ pass | – | – | – |
x402_recipients | – | – | ✓ pass | – | – | – | – |
partner_cursors | – | – | – | – | – | ✓ pass | – |
registrations | – | – | ✓ pass | – | – | – | – |
waitlist | – | – | ✓ pass | – | – | – | – |
Every check
| Check | Dataset | Dimension | Severity | State | Rows | What it guards against |
|---|---|---|---|---|---|---|
me_required_fields | money_events | completeness | block | ✓ pass | 0 | A payment row is missing a field every downstream figure needs. |
me_duplicate_log | money_events | uniqueness | block | ✓ pass | 0 | The same on-chain log (transaction + log position) is stored twice, which double-counts it. |
me_identical_in_one_tx | money_events | uniqueness | info | i note | 15 | Identical transfers inside one transaction. Usually a batch payment, not a duplicate: on 2026-09-24 all four counted groups were checked against their on-chain receipts and every one matched. Rows without a log position cannot be told apart from a double insert, which is why me_duplicate_log exists. |
me_missing_log_index | money_events | completeness | info | i note | 1 | Payments stored before log positions were recorded. They fill in as the payment scan re-reads each wallet; until then me_duplicate_log cannot see them. |
me_amount_range | money_events | validity | block | ✓ pass | 0 | A payment amount is negative or implausibly large for a single agent transfer. |
me_known_values | money_events | validity | block | ✓ pass | 0 | A kind, rail, asset or confidence value appeared that no downstream code knows how to treat. |
me_address_format | money_events | validity | block | ✓ pass | 0 | A sender or recipient is not a lowercase CAIP-10 address, so joins against it silently miss. |
me_counted_self_payment | money_events | consistency | block | ✓ pass | 0 | A wallet paying itself is counted as spending. Moving your own money is not paying anybody. |
me_pre_registration_leak | money_events | consistency | block | ✓ pass | 0 | A payment from BEFORE the agent was registered is counted. This exact leak once overstated the headline by 46%. |
me_orphan_actor | money_events | referential | block | ✓ pass | 0 | A payment points at an actor that does not exist. |
me_sender_never_bound | money_events | referential | warn | ✓ pass | 0 | A payment is attributed to an agent whose wallet was never bound to it, so the attribution has no basis. |
me_pass_through_backlog | money_events | freshness | warn | ! late | 1 | Counted payments older than the backlog window have not been checked for pass-through routing yet. Pre-registration payments are excluded from every total already, so they never need checking (the first run flagged 3,313 of them by mistake). |
me_freshness | money_events | freshness | warn | ✓ pass | 0 | The newest observed payment is older than the scan's own cadence allows: the payment scan may have stalled. |
me_volume_swing | money_events | volume | info | ✓ pass | 0 | Yesterday's number of newly recorded payments is far from the trailing 7-day median. Needs a week of history. |
actor_liveness_range | actors | validity | block | ✓ pass | 0 | A liveness level outside the L0–L9 ladder. |
actor_rank_without_evidence | actors | consistency | block | ✓ pass | 0 | An agent is ranked L7 or above with no countable payment behind it. The rank is the product; this is the check that protects it. |
actor_evidence_without_rank | actors | consistency | warn | ✓ pass | 0 | An agent has a countable payment but is still ranked below L7: a promotion is pending. |
actor_l9_counterparties | actors | consistency | block | ✓ pass | 0 | An L9 agent does not have the three distinct counterparties in 30 days that L9 requires. |
binding_orphan_actor | bindings | referential | block | ✓ pass | 0 | A binding points at an actor that does not exist. |
binding_wallet_format | bindings | validity | block | ✓ pass | 0 | A bound wallet is not a lowercase CAIP-10 address. |
binding_interval | bindings | consistency | block | ✓ pass | 0 | A binding closes before it opens. |
binding_shared_wallet | bindings | uniqueness | info | i note | 6,641 | One wallet is currently bound to several identities: an operator wallet, not an agent wallet. |
snapshot_not_finite | snapshots | validity | block | ✓ pass | 0 | A published value is null, NaN or infinite. |
snapshot_from_future | snapshots | validity | block | ✓ pass | 0 | A published value claims a timestamp in the future. |
snapshot_rate_out_of_range | snapshots | validity | block | ✓ pass | 0 | A published rate or share is below 0 or above 1. A negative share was once published live. |
series_missing_definition | series | completeness | warn | ✓ pass | 0 | A metric was written in the last day without a definition id, so /def cannot explain it. |
acp_negative_amount | acp_jobs | validity | block | ✓ pass | 0 | An ACP job has a negative amount. |
acp_paid_exceeds_funded | acp_jobs | consistency | warn | ✓ pass | 0 | An ACP job paid out more than it was funded with (outside rounding). |
bankr_address_format | bankr_launches | validity | block | ✓ pass | 0 | A Bankr token, deployer or fee recipient is not a lowercase address. |
bankr_fee_split | bankr_launches | consistency | warn | ✓ pass | 0 | Bankr's platform plus creator fee exceeds the total fee it reported for the same token. |
bankr_negative_fee | bankr_launches | validity | block | ✓ pass | 0 | A cited Bankr fee is negative. |
partner_shared_flag | partner_identities | consistency | block | ✓ pass | 0 | A wallet declared by several partner identities is not flagged as shared, so it could count as an agent wallet. |
x402_address_format | x402_recipients | validity | block | ✓ pass | 0 | A named x402 seller is not a lowercase address, so payments to it are never attributed. |
cursor_stalled | partner_cursors | freshness | warn | ✓ pass | 0 | A worker that pages through a source has not saved a new position for several of its own cycles, so whatever it feeds has quietly stopped updating. |
catalogue_full_pass | partner_cursors | freshness | warn | ✓ pass | 0 | The x402 harvest has not completed a full pass of the catalogue within the window. This is the page-one freeze of September 2026, caught by the machine instead of by a reader. |
registration_from_future | registrations | validity | block | ✓ pass | 0 | A registration claims to have been minted in the future. |
waitlist_email_format | waitlist | validity | warn | ✓ pass | 0 | A waitlist entry does not look like an email address. Only a hash is returned: this table holds personal data. |
How the health score is computed
A weighted pass rate over the block and warn checks. Each check weighs its dataset's importance (the tables the public rank is built from count 3, published snapshots and paging workers 2, partner and catalogue tables 1) times its severity (block 2, warn 1). Informational checks never move the score. A score of 1 means every check that could make a public number wrong passed on the latest run.
Why this page exists
Every serious correction this project has published was a data-shape error that a person noticed by eye: a share that went negative, routing hops counted as spending, a wallet's history from before its agent existed counted as the agent's spending, and a seller list that stayed frozen at page one for eleven days while every run reported success. Each of those is now a named check on this page, so the next one is found by a machine, not by a reader.