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.
- Observe
- Aggregate
- Receipt
- 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_OBSERVEDfor 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.