<?xml version='1.0' encoding='UTF-8'?>
<rfc category="info" consensus="false" docName="draft-zhang-ioa-usage-accounting-01" ipr="trust200902" tocInclude="true" sortRefs="true" version="3">
  <front>
    <title abbrev="Verifiable Usage Accounting for IoA">Verifiable Usage Accounting for Internet of Agents</title>
    <author fullname="Lianhua Zhang" initials="L." surname="Zhang">
      <organization>AsiaInfo Technologies (China) Inc.</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100000</code>
          <country>China</country>
        </postal>
        <email>zhanglh2@asiainfo.com</email>
      </address>
    </author>
    <author fullname="Wen Qiao" initials="W." surname="Qiao">
      <organization>AsiaInfo Technologies (China) Inc.</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100000</code>
          <country>China</country>
        </postal>
        <email>qiaowen@asiainfo.com</email>
      </address>
    </author>
    <author fullname="Wei Zhang" initials="W." surname="Zhang">
      <organization>AsiaInfo Technologies (China) Inc.</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100000</code>
          <country>China</country>
        </postal>
        <email>zhangwei41@asiainfo.com</email>
      </address>
    </author>
    <author fullname="Huiling Yang" initials="H." surname="Yang">
      <organization>AsiaInfo Technologies (China) Inc.</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100000</code>
          <country>China</country>
        </postal>
        <email>yanghl10@asiainfo.com</email>
      </address>
    </author>
    <author fullname="Yun Li" initials="Y." surname="Li">
      <organization>AsiaInfo Technologies (China) Inc.</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100000</code>
          <country>China</country>
        </postal>
        <email>liyun9@asiainfo.com</email>
      </address>
    </author>
    <date day="2" month="November" year="2026"/>
    <abstract>
      <t>This document describes a usage accounting and evidence framework for the Internet of Agents (IoA).  In cross-domain agent collaboration, agents may attach to gateways, discover capabilities, delegate subtasks, invoke tools, consume model or compute resources, and produce auditable outcomes.  Existing application logs or platform-specific billing interfaces are insufficient for interoperable accounting across agents, gateways, and administrative domains.</t>
      <t>This document defines requirements and a common object model for verifiable usage accounting, including Accounting Contexts, Metering Profiles, Measurement Dimensions, Usage Event Records, and Accounting Evidence References.  These objects are intended to support interoperable recording, correlation, export, verification, correction, and dispute handling for agent collaboration events.</t>
      <t>This document does not define pricing, charging policy, token issuance, financial settlement, revenue-sharing rules, invoices, or business support system interfaces.  It focuses on protocol-visible accounting records and evidence objects that may be used by other systems.</t>
      <t>The framework distinguishes unavailable measurements from measured zero, defines non-overlapping aggregation and correction requirements, and separates record integrity from verification of usage values or outcomes. These requirements constrain accounting behavior without prescribing a new transport or settlement mechanism.</t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t>The Internet of Agents (IoA) envisions large-scale collaboration among autonomous or semi-autonomous agents across domains, vendors, networks, and execution environments.  Agents may act on behalf of users, services, organizations, or other agents.  They may also interact through Agent Gateways, agent-to-agent session protocols, capability directories, task protocols, tool invocation interfaces, and model services.</t>
      <t>Once agents collaborate across administrative domains, a system needs a common way to record what occurred during the collaboration.  A task may be decomposed into subtasks, delegated to several agents, routed through gateways, and completed by invoking models, tools, data services, or network functions.  The resulting usage information is useful for resource accounting, cost allocation, audit, operational analysis, quota control, accountability, and dispute handling.</t>
      <t>Existing application logs, local billing records, or platform-specific usage APIs do not provide a common cross-domain accounting view.  They often lack stable task correlation, gateway provenance, signed evidence references, usage-category semantics, measurement-dimension declarations, privacy-controlled export, and correction semantics.  In addition, coarse-grained records such as "API request count" or "total input/output tokens" do not distinguish between orchestration, execution, tool invocation, delegated subtasks, reasoning or inference cost, gateway mediation, and result verification.</t>
      <t>This document defines a protocol-visible object model for verifiable usage accounting in IoA.  It is inspired by existing Internet accounting and measurement work, including accounting management concepts <xref target="RFC2975"/>, network access accounting <xref target="RFC2866"/>, and flow information export <xref target="RFC7011"/>.  However, the objects defined here are intended for agent collaboration rather than packet flows or network access sessions.</t>
      <t>The key design principle is separation between accounting facts and business charging.  This document defines usage accounting contexts, metering profiles, measurement dimensions, event records, and evidence references.  It does not define prices, tariffs, token economics, revenue sharing, invoices, or financial settlement.</t>
      <t>In this document, verifiable means that a receiver can evaluate explicitly identified accounting claims using declared measurement rules, provenance, and evidence. It does not imply that every reported value is independently measured, that every event has been observed, or that a signed record proves that a task succeeded or a payment occurred.</t>
    </section>
    <section>
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/>
        <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      <dl newline="true">
        <dt>Agent</dt>
        <dd>An autonomous or semi-autonomous software entity that can perform tasks, invoke tools, interact with other agents, or act on behalf of a user, service, or organization.</dd>
        <dt>Agent Gateway</dt>
        <dd>A gateway that mediates agent attachment, registration, discovery handoff, policy enforcement, routing, accounting, or interconnection between agents or domains.</dd>
        <dt>Accounting Context</dt>
        <dd>A scoped object that binds accounting-relevant identifiers, policies, metering profiles, and evidence requirements for a task, invocation, session, or gateway-mediated collaboration.</dd>
        <dt>Metering Profile</dt>
        <dd>A description of supported usage categories, measurement dimensions, aggregation behavior, privacy constraints, and evidence requirements for a capability, agent, gateway, or accounting domain.</dd>
        <dt>Measurement Dimension</dt>
        <dd>A declaration of what is measured, which unit is used, the applicable usage category or modality, and how the value is obtained and aggregated.</dd>
        <dt>Usage Event Record</dt>
        <dd>A structured record describing an observed accounting-relevant event, such as task start, delegation, tool invocation, model inference, workflow step completion, or task result verification.</dd>
        <dt>Accounting Evidence Reference</dt>
        <dd>A reference to integrity-protected evidence that supports a Usage Event Record, such as a signature, receipt, hash, authorization reference, execution trace, result attestation, or human confirmation record.</dd>
        <dt>Usage Unit</dt>
        <dd>A unit used by a Measurement Dimension to express measured values.  Examples include token, byte, millisecond, second, frame, pixel, request, operation, step, and standard-compute-unit.</dd>
        <dt>Standard Compute Unit (SCU)</dt>
        <dd>A normalized Usage Unit used by a Measurement Dimension to express compute resource consumption across heterogeneous models, tools, or execution environments.  This document treats SCU as a profile-defined unit and does not define its calibration, exchange rate, or pricing model.</dd>
        <dt>Verified Result Event</dt>
        <dd>A record indicating that a task outcome has been verified according to a declared policy, such as successful ticket closure, approved transaction completion, or confirmed network fault localization.</dd>
        <dt>Accounting Domain</dt>
        <dd>An administrative domain responsible for generating, validating, exporting, or retaining accounting records.</dd>
        <dt>Exporter</dt>
        <dd>An entity that exports Usage Event Records or accounting summaries to another entity.</dd>
        <dt>Collector</dt>
        <dd>An entity that receives Usage Event Records or accounting summaries from an Exporter.</dd>
        <dt>Measurement Availability</dt>
        <dd>Whether a dimension has a reported value, is unavailable, is not applicable, or is withheld under policy. This is separate from the task result and the method used to obtain a value.</dd>
        <dt>Coverage</dt>
        <dd>The declared population, interval, invocations, or child tasks covered by a record or summary, and whether that view is complete within its declared boundary.</dd>
        <dt>Record Retransmission</dt>
        <dd>Delivery again of the same immutable accounting assertion; it does not represent another execution attempt.</dd>
        <dt>Execution Attempt</dt>
        <dd>A distinct attempt to invoke a service or execute work, even when it retries the same logical operation.</dd>
      </dl>
    </section>
    <section>
      <name>Scope and Non-Goals</name>
      <t>This document specifies:</t>
      <ul>
        <li>a common object model for verifiable usage accounting in IoA deployments;</li>
        <li>requirements for Accounting Contexts, Metering Profiles, Measurement Dimensions, Usage Event Records, and Accounting Evidence References;</li>
        <li>usage event categories suitable for task, invocation, delegation, model, tool, gateway, workflow, and result events;</li>
        <li>requirements for event correlation, evidence binding, cross-domain export, correction, and dispute handling; and</li>
        <li>privacy and security considerations for accounting records.</li>
      </ul>
      <t>This document does not specify:</t>
      <ul>
        <li>pricing, tariffs, rating algorithms, charging policy, invoices, revenue sharing, token issuance, token exchange, or financial settlement;</li>
        <li>a general-purpose business support system, online charging system, payment protocol, or financial ledger;</li>
        <li>a discovery query protocol, routing algorithm, task orchestration protocol, or agent-to-agent message exchange protocol;</li>
        <li>a complete identity, credential issuance, or trust framework;</li>
        <li>a mandatory serialization format or transport protocol in this version; or</li>
        <li>a normative definition of SCU calibration, VPT calculation, model pricing, or business-result valuation.</li>
      </ul>
    </section>
    <section>
      <name>Architectural Context</name>
      <t>An IoA deployment may contain Requesting Agents, Serving Agents, Agent Gateways, Accounting Exporters, Accounting Collectors, and Evidence Verifiers.  The accounting model can be used with gateway-mediated interaction, direct agent-to-agent interaction, or a combination of both.  A gateway is a common observation and enforcement point, but the object model does not require every event to be observed by the same gateway.</t>
      <t>The core relationship among the accounting objects is shown in Figure 1.  An Accounting Context defines the scope of accounting for a task, session, invocation, or collaboration.  A Metering Profile defines how usage is measured and what evidence is required.  Usage Event Records describe individual accounting-relevant events within that context.  Accounting Evidence References bind records to signatures, hashes, receipts, authorization references, trace evidence, result attestations, or human confirmations.</t>
      <figure>
        <name>Core Accounting Object Relationships</name>
        <artwork>
