{"name":"Agentic Finance Graph — data quality","description":"Assertion checks over the tables every public number is computed from. Zero failing rows means pass. block = published numbers would be wrong while it fails; warn = late or drifting; info = worth knowing, not a defect.","license":"https://creativecommons.org/licenses/by/4.0/","as_of":"2026-09-26T20:17:22.984Z","run_id":"dq-202609262017","producer":"AFG-Pulse data-quality suite (assertion checks over our own tables)","summary":{"checks":37,"passing":33,"block_failing":0,"warn_failing":1,"info_flagged":3,"errors":0,"health_score":0.9771},"parameters":{"max_single_payment_usd":5000000,"pass_backlog_hours":24,"money_fresh_hours":48,"volume_ratio":4,"shared_wallet_min":3,"fee_split_tolerance":0.02,"acp_paid_tolerance":1.01,"cursor_stall_cycles":4,"full_pass_hours":48,"sample":5},"health_formula":"weighted pass rate over block and warn checks; weight = dataset weight (rank tables 3, published snapshots 2, partner tables 1) x severity (block 2, warn 1); info checks never move the score; an error counts as a failure","checks":[{"id":"me_required_fields","table":"money_events","dimension":"completeness","severity":"block","weight":3,"baseline":false,"what":"A payment row is missing a field every downstream figure needs.","status":"pass","failing":0,"ms":10},{"id":"me_duplicate_log","table":"money_events","dimension":"uniqueness","severity":"block","weight":3,"baseline":false,"what":"The same on-chain log (transaction + log position) is stored twice, which double-counts it.","status":"pass","failing":0,"ms":16},{"id":"me_identical_in_one_tx","table":"money_events","dimension":"uniqueness","severity":"info","weight":1,"baseline":false,"what":"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.","status":"fail","failing":15,"ms":34,"sample":[{"tx":"0xc89664e1896115683fbc18a7f9a7557307dfb61121967fbaa7600252495584d5","from_caip10":"eip155:8453:0x0386d6c6562e1e1f7a0bc461aae5247dd6877471","to_id":"eip155:8453:0x0a6358c00d499f95bbb7f08fe540638e6a8cd4d8","amount_usd":"0.100000","copies":3},{"tx":"0xc89664e1896115683fbc18a7f9a7557307dfb61121967fbaa7600252495584d5","from_caip10":"eip155:8453:0x0386d6c6562e1e1f7a0bc461aae5247dd6877471","to_id":"eip155:8453:0xb7dace47c583ffb2d76ff26afe89d582b2182276","amount_usd":"0.010000","copies":3},{"tx":"0xb7ef2a0f90ce9267238e56cbf946ebbf086509df936ca9c980d660acc1b98478","from_caip10":"eip155:8453:0x0351037868a29361b01482854b410a7387dcfaa6","to_id":"eip155:8453:0xb98c948cfa24072e58935bc004a8a7b376ae746a","amount_usd":"7357.554379","copies":2},{"tx":"0x8f52c6ed7d55f1b76c6320395928a4f652b1ad72908fe949ddd4379cbd35e196","from_caip10":"eip155:8453:0x0351037868a29361b01482854b410a7387dcfaa6","to_id":"eip155:8453:0xaffd3c3cd06cf499deddf78b26868018a93f2c31","amount_usd":"6679.550344","copies":2},{"tx":"0x0af317698ac8fac883f4af31a443a3420f9de32d78c3b4e282163afd744f52a6","from_caip10":"eip155:8453:0x0351037868a29361b01482854b410a7387dcfaa6","to_id":"eip155:8453:0xb98c948cfa24072e58935bc004a8a7b376ae746a","amount_usd":"7356.265470","copies":2}]},{"id":"me_missing_log_index","table":"money_events","dimension":"completeness","severity":"info","weight":1,"baseline":false,"what":"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.","status":"fail","failing":1,"ms":8,"sample":[{"without_log_index":5953}]},{"id":"me_amount_range","table":"money_events","dimension":"validity","severity":"block","weight":3,"baseline":false,"what":"A payment amount is negative or implausibly large for a single agent transfer.","status":"pass","failing":0,"ms":4},{"id":"me_known_values","table":"money_events","dimension":"validity","severity":"block","weight":3,"baseline":false,"what":"A kind, rail, asset or confidence value appeared that no downstream code knows how to treat.","status":"pass","failing":0,"ms":4},{"id":"me_address_format","table":"money_events","dimension":"validity","severity":"block","weight":3,"baseline":false,"what":"A sender or recipient is not a lowercase CAIP-10 address, so joins against it silently miss.","status":"pass","failing":0,"ms":147},{"id":"me_counted_self_payment","table":"money_events","dimension":"consistency","severity":"block","weight":3,"baseline":false,"what":"A wallet paying itself is counted as spending. Moving your own money is not paying anybody.","status":"pass","failing":0,"ms":4},{"id":"me_pre_registration_leak","table":"money_events","dimension":"consistency","severity":"block","weight":3,"baseline":false,"what":"A payment from BEFORE the agent was registered is counted. This exact leak once overstated the headline by 46%.","status":"pass","failing":0,"ms":20},{"id":"me_orphan_actor","table":"money_events","dimension":"referential","severity":"block","weight":3,"baseline":false,"what":"A payment points at an actor that does not exist.","status":"pass","failing":0,"ms":31},{"id":"me_sender_never_bound","table":"money_events","dimension":"referential","severity":"warn","weight":3,"baseline":false,"what":"A payment is attributed to an agent whose wallet was never bound to it, so the attribution has no basis.","status":"pass","failing":0,"ms":139},{"id":"me_pass_through_backlog","table":"money_events","dimension":"freshness","severity":"warn","weight":3,"baseline":false,"what":"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).","status":"fail","failing":1,"ms":8,"sample":[{"unchecked":1,"oldest":"2026-09-10T19:59:31.000Z"}]},{"id":"me_freshness","table":"money_events","dimension":"freshness","severity":"warn","weight":3,"baseline":false,"what":"The newest observed payment is older than the scan's own cadence allows: the payment scan may have stalled.","status":"pass","failing":0,"ms":1},{"id":"me_volume_swing","table":"money_events","dimension":"volume","severity":"info","weight":1,"baseline":true,"what":"Yesterday's number of newly recorded payments is far from the trailing 7-day median. Needs a week of history.","status":"pass","failing":0,"ms":2},{"id":"actor_liveness_range","table":"actors","dimension":"validity","severity":"block","weight":3,"baseline":false,"what":"A liveness level outside the L0–L9 ladder.","status":"pass","failing":0,"ms":1},{"id":"actor_rank_without_evidence","table":"actors","dimension":"consistency","severity":"block","weight":3,"baseline":false,"what":"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.","status":"pass","failing":0,"ms":3},{"id":"actor_evidence_without_rank","table":"actors","dimension":"consistency","severity":"warn","weight":3,"baseline":false,"what":"An agent has a countable payment but is still ranked below L7: a promotion is pending.","status":"pass","failing":0,"ms":5},{"id":"actor_l9_counterparties","table":"actors","dimension":"consistency","severity":"block","weight":3,"baseline":false,"what":"An L9 agent does not have the three distinct counterparties in 30 days that L9 requires.","status":"pass","failing":0,"ms":1},{"id":"binding_orphan_actor","table":"bindings","dimension":"referential","severity":"block","weight":3,"baseline":false,"what":"A binding points at an actor that does not exist.","status":"pass","failing":0,"ms":49},{"id":"binding_wallet_format","table":"bindings","dimension":"validity","severity":"block","weight":3,"baseline":false,"what":"A bound wallet is not a lowercase CAIP-10 address.","status":"pass","failing":0,"ms":405},{"id":"binding_interval","table":"bindings","dimension":"consistency","severity":"block","weight":3,"baseline":false,"what":"A binding closes before it opens.","status":"pass","failing":0,"ms":6},{"id":"binding_shared_wallet","table":"bindings","dimension":"uniqueness","severity":"info","weight":1,"baseline":false,"what":"One wallet is currently bound to several identities: an operator wallet, not an agent wallet.","status":"fail","failing":6641,"ms":15,"sample":[{"wallet":"eip155:8453:0x00048bfe5972a462c5ca6adc2e373f2b49c4874d","identities":3},{"wallet":"eip155:8453:0x0008748e281e15ad766b1b6e253df3f4bb2b7a3c","identities":9},{"wallet":"eip155:8453:0x000cbdd00cc6342686adaf26abe9d9bd05cc660d","identities":3},{"wallet":"eip155:8453:0x00206177b967e814ce16eab987eaeb174631c14d","identities":3},{"wallet":"eip155:8453:0x0022d48b9297cff8dfaf615d3c5323530c78e10e","identities":3}]},{"id":"snapshot_not_finite","table":"snapshots","dimension":"validity","severity":"block","weight":2,"baseline":false,"what":"A published value is null, NaN or infinite.","status":"pass","failing":0,"ms":0},{"id":"snapshot_from_future","table":"snapshots","dimension":"validity","severity":"block","weight":2,"baseline":false,"what":"A published value claims a timestamp in the future.","status":"pass","failing":0,"ms":0},{"id":"snapshot_rate_out_of_range","table":"snapshots","dimension":"validity","severity":"block","weight":2,"baseline":false,"what":"A published rate or share is below 0 or above 1. A negative share was once published live.","status":"pass","failing":0,"ms":1},{"id":"series_missing_definition","table":"series","dimension":"completeness","severity":"warn","weight":2,"baseline":false,"what":"A metric was written in the last day without a definition id, so /def cannot explain it.","status":"pass","failing":0,"ms":21},{"id":"acp_negative_amount","table":"acp_jobs","dimension":"validity","severity":"block","weight":1,"baseline":false,"what":"An ACP job has a negative amount.","status":"pass","failing":0,"ms":7},{"id":"acp_paid_exceeds_funded","table":"acp_jobs","dimension":"consistency","severity":"warn","weight":1,"baseline":false,"what":"An ACP job paid out more than it was funded with (outside rounding).","status":"pass","failing":0,"ms":2},{"id":"bankr_address_format","table":"bankr_launches","dimension":"validity","severity":"block","weight":1,"baseline":false,"what":"A Bankr token, deployer or fee recipient is not a lowercase address.","status":"pass","failing":0,"ms":931},{"id":"bankr_fee_split","table":"bankr_launches","dimension":"consistency","severity":"warn","weight":1,"baseline":false,"what":"Bankr's platform plus creator fee exceeds the total fee it reported for the same token.","status":"pass","failing":0,"ms":32},{"id":"bankr_negative_fee","table":"bankr_launches","dimension":"validity","severity":"block","weight":1,"baseline":false,"what":"A cited Bankr fee is negative.","status":"pass","failing":0,"ms":34},{"id":"partner_shared_flag","table":"partner_identities","dimension":"consistency","severity":"block","weight":1,"baseline":false,"what":"A wallet declared by several partner identities is not flagged as shared, so it could count as an agent wallet.","status":"pass","failing":0,"ms":218},{"id":"x402_address_format","table":"x402_recipients","dimension":"validity","severity":"block","weight":1,"baseline":false,"what":"A named x402 seller is not a lowercase address, so payments to it are never attributed.","status":"pass","failing":0,"ms":7},{"id":"cursor_stalled","table":"partner_cursors","dimension":"freshness","severity":"warn","weight":2,"baseline":false,"what":"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.","status":"pass","failing":0,"ms":1},{"id":"catalogue_full_pass","table":"partner_cursors","dimension":"freshness","severity":"warn","weight":2,"baseline":false,"what":"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.","status":"pass","failing":0,"ms":0},{"id":"registration_from_future","table":"registrations","dimension":"validity","severity":"block","weight":2,"baseline":false,"what":"A registration claims to have been minted in the future.","status":"pass","failing":0,"ms":1},{"id":"waitlist_email_format","table":"waitlist","dimension":"validity","severity":"warn","weight":1,"baseline":false,"what":"A waitlist entry does not look like an email address. Only a hash is returned: this table holds personal data.","status":"pass","failing":0,"ms":2}]}