@bucksonchain0 Your first two points and the test vector are in the draft and the reference now (GitHub - priors-agents/erc-agent-income-statements: Draft ERC: public, chained statements of what an agent's ERC-8004 agentWallet received, one leaf per transfer, rebuildable from token logs · GitHub, commit ea30aba). I checked your figures against Robinhood Chain first. They rebuild as you give them, with one difference, below.
Owner money: the settlement-contracts line in Security Considerations now names bridges and solvers. It also says that a fill can be a lone Transfer from the solver, as your Relay fill is: nothing else in its transaction names who paid on Base. A new line says it plainly. The payment rules leave out only the owner’s own address, so the log alone cannot tell a payer’s money from the owner’s when the owner sends it from another of its addresses or bridges it in through a solver. Readers that want income should treat addresses linked to the owner as the owner’s: addresses whose funds came from the owner or from payTo, and a fill that relays the owner’s own transfer from another chain.
The difference: your 5.00 from 0x0552…2ce3 is at block 89,378,384, before #8811 was minted at 89,385,625. No window can start before the agent exists, so it is in no statement. A statement from registration through block 95,159,838 counts the other ten transfers, 30.33 USDG, and the bridged 15.93 alone is more than half of that.
Labels: no class per leaf, and the Rationale says why. A file carries its root and a few anchors, not its leaves, so a class for every leaf would have to sit in the leaf hash. The root would then no longer rebuild from logs: a full rebuild would need the writer’s labels as input, and verifyPayment would prove a label no log supports. Outside the hash, a class would reach the anchors only. Either way it would be the claim of a writer the owner may have named, and the owner is the party that gains from calling its own money a customer’s. Instead, Security Considerations list what a reader can derive from the chain and its own address lists, and your wallet shows each case. All three swaps carry the pool’s swap event in a transaction the wallet sent itself. The loan draw is a transaction the wallet sent to the pool, with the pool’s own event. The Relay fill is resolved as above. How a transfer was settled says nothing about the payer either: your test buyer’s three x402 calls settled exactly as the customer’s did, through the same facilitator, AuthorizationUsed and then Transfer.
Test vector: your transaction is in the Test Cases as “A payment on chain”. The owner and payTo are one address and the payer is neither, so the transfer is a payment. Its leaf hash, computed with cast from the logs, is 0xf87837f67578cc0593869d5409d2310e50e12de8c3da89b92a5e6cd45805b12f. That hash is the root of a window over block 94,630,540, and verifyPayment proves it with an empty proof. Given the agent’s two change logs (the mint at log 1 and agentWallet at log 4 of block 89,385,625) and the wallet’s USDG transfers, the reference writer writes that window with that root. Claimed as the owner’s, the same transfer fails, and a window before the mint has no owner.
Five new tests check the vector (93 in all). They also pass on the previous reference, since the vector needed no change to it, and each one fails when we break what it checks: with the leaf as it was before fd87aa9, without the owner, the hash is another.
Score v2: you are right, and the fault is ours, in the indexer, not in the rules. Your 1.00 x402 payment meets every condition Score v2 sets. It stayed out because the indexer holds a new payer’s payments until it has read that payer’s outgoing transfers, to net out money sent back, and since 2026-10-11 that read never ran: each refresh gave its time to the payment backfills first, and they used all of it. So the published receipts were 0 for every agent, not only #8811. The fix, live since today, runs that read first; SCORE-v2.md now says that a new payer’s payments wait for it. The backlog takes some hours to clear, and I will post here when the board shows your payment.