+------------------------------------------------------+
|                 Accounting Context                   |
|  - task/session/invocation identifiers               |
|  - accounting domain and observation scope           |
|  - policy, privacy, and evidence requirements        |
+---------------------------+--------------------------+
                            |
                            | references
                            v
+------------------------------------------------------+
|                  Metering Profile                    |
|  - usage categories and measurement dimensions       |
|  - aggregation, privacy, and export behavior         |
|  - required evidence and correction behavior         |
+---------------------------+--------------------------+
                            |
                            | applies to
                            v
+------------------------------------------------------+
|                Usage Event Records                   |
|  - task, delegation, model, tool, gateway events     |
|  - usage measurements, result status, sequence       |
+---------------------------+--------------------------+
                            |
                            | supported by
                            v
+------------------------------------------------------+
|            Accounting Evidence References            |
|  - signatures, hashes, receipts                      |
|  - authorization, trace, result, confirmation        |
+------------------------------------------------------+
        </artwork>
      </figure>
      <t>Figure 2 illustrates how these objects are used during a cross-domain collaboration.  The accounting context is normally established before or during task/session setup.  Usage event records are generated as the collaboration proceeds.  Evidence references are attached when records require later verification.  Exporters can then send records or summaries to collectors according to the Metering Profile and privacy policy.</t>
      <figure>
        <name>Accounting Flow in Cross-Domain Agent Collaboration</name>
        <artwork>
Requesting Agent    Gateway A        Gateway B     Serving Agent
      |              Exporter        Collector           |
      |                  |                |              |
      | 1. setup / invocation handoff                    |
      |-----------------&gt;|---------------&gt;|-------------&gt;|
      |                  |                |              |
      | 2. establish Accounting Context and profile      |
      |&lt;----------------&gt;|&lt;--------------&gt;|&lt;------------&gt;|
      |                  |                |              |
      | 3. task execution, delegation, model/tool use    |
      |-----------------&gt;|---------------&gt;|-------------&gt;|
      |                  |                |              |
      | 4. generate Usage Event Records                  |
      |                  |&lt;---observe----&gt;|              |
      |                  |                |              |
      | 5. bind Evidence References                      |
      |                  |---sign/hash---&gt;|              |
      |                  |                |              |
      | 6. export records or summaries                   |
      |                  |---------------&gt;|              |
      |                  |                |              |
      | 7. correction or dispute evidence, if needed     |
      |                  |&lt;--------------&gt;|              |
        </artwork>
      </figure>
      <t>The accounting model is not required to expose agent internals or raw prompt content.  A gateway or platform may generate summary records, privacy-preserving digests, or evidence references according to local policy.  For example, an exported record can indicate that a result was verified and signed by a gateway without disclosing the raw ticket, prompt, tool output, or business data used to make that determination.</t>
    </section>
    <section>
      <name>Accounting Object Model</name>
      <section>
        <name>Accounting Context</name>
        <t>An Accounting Context defines the scope within which Usage Event Records are correlated and interpreted.  An Accounting Context MAY be established during agent attachment, capability registration, discovery handoff, task creation, session establishment, or invocation setup.</t>
        <t>An Accounting Context SHOULD contain the following fields:</t>
        <ul>
          <li>accounting-context-id: a stable identifier for the accounting context;</li>
          <li>accounting-domain-id: the domain that asserts or manages the context;</li>
          <li>gateway-id: the gateway that created or accepted the context, when applicable;</li>
          <li>agent-id or agent-did: the agent identifier associated with the context, when available;</li>
          <li>task-id, session-id, invocation-id, or trace-id: identifiers used for correlation;</li>
          <li>subject-ref: a reference to the user, organization, service, or agent on whose behalf the task is performed, when policy permits;</li>
          <li>policy-ref: a reference to applicable policy, quota, authorization, or consent information;</li>
          <li>metering-profile-ref: a reference to the Metering Profile that applies to the context;</li>
          <li>evidence-policy: requirements for signatures, receipts, retention, redaction, or result verification;</li>
          <li>validity: start time, expiration time, and freshness constraints; and</li>
          <li>privacy-scope: constraints on disclosure, aggregation, and export.</li>
        </ul>
        <t>An Accounting Context MUST be unambiguous within the accounting domain that asserts it.  If a context is propagated across domains, each receiving entity MUST be able to determine the asserting entity, the validity of the context, and the applicable disclosure constraints.</t>
        <t>Cross-domain correlation SHOULD include a namespaced origin, context identifier, and, when used, parent and root context references. A reference MUST identify its asserting domain or namespace so that similarly named local tasks cannot be silently merged. These links identify accounting relationships; they do not prove delegation authorization or causality.</t>
      </section>
      <section>
        <name>Metering Profile</name>
        <t>A Metering Profile describes the accounting behavior supported or required by an agent, capability, gateway, service, or accounting domain.</t>
        <t>A Metering Profile MAY be referenced by a gateway capability directory entry, capability advertisement, task object, handoff reference, session setup message, or policy object.  If multiple profiles apply, the effective profile MUST be determined according to local policy and MUST be auditable.</t>
        <t>A record used for cross-domain reconciliation MUST identify the Metering Profile and its version. A receiver MUST NOT reinterpret historical records under a later profile merely because their dimension names are unchanged. A dimension used in an aggregate MUST have an unambiguous namespace, unit, method, coverage boundary, and combination rule. Unknown required rules leave the affected aggregate unresolved.</t>
        <section>
          <name>Profile Structure</name>
          <t>A Metering Profile SHOULD specify:</t>
          <ul>
            <li>profile-id and version;</li>
            <li>supported usage categories;</li>
            <li>supported measurement dimensions, such as token usage, multimodal generation or processing parameters, latency, gateway routing attributes, and quota state;</li>
            <li>required measurement methods;</li>
            <li>required evidence types;</li>
            <li>aggregation behavior, such as per-event, per-task, per-session, per-window, or summary-only;</li>
            <li>correction behavior, such as whether corrected records can be emitted and how they reference original records;</li>
            <li>privacy behavior, including redaction, pseudonymization, minimization, and selective disclosure; and</li>
            <li>export behavior, including push, pull, batch, streaming, or local-only retention.</li>
          </ul>
        </section>
        <section>
          <name>Measurement Dimensions</name>
          <t>A Metering Profile MAY declare one or more measurement dimensions.  A measurement dimension identifies what is measured, the unit used for the measurement, the applicable modality or usage category, and how the value is obtained and aggregated.  Measurement dimensions provide a common way to describe text-token usage, model inference usage, multimodal processing usage, gateway usage, quota state, workflow usage, and verified-result usage.</t>
          <t>A measurement dimension SHOULD contain:</t>
          <ul>
            <li>dimension-id: a stable identifier for the dimension;</li>
            <li>dimension-name: a human-readable name;</li>
            <li>usage-category: the usage category to which the dimension applies;</li>
            <li>modality: text, image, video, audio, speech, multimodal, or another modality when applicable;</li>
            <li>unit: the unit of measurement, such as token, byte, millisecond, second, frame, pixel, request, operation, step, or standard-compute-unit;</li>
            <li>value-type: integer, decimal, boolean, string, enumeration, or structured value;</li>
            <li>measurement-method: observed, provider-reported, estimated, sampled, aggregated, normalized, derived, corrected, or verified; a verified value additionally identifies the verifier, checked claim, method, and evidence;</li>
            <li>aggregation-scope: per-request, per-output, per-inference, per-tool-call, per-task, per-session, per-time-window, or summary-only;</li>
            <li>normalization-reference: a reference to a normalization profile when the dimension uses a normalized unit such as SCU; and</li>
            <li>privacy-class: an indication of whether the dimension is usage-only metadata, pseudonymous metadata, sensitive metadata, content-derived metadata, or subject to stricter disclosure policy.</li>
          </ul>
          <t>Examples of measurement dimensions include input-token-count, output-token-count, total-token-count, cached-token-count, reasoning-token-count, processing-time-ms, request-count, transferred-bytes, quota-used, quota-limit, image-count, image-pixel-count, image-quality-level, video-duration-seconds, frame-rate, audio-duration-seconds, sample-rate, channel-count, tool-call-count, workflow-step-count, delegation-count, verified-result-count, and standard-compute-usage.</t>
          <t>The usage-category of each Measurement Dimension SHOULD be one of the supported usage categories declared by the Metering Profile, unless the dimension is explicitly marked as extension-specific.</t>
          <t>Reasoning or chain-of-thought resource consumption can be represented as a measurement dimension, such as reasoning-token-count or reasoning-compute-duration.  This document only accounts for the resource usage of such reasoning processes; it does not require or encourage disclosure of chain-of-thought content.</t>
          <t>Measurement dimensions are accounting metadata.  They do not define a pricing model, charging rule, tariff, or business valuation method.</t>
          <t>Dimension labels do not establish comparability. Token counts MUST identify the applicable model/tokenizer or provider counting convention, whether cached input is included, and whether reasoning tokens are included in output. A total-token dimension MUST declare its formula and the overlap relationships among component counters. A cached or reasoning subset MUST NOT be added again to a total that already includes it.</t>
          <t>Normalized units such as SCU require an identified normalization profile and version, including calibration assumptions and input units. Equal SCU labels alone do not make two reports comparable. Values produced by incompatible counting or normalization conventions MUST NOT be combined as a single comparable total without an explicitly declared conversion and its provenance.</t>
        </section>
        <section>
          <name>Content Recording and Export Behavior</name>
          <t>A Metering Profile SHOULD specify content recording behavior.  Supported behavior can include disabled, digest-only, metadata-only, excerpt-only, or full-content recording under explicit policy.  Full-content recording MUST NOT be the default behavior for cross-domain export.</t>
          <t>A Metering Profile SHOULD also specify export behavior, including whether records are retained locally, exported as per-event records, exported as summaries, exported in batches, streamed to a collector, or exported only through evidence references.  Export behavior MUST be evaluated together with the privacy behavior and evidence requirements of the profile.</t>
        </section>
      </section>
      <section>
        <name>Usage Event Record</name>
        <t>A Usage Event Record describes an observed accounting-relevant event.  It is not required to contain all raw operational data.  It SHOULD contain enough information to support correlation, aggregation, verification, correction, and dispute handling.</t>
        <t>A Usage Event Record SHOULD contain the following fields:</t>
        <ul>
          <li>record-id: a unique identifier for the record;</li>
          <li>accounting-context-id: the Accounting Context to which the record belongs;</li>
          <li>event-type: the event type, such as task-start, tool-call, or task-complete;</li>
          <li>event-time: the asserted occurrence time, when known; observation-time and received-time are distinct values and MUST NOT silently replace an unknown occurrence time;</li>
          <li>observation-point: the gateway, agent, tool adapter, or platform component that observed the event;</li>
          <li>request-metadata: request identifier, start time, completion time, client address or pseudonymous client reference, path, method, consumer reference, API key reference, or equivalent metadata, subject to privacy policy;</li>
          <li>route-service-info: route name, backend cluster, model identifier, provider identifier, modality, or service binding reference;</li>
          <li>actor-ref: the agent, gateway, user, or service that performed or initiated the event, subject to privacy policy;</li>
          <li>target-ref: the agent, model, tool, service, resource, or task object affected by the event, subject to privacy policy;</li>
          <li>usage-category: a category such as orchestration, execution, tool-invocation, model-inference, gateway-forwarding, workflow, or result-verification;</li>
          <li>usage-measurements: one or more measured values keyed by measurement dimension identifiers declared in the applicable Metering Profile;</li>
          <li>quota-state: rate-limit decision, rate-limit status code, throttling state, or rejection reason when the event is affected by quota or rate-limit policy;</li>
          <li>content-ref: a reference, digest, redacted excerpt, or policy-controlled pointer to request or response content when content recording is enabled;</li>
          <li>result-status: started, in-progress, completed, failed, cancelled, degraded, corrected, disputed, or verified;</li>
          <li>sequence-info: ordering or deduplication information;</li>
          <li>evidence-ref: one or more Accounting Evidence References; and</li>
          <li>signature or integrity-ref: a signature, MAC, hash, or reference to integrity protection.</li>
        </ul>
        <t>A Usage Event Record that is exported across administrative domains MUST include enough provenance information for the receiver to identify the asserting gateway, platform, or accounting domain.  The receiver MUST NOT treat a record as verified solely because it is syntactically valid.</t>
        <t>For cross-domain records subject to retransmission or reconciliation, the asserting origin and record-id MUST identify an immutable assertion. The applicable context, profile version, operation/attempt reference, and measurement availability and coverage information MUST be supplied directly or by an unambiguous reference when required to interpret the measurements. Bare numeric values are permitted only where the profile fixes their method, availability convention, and coverage.</t>
        <t>Source assertions and collector findings MUST be distinguishable. A receiver SHOULD retain its validation result, evaluation time, policy/profile version, and reason for any unresolved or rejected finding without overwriting the source statement.</t>
      </section>
      <section>
        <name>Accounting Evidence Reference</name>
        <t>An Accounting Evidence Reference links a Usage Event Record to evidence that supports the record.  This document does not require a particular evidence format.  Implementations may use existing mechanisms such as JOSE <xref target="RFC7515"/>, COSE <xref target="RFC9052"/>, JWT <xref target="RFC7519"/>, CWT <xref target="RFC8392"/>, or selective disclosure mechanisms where appropriate.</t>
        <t>An Accounting Evidence Reference SHOULD contain:</t>
        <ul>
          <li>evidence-id;</li>
          <li>evidence-type: signature, receipt, trace-hash, authorization-ref, consent-ref, result-attestation, human-confirmation, policy-decision, downgrade-decision, correction, or dispute-reference;</li>
          <li>evidence-location: embedded, local, URI, digest-only, or unavailable due to policy;</li>
          <li>digest and digest-algorithm, when evidence is not embedded;</li>
          <li>asserting-entity;</li>
          <li>verification-method;</li>
          <li>validity or retention period; and</li>
          <li>disclosure-policy.</li>
        </ul>
        <t>Evidence references MUST NOT require disclosure of raw prompts, tool results, personal data, or sensitive operational data unless such disclosure is allowed by policy and necessary for the accounting purpose.</t>
      </section>
    </section>
    <section>
      <name>Usage Event Categories</name>
      <t>The following initial usage event categories are defined for interoperability.  Future specifications may extend this list.</t>
      <dl newline="true">
        <dt>orchestration</dt>
        <dd>Usage associated with intent interpretation, planning, task decomposition, routing decisions, state management, or coordination prompts.</dd>
        <dt>execution</dt>
        <dd>Usage associated with an agent or sub-agent performing a concrete task step.</dd>
        <dt>tool-invocation</dt>
        <dd>Usage associated with invoking an external tool, function, API, database, network function, or resource server.</dd>
        <dt>model-inference</dt>
        <dd>Usage associated with model invocation, including input units, output units, reasoning units, compute duration, or normalized compute units.</dd>
        <dt>multimodal-processing</dt>
        <dd>Usage associated with image, video, audio, speech, or other non-text modality generation or processing.</dd>
        <dt>quota-control</dt>
        <dd>Usage or decision events associated with quota consumption, rate-limit checks, throttling, or rejection.</dd>
        <dt>gateway-forwarding</dt>
        <dd>Usage associated with gateway mediation, forwarding, policy checks, protocol translation, or cross-domain handoff.</dd>
        <dt>workflow</dt>
        <dd>Usage associated with workflow steps, task-state changes, retries, cancellation, fallback, pause, resume, or escalation.</dd>
        <dt>result-verification</dt>
        <dd>Usage associated with verification of task results, human confirmation, external validation, or business-outcome confirmation.</dd>
        <dt>correction</dt>
        <dd>A record that corrects or supersedes a previous record.</dd>
        <dt>dispute</dt>
        <dd>A record that indicates an accounting dispute, dispute evidence submission, or dispute resolution status.</dd>
      </dl>
      <t>These categories describe accounting semantics and do not imply any particular pricing or charging rule.</t>
    </section>
    <section>
      <name>Procedures</name>
      <section>
        <name>Accounting Context Establishment</name>
        <t>An Accounting Context MAY be established when an agent attaches to a gateway, a gateway accepts or creates a capability directory entry, a task is created or accepted, an invocation handoff is returned, a session or collaboration group is established, or a policy decision requires accounting or audit.</t>
        <t>The entity establishing the context MUST determine the applicable Metering Profile and evidence policy before usage events are exported across administrative domains.  If no compatible profile exists, the gateway or platform MAY reject the interaction, fall back to local-only accounting, or export only a minimal summary according to policy.</t>
        <t>Accounting Context establishment SHOULD be associated with the applicable authentication and authorization decisions. A context identifier, parent/child link, or authorization reference does not itself grant authority. Authorization evidence must be validated by the appropriate security mechanism for the current operation; accounting correlation MUST NOT substitute for that check.</t>
      </section>
      <section>
        <name>Usage Event Generation</name>
        <t>A gateway or platform component SHOULD generate a Usage Event Record when an accounting-relevant event is observed.  The granularity of event generation depends on the Metering Profile.</t>
        <t>Implementations SHOULD support at least task-start and task-complete or task-failed records, delegation records, tool-invocation records, model-inference or compute-usage records, and correction records.</t>
        <t>A Usage Event Record MUST include ordering or deduplication information if it can be retransmitted, corrected, or exported through multiple gateways or platforms.</t>
      </section>
      <section>
        <name>Evidence Binding</name>
        <t>A Usage Event Record SHOULD be bound to evidence according to the applicable evidence policy.  Evidence binding MAY be achieved by embedding evidence, including a digest, including a URI, or referencing a protected evidence store.</t>
        <t>Evidence binding SHOULD support integrity verification of the record, provenance verification of the asserting gateway or domain, correlation with authorization, consent, policy, or task context, result verification when a record asserts a verified outcome, and later dispute handling without exposing more data than necessary.</t>
        <t>If evidence is unavailable due to privacy, retention, or policy constraints, the record MUST indicate that evidence is unavailable and SHOULD include the reason class.</t>
      </section>
      <section>
        <name>Cross-Domain Export</name>
        <t>Gateways or platforms MAY export Usage Event Records or summaries to other gateways, platforms, or collectors.  Export behavior MUST follow the Metering Profile and privacy-scope constraints associated with the Accounting Context.</t>
        <t>Cross-domain export SHOULD support record authentication and integrity protection, replay protection, duplicate detection, batch and streaming export models, summary export when raw event export is not allowed, correction records, and receiver-side validation of provenance and freshness.</t>
        <t>A receiving entity MUST apply local policy before accepting exported accounting data for operational decisions.  A receiving entity SHOULD retain the source identifier, received time, verification status, and any transformation performed on the record.</t>
      </section>
      <section>
        <name>Correction and Dispute Handling</name>
        <t>Accounting records may require correction because of delayed events, clock skew, aggregation errors, task cancellation, gateway failures, or later result verification.</t>
        <t>A correction record MUST reference the original record or record set that it corrects.  It MUST indicate whether it replaces, amends, reverses, or annotates the original record.</t>
        <t>A dispute record SHOULD reference the disputed records, the accounting context, the asserting entity, the dispute reason, evidence references submitted by the disputing entity, and the dispute status.</t>
        <t>This document defines only protocol-visible dispute references and evidence objects.  It does not define arbitration rules, legal process, liability, compensation, or financial settlement.</t>
        <t>Corrections MUST be separate assertions with their own originating domain and record identifier, an exact target reference, and an explicit operation. Original records MUST remain available within the applicable retention policy. An authorized replacement supplies the effective value for its declared target scope instead of adding that value to the original. An annotation or dispute alone MUST NOT change a numerical total.</t>
        <t>A collector MUST validate the correction authority and deduplicate retransmitted corrections. A binding supporting amendments or reversals MUST define whether they carry deltas or replacement values, which dimensions they affect, their ordering basis, and how conflicting correction branches are handled. A received-time timestamp alone does not establish authority or a global revision order. Correction chains and aggregates derived from them MUST identify the effective revision or cutoff; unresolved conflicts MUST remain visible.</t>
      </section>
      <section anchor="availability">
        <name>Measurement Availability and Incomplete Coverage</name>
        <t>A measured zero is a value, not a default for an unavailable measurement. Producers and collectors MUST distinguish a reported value from unavailable, not-applicable, and policy-withheld measurements. A missing report, absent field, timeout, or inaccessible evidence MUST NOT be converted to a numeric zero. A serialization binding MUST define whether these states use omitted values, explicit status fields, or another unambiguous representation; null alone does not identify the reason.</t>
        <t>Availability is independent of measurement method and assurance. A provider-reported or estimated value can be available without being independently verified. A completed task can still have unavailable usage measurements. A rejected invocation can consume metering, orchestration, or gateway resources and MUST NOT be assigned zero solely because execution was rejected.</t>
        <t>A summary MUST identify its coverage boundary, observation interval where relevant, and any known missing contributors. Completeness is assessed against a declared or otherwise established expected set, not just the records that happened to arrive. Without that basis, a collector MUST NOT claim a globally complete task tree. Disclosure restrictions MAY limit the externally visible contributor list, but MUST NOT turn an incomplete view into an unqualified complete one.</t>
        <t>A partial sum MAY be reported as a lower bound only for additive non-negative dimensions with compatible scopes and no overlapping contributions. This interpretation does not apply automatically to balances, ratios, durations of overlapping work, or signed adjustments. Incomplete coverage does not erase a contradiction already established by the available evidence.</t>
      </section>
      <section anchor="aggregation">
        <name>Aggregation Boundaries and Delegated Work</name>
        <t>Every aggregate MUST state whether it covers local work only, an identified set of events, or a task subtree including descendants. A collector MUST NOT add an inclusive parent/subtree summary to the child records already included in it. A parent delegation event can describe dispatch or locally consumed orchestration resources, but MUST NOT silently copy child resource usage into local-only totals.</t>
        <t>The aggregation rule MUST define the contribution identity and distinguish raw observations from summaries of those observations. Reports from two observation points describing the same invocation are not automatically two independent quantities to be added. Conversely, the same context or trace identifier does not prove that two distinct execution attempts are duplicates. If overlap cannot be resolved, retain the observations and flag the affected aggregate as unresolved rather than silently choosing or summing them.</t>
        <t>Parent/root references provide correlation only. Before accepting a cross-domain attachment, the collector MUST validate namespace ownership and the accounting association under local policy or accepted evidence. An unvalidated child claim MUST NOT move usage into another tenant or principal's account. Rejected attachment does not justify destroying the separately attributable source report.</t>
        <t>Additivity is dimension-specific. Counts with disjoint contribution scopes may be summed; end-to-end latency, gauges, quota balances and sampled estimates require profile-defined rules. A collector MUST retain estimated, sampled and incomplete status through aggregation rather than presenting the result as an exact measured total.</t>
      </section>
      <section anchor="deduplication">
        <name>Retries, Duplicates, and Record Identity</name>
        <t>Retransmission of the same assertion MUST preserve its originating domain and record identifier. Receiving an identical assertion more than once MUST NOT increase accounted usage. The same origin and identifier with different content is a conflict that MUST be recorded and resolved before using either version as a uniquely accepted assertion; arrival order alone is not a sufficient resolution rule.</t>
        <t>Distinct execution attempts MUST have distinguishable attempt references even when they share a logical request identifier or idempotency key. If a service confirms that repeated requests refer to one execution, the binding SHOULD supply a stable execution reference for reconciliation. A timeout does not prove that execution failed or that consumption was zero. Accounting collection MUST NOT itself retry a potentially consequential operation merely to obtain a measurement.</t>
        <t>Streaming updates and cumulative usage snapshots from one invocation MUST NOT be summed as separate consumptions. The profile MUST define whether a report is a delta, an immutable final snapshot, or a superseding assertion, and specify how overlapping windows and late arrivals are handled. A transport acknowledgment indicates delivery only unless the binding explicitly assigns stronger acceptance semantics.</t>
      </section>
      <section anchor="verification">
        <name>Verification Claims and Evidence Limits</name>
        <t>A verifier MUST identify the claim checked, the asserting entity, the evidence and profile revisions used, and the applicable verification method. Its findings MUST distinguish a completed successful check, a completed failed check, and a check that could not be completed. Integrity, provenance, measurement consistency, coverage completeness, authorization and result validation are separate checks; success on one MUST NOT imply success on the others.</t>
        <t>A signature binds protected bytes to a signing key under its validation assumptions. A digest can bind a record to particular bytes when compared against a trusted reference. Neither mechanism alone proves that usage counters are accurate, an observation point was complete, an action occurred, a business result is correct, or a payment was settled. A hash chain can reveal some interior gaps given trusted sequencing information, but does not by itself prove that no final records were omitted. Completeness requires a declared expected set or other explicit coverage evidence.</t>
        <t>Evidence retrieval MUST be subject to local access policy, allowed destinations, bounded reference depth, time and size limits, and cycle/redirect handling. References MUST NOT be automatically trusted or fetched without these controls. A reference that cannot be resolved, has expired, or is withheld under policy leaves the affected claim unverified; it does not prove that the claimed event did not occur. Detailed outward error disclosure MAY be limited for privacy while retaining the internal finding.</t>
        <t>A verified result event MUST state the verification policy, verifier, outcome claim, and supporting evidence or the reason verification could not be completed. Human confirmation is a scoped assertion, not a universal correctness guarantee. The framework records verification and dispute findings but does not define legal responsibility or financial settlement.</t>
      </section>
    </section>
    <section anchor="related-work">
      <name>Relationship to Agent Run Metrics and Other Work</name>
      <t>Agent Run Metrics describes a JSON interchange format for run/step resource reports, including delegated-run attribution <xref target="AGENT-RUN-METRICS"/>. It can supply source measurements for this framework. A mapping MUST preserve its counting conventions, local versus subtree scope, reporter namespace, and missing-report status; no lossless or implemented mapping is claimed here. This document instead focuses on cross-domain contexts, evidence, export, collector findings and correction/dispute relationships, without mandating that format.</t>
      <t>Accounting context and parent/root references are distinct from dialog lifecycle management and do not grant operation authority. Directory visibility and semantic compatibility may help establish accounting context, but cannot verify a measured value. This framework can consume those inputs without redefining discovery, authorization, task execution, or settlement protocols.</t>
    </section>
    <section>
      <name>Illustrative JSON Objects</name>
      <t>The following examples are illustrative and are not a normative serialization profile.</t>
      <t>All added fields and status values below are logical illustrations, not a mandatory serialization or registered code set. Evidence locations marked unavailable are explicit limitations; these examples do not contain real signatures or claim completed verification.</t>
      <section>
        <name>Accounting Context Example</name>
        <figure>
          <sourcecode type="json"><![CDATA[{
  "accounting_context_id": "acctx-20260507-001",
  "accounting_domain_id": "example.net",
  "gateway_id": "agw-east-1",
  "task_id": "task-5gc-fault-1192",
  "session_id": "sess-71d1",
  "trace_id": "trace-88b7",
  "policy_ref": "policy://example.net/ioa/accounting/basic",
  "metering_profile_ref": "profile://example.net/scu-v1",
  "evidence_policy": {
    "signature_required": true,
    "result_evidence_required": true,
    "raw_prompt_export": false
  },
  "validity": {
    "not_before": "2026-05-07T06:00:00Z",
    "not_after": "2026-05-07T12:00:00Z"
  },
  "metering_profile_version": "1.1"
}
]]></sourcecode>
        </figure>
      </section>
      <section>
        <name>Metering Profile Example</name>
        <figure>
          <sourcecode type="json"><![CDATA[{
  "profile_id": "profile://example.net/scu-v1",
  "version": "1.1",
  "supported_usage_categories": [
    "tool-invocation",
    "model-inference",
    "multimodal-processing"
  ],
  "measurement_dimensions": [
    {
      "dimension_id": "input-token-count",
      "usage_category": "model-inference",
      "modality": "text",
      "unit": "token",
      "value_type": "integer",
      "measurement_method": "provider-reported",
      "aggregation_scope": "per-inference",
      "privacy_class": "usage-only"
    },
    {
      "dimension_id": "output-token-count",
      "usage_category": "model-inference",
      "modality": "text",
      "unit": "token",
      "value_type": "integer",
      "measurement_method": "provider-reported",
      "aggregation_scope": "per-inference",
      "privacy_class": "usage-only"
    },
    {
      "dimension_id": "standard-compute-usage",
      "usage_category": "tool-invocation",
      "unit": "standard-compute-unit",
      "value_type": "decimal",
      "measurement_method": "normalized",
      "aggregation_scope": "per-tool-call",
      "privacy_class": "usage-only",
      "normalization_reference":
        "https://example.net/metering/scu-v1"
    },
    {
      "dimension_id": "reasoning-token-count",
      "usage_category": "model-inference",
      "modality": "text",
      "unit": "token",
      "value_type": "integer",
      "measurement_method": "provider-reported",
      "aggregation_scope": "per-inference",
      "privacy_class": "usage-only"
    },
    {
      "dimension_id": "total-token-count",
      "usage_category": "model-inference",
      "modality": "text",
      "unit": "token",
      "value_type": "integer",
      "measurement_method": "derived",
      "aggregation_scope": "per-inference",
      "privacy_class": "usage-only"
    },
    {
      "dimension_id": "processing-time-ms",
      "usage_category": "tool-invocation",
      "unit": "millisecond",
      "value_type": "integer",
      "measurement_method": "observed",
      "aggregation_scope": "per-tool-call",
      "privacy_class": "usage-only"
    }
  ],
  "dimension_namespace": "https://example.net/ioa/dimensions/v1",
  "token_counting": {
    "convention_ref": "https://example.net/metering/token-v1",
    "reasoning_in_output": false,
    "cached_input_in_input": true,
    "total_formula": "input + output + reasoning"
  }
}
]]></sourcecode>
        </figure>
        <t>For these examples only, the token convention defines input, visible output and reasoning as disjoint counters, while cached input is a subset of input. Thus 1832 + 412 + 960 = 3204; a provider that already includes reasoning in output requires a different convention or an explicit mapping. The SCU reference is an illustrative profile identifier, not a calibration defined or validated by this draft.</t>
      </section>
      <section>
        <name>Model Inference Usage Event Record Example</name>
        <figure>
          <sourcecode type="json"><![CDATA[{
  "record_id": "uer-20260507-0038",
  "accounting_context_id": "acctx-20260507-001",
  "event_type": "model-inference",
  "event_time": "2026-05-07T06:12:45Z",
  "observation_point": "agw-east-1",
  "actor_ref": "agent:core-network-diagnosis",
  "target_ref": "model:diagnosis-llm-v1",
  "usage_category": "model-inference",
  "usage_measurements": {
    "input-token-count": 1832,
    "output-token-count": 412,
    "reasoning-token-count": 960,
    "total-token-count": 3204
  },
  "result_status": "completed",
  "sequence_info": {
    "sequence": 38
  },
  "evidence_ref": [
    {
      "evidence_id": "ev-0038",
      "evidence_type": "receipt",
      "evidence_location": "unavailable due to policy"
    }
  ],
  "metering_profile_version": "1.1",
  "asserting_domain": "example.net",
  "metering_profile_ref": "profile://example.net/scu-v1",
  "coverage_scope": "single-attempt",
  "attempt_id": "attempt-0038",
  "measurement_status": {
    "input-token-count": "available",
    "output-token-count": "available",
    "reasoning-token-count": "available",
    "total-token-count": "available"
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section>
        <name>Usage Event Record Example</name>
        <figure>
          <sourcecode type="json"><![CDATA[{
  "record_id": "uer-20260507-0037",
  "accounting_context_id": "acctx-20260507-001",
  "event_type": "tool-call",
  "event_time": "2026-05-07T06:12:43Z",
  "observation_point": "agw-east-1",
  "actor_ref": "agent:core-network-diagnosis",
  "target_ref": "tool:amf-log-analysis",
  "usage_category": "tool-invocation",
  "usage_measurements": {
    "standard-compute-usage": 1200,
    "processing-time-ms": 1840
  },
  "result_status": "completed",
  "sequence_info": {
    "sequence": 37
  },
  "evidence_ref": [
    {
      "evidence_id": "ev-0037",
      "evidence_type": "trace-hash",
      "evidence_location": "unavailable due to policy"
    }
  ],
  "metering_profile_version": "1.1",
  "asserting_domain": "example.net",
  "metering_profile_ref": "profile://example.net/scu-v1",
  "coverage_scope": "single-attempt",
  "attempt_id": "attempt-0037",
  "measurement_status": {
    "standard-compute-usage": "available",
    "processing-time-ms": "available"
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="missing-measurement">
        <name>Unavailable Measurement Is Not Zero</name>
        <t>The task completed, but the source counter cannot be established. No zero is inserted and an exact total requiring this counter is unavailable.</t>
        <sourcecode type="json" name="missing-measurement.json"><![CDATA[{
  "record_id": "m-1",
  "asserting_domain": "example.net",
  "result_status": "completed",
  "usage_measurements": {},
  "measurement_status": {
    "input-token-count": "unavailable"
  },
  "reason_class": "provider-meter-unreachable"
}
]]></sourcecode>
      </section>
      <section anchor="delegation-example">
        <name>Delegated Aggregation without Overlap</name>
        <t>Assume a validated association, one counting convention, and two disjoint local contributions. Use either the parent subtree total or the two local contributions, never both. If the child report is missing, the known local 100 is partial; the asserted summary 140 remains a separate claim whose coverage is not independently established.</t>
        <sourcecode type="json" name="delegation-example.json"><![CDATA[{
  "context": "task-1",
  "dimension": "input-token-count",
  "profile_version": "1.1",
  "local_records": [
    {
      "ref": "example.net/p-1",
      "value": 100
    },
    {
      "ref": "example.org/c-1",
      "value": 40
    }
  ],
  "parent_summary": {
    "value": 140,
    "scope": "subtree",
    "includes": [
      "example.net/p-1",
      "example.org/c-1"
    ]
  },
  "expected_total": 140
}
]]></sourcecode>
      </section>
      <section anchor="replacement-example">
        <name>Replacement Correction</name>
        <t>Under the preceding example and a validated correction authority, the child contribution becomes 35 and the effective total is 100 + 35 = 135. The old subtree assertion 140 is not silently rewritten; derived views must reference the correction or mark that summary stale. Redelivery of corr-1 does not subtract or add the correction again.</t>
        <sourcecode type="json" name="replacement-example.json"><![CDATA[{
  "record_id": "corr-1",
  "asserting_domain": "example.org",
  "operation": "replace",
  "target_ref": "example.org/c-1",
  "replacement_measurements": {
    "input-token-count": 35
  },
  "expected_task_total": 135
}
]]></sourcecode>
      </section>
      <section anchor="retry-example">
        <name>Transport Duplicate and Execution Retry</name>
        <t>Assume additive compatible units and two confirmed distinct attempts. The retransmitted r-1 is counted once; the distinct retry a-2 contributes its own consumption. If execution identity cannot be established, the overlap remains unresolved.</t>
        <sourcecode type="json" name="retry-example.json"><![CDATA[{
  "deliveries": [
    {
      "origin": "example.net",
      "record_id": "r-1",
      "attempt_id": "a-1",
      "value": 10
    },
    {
      "origin": "example.net",
      "record_id": "r-1",
      "attempt_id": "a-1",
      "value": 10
    },
    {
      "origin": "example.net",
      "record_id": "r-2",
      "attempt_id": "a-2",
      "value": 7
    }
  ],
  "expected_total": 17
}
]]></sourcecode>
      </section>
    </section>
    <section>
      <name>Privacy Considerations</name>
      <t>Usage accounting records can reveal sensitive information about users, organizations, agents, tasks, capabilities, tools, business workflows, network operations, and resource consumption.  Implementations MUST minimize disclosure according to the accounting purpose.</t>
      <t>Accounting records exported across domains SHOULD avoid raw prompts, raw tool outputs, personal data, confidential business data, and detailed operational logs unless explicitly authorized and necessary.  Privacy-preserving summaries, pseudonymous identifiers, redaction, selective disclosure, and digest-only evidence references SHOULD be used where possible.</t>
      <t>A Metering Profile SHOULD state whether records are event-level, aggregated, sampled, or summary-only.  It SHOULD also state retention expectations and disclosure constraints.</t>
      <t>The ability to correlate records across gateways or sessions can improve audit and dispute handling, but it can also enable tracking.  Accounting Context identifiers and trace identifiers SHOULD be scoped, rotated, or pseudonymized according to policy.</t>
      <t>Even content-free counters, timing, parent links and evidence locations can expose workload structure and tenant relationships. Exporters SHOULD minimize graph linkage, use scope-limited identifiers, and declare whether redaction changes coverage. A privacy-limited view MUST NOT be represented as a complete global view. Collectors SHOULD retain only evidence and linkage needed for the declared purpose.</t>
    </section>
    <section>
      <name>Security Considerations</name>
      <t>Accounting records may influence quota decisions, audit findings, operational analysis, and downstream business systems.  Attackers may attempt to forge, modify, replay, suppress, duplicate, delay, or selectively disclose records.</t>
      <t>Implementations SHOULD provide integrity protection, source authentication, replay protection, freshness validation, and duplicate detection for exported records.  Existing mechanisms such as TLS <xref target="RFC8446"/>, JOSE <xref target="RFC7515"/>, COSE <xref target="RFC9052"/>, JWT <xref target="RFC7519"/>, and CWT <xref target="RFC8392"/> may be used as appropriate.</t>
      <t>A receiving entity MUST NOT treat a Usage Event Record as trustworthy only because it is syntactically valid.  The receiving entity SHOULD validate the asserting domain, signature status, freshness, evidence references, and applicable policy.</t>
      <t>Records that contain usage values may be manipulated to inflate, suppress, or shift apparent usage.  Implementations SHOULD support correction records, evidence references, and audit trails for changes to accounting state.</t>
      <t>Result-verification records are especially sensitive because they may assert that a task outcome occurred.  Such records SHOULD be bound to evidence, policy, and verification method.  If human confirmation is used, the record SHOULD indicate the confirmation reference without exposing unnecessary personal data.</t>
      <t>Accounting data loss can affect auditability.  Implementations SHOULD consider reliable export, local buffering, non-volatile storage, acknowledgements, or retransmission where archival accounting is required by deployment policy.</t>
      <t>A record asserting a parent task, correction target or metering profile can redirect usage attribution across tenants. Receivers MUST validate the asserting namespace, permitted association, and correction authority before changing an accepted account view. Source authentication cannot establish that a meter was honest or complete. Unavailable measurements or evidence MUST remain distinguishable from measured zero and verified absence.</t>
    </section>
    <section>
      <name>IANA Considerations</name>
      <t>This document requests no IANA actions in this version.</t>
      <t>Future versions may request creation of registries for IoA Usage Event Types, IoA Usage Categories, IoA Measurement Dimensions, IoA Usage Units, IoA Measurement Methods, IoA Accounting Evidence Types, and IoA Accounting Result Status Values.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <references>
      <name>Informative References</name>
      <reference anchor="RFC2866" target="https://www.rfc-editor.org/info/rfc2866" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2866.xml">
        <front>
          <title>RADIUS Accounting</title>
          <author fullname="C. Rigney" initials="C." surname="Rigney"/>
          <date month="June" year="2000"/>
          <abstract>
            <t>This document describes a protocol for carrying accounting information between a Network Access Server and a shared Accounting Server. This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2866"/>
        <seriesInfo name="DOI" value="10.17487/RFC2866"/>
      </reference>
      <reference anchor="RFC2975" target="https://www.rfc-editor.org/info/rfc2975" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2975.xml">
        <front>
          <title>Introduction to Accounting Management</title>
          <author fullname="B. Aboba" initials="B." surname="Aboba"/>
          <author fullname="J. Arkko" initials="J." surname="Arkko"/>
          <author fullname="D. Harrington" initials="D." surname="Harrington"/>
          <date month="October" year="2000"/>
          <abstract>
            <t>This document describes and discusses the issues involved in the design of the modern accounting systems. The field of Accounting Management is concerned with the collection the collection of resource consumption data for the purposes of capacity and trend analysis, cost allocation, auditing, and billing. This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2975"/>
        <seriesInfo name="DOI" value="10.17487/RFC2975"/>
      </reference>
      <reference anchor="RFC7011" target="https://www.rfc-editor.org/info/rfc7011" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7011.xml">
        <front>
          <title>Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of Flow Information</title>
          <author fullname="B. Claise" initials="B." role="editor" surname="Claise"/>
          <author fullname="B. Trammell" initials="B." role="editor" surname="Trammell"/>
          <author fullname="P. Aitken" initials="P." surname="Aitken"/>
          <date month="September" year="2013"/>
          <abstract>
            <t>This document specifies the IP Flow Information Export (IPFIX) protocol, which serves as a means for transmitting Traffic Flow information over the network. In order to transmit Traffic Flow information from an Exporting Process to a Collecting Process, a common representation of flow data and a standard means of communicating them are required. This document describes how the IPFIX Data and Template Records are carried over a number of transport protocols from an IPFIX Exporting Process to an IPFIX Collecting Process. This document obsoletes RFC 5101.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="77"/>
        <seriesInfo name="RFC" value="7011"/>
        <seriesInfo name="DOI" value="10.17487/RFC7011"/>
      </reference>
      <reference anchor="RFC7515" target="https://www.rfc-editor.org/info/rfc7515" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
        <front>
          <title>JSON Web Signature (JWS)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7515"/>
        <seriesInfo name="DOI" value="10.17487/RFC7515"/>
      </reference>
      <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
        <front>
          <title>JSON Web Token (JWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7519"/>
        <seriesInfo name="DOI" value="10.17487/RFC7519"/>
      </reference>
      <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
        <front>
          <title>CBOR Web Token (CWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
          <date month="May" year="2018"/>
          <abstract>
            <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8392"/>
        <seriesInfo name="DOI" value="10.17487/RFC8392"/>
      </reference>
      <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
      <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml">
        <front>
          <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
          <author fullname="J. Schaad" initials="J." surname="Schaad"/>
          <date month="August" year="2022"/>
          <abstract>
            <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
            <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="96"/>
        <seriesInfo name="RFC" value="9052"/>
        <seriesInfo name="DOI" value="10.17487/RFC9052"/>
      </reference>
      <reference anchor="AGENT-RUN-METRICS" target="https://datatracker.ietf.org/doc/html/draft-arsentev-agent-run-metrics-02">
        <front>
          <title>Agent Run Metrics: A JSON Interchange Format for Resource Accounting of Language-Model Agent Runs</title>
          <author fullname="Evgenii Arsentev"/>
          <date year="2026" month="November" day="1"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-arsentev-agent-run-metrics-02"/>
      </reference>
    </references>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>RFC Editor: Please remove this appendix before publication.</t>
      <section anchor="changes-01">
        <name>Changes from -00 to -01</name>
        <ul>
          <li>Distinguished unavailable, withheld and not-applicable measurements from measured zero, and required explicit coverage limitations.</li>
          <li>Specified non-overlapping delegated aggregation, namespaced attribution, dimension comparability and token overlap rules.</li>
          <li>Separated retransmission from execution retry and clarified cumulative snapshots, replacement corrections and collector findings.</li>
          <li>Scoped verification claims and evidence retrieval; clarified that signatures, digests and sequence chains do not establish accuracy or complete observation.</li>
          <li>Added worked accounting examples and a relationship to Agent Run Metrics; retained Informational status and financial-settlement non-goals.</li>
        </ul>
      </section>
    </section>
  </back>
</rfc>
