Published open source · v0.1.0 · Python 3.10+

YY Workload Receipt

A small, local answer to one narrow question: what measurable resources and operations did this AI workload consume, and has its receipt changed since it was generated?

It produces deterministic artifacts from usage metadata without collecting prompts, messages, tool arguments, or tool results.

  1. Observe
  2. Aggregate
  3. Receipt
  4. Verify

python -m pip install yy-workload-receipt

v0.1.0 is published on PyPI from the tagged GitHub release through a credential-free trusted-publisher workflow.

Inspect the output

A sanitized receipt generated by v0.1.0

The public example uses synthetic usage data. It demonstrates the artifact format and an explicit missing-duration signal; it is not a performance benchmark or customer workload.

Requests
2 model requests
Observed tokens
150 input, 50 output, 10 cached, 7 reasoning
Input + output
200 tokens
Evidence gap
MODEL_DURATION_NOT_OBSERVED for both requests
Artifacts
summary.json · report.md · manifest.sha256

Receipt contract

Observed metadata, with unknowns left visible

The receipt describes only measurements present in its input. A missing observation remains an evidence gap rather than becoming a confident zero.

  • Model usage

    Counts requests and observed input, output, cached, and reasoning-token fields by provider and model.

  • Tool activity

    Aggregates observed tool-call counts, outcomes, and durations without retaining tool arguments or results.

  • Retries and errors

    Records retry counts and allowlisted error classes while excluding raw exception messages.

  • Approval observations

    Counts approval observations and wait measurements when those fields are present in the input evidence.

  • Evidence gaps

    Keeps missing or contradictory measurements explicit instead of converting an unobserved value into zero.

Inputs

Two adapters, one receipt format

The portable adapter accepts flat JSONL events for model calls, tool calls, approvals, retries, and errors. The OpenAI usage adapter accepts the public serialized usage object produced by the OpenAI Agents SDK and requires per-request usage entries.

When per-request measurements disagree with aggregate counters, the adapter reports the disagreement as an evidence gap rather than silently selecting one value.

Content boundary

Metadata belongs in; prompts and payloads stay out

Unknown fields are discarded and reported without reproducing their names or values. Common content-bearing fields—including prompts, messages, content, arguments, and payload fields—cause the input line to be rejected without copying that field into the output.

These allowlists and rejection rules reduce accidental retention. They do not replace reviewing data before a receipt is shared.

Integrity

Three files, checked as a closed packet

Generation writes canonical JSON, a deterministic Markdown view, and a SHA-256 manifest covering both. Verification fails when a covered file changes or disappears, the manifest is malformed or incomplete, or an unexpected entry appears in the receipt folder.

Scope

What the receipt does not claim

  • Not an observability dashboard or hosted telemetry service
  • Not a billing record, invoice, or cost estimate
  • Not a security audit or compliance certification
  • Not a hardware recommendation or hardware-fit implementation
  • Does not make model or API calls

Open source

Review the implementation and tests

YY Workload Receipt is Apache-2.0 software for Python 3.10 and newer, with no runtime dependencies. The current public main branch passes its 28-test suite in CI.