Assigns value, not just count
Each span carries purpose, phase, and a reading. A total without attribution is still ore.
Token-value accounting
Providers report totals. Assay records what the tokens were for, what a result cost, and what it cannot measure.
How the instrument holds
Local first. Conversations stay on your machine. One verb reaches the network — it fetches a public rate card.
Corrected, not rewritten. A wrong figure stays visible. The correction sits beside it, versioned.
Unknown is named. $0.00 is a claim. Unpriced is a fact.
Ore
No purpose. No residual. A total with nothing assayed.
Bind
What it cannot price, it leaves unpriced — it will not invent the gap.
Metal
Ore in. Metal out. The open cells stay open on purpose.
The register
Written once. Corrected in the open. Joined to the conversation that caused the spend. Not a dashboard of totals.
Each span carries purpose, phase, and a reading. A total without attribution is still ore.
If the rate card will not vouch for a model, the span records tokens and no cost. The residual stays on every total.
Assay is not in the request path. It cannot slow a turn. It reads what already happened.
Invariants
One verb reaches the network. It fetches public rate cards. It never opens the database.
assay shred destroys a principal's key. On a partial erasure it exits non-zero rather than report a completion it did not achieve.
Assay validates provenance, never truth. A team that labels everything "feature work" will get a clean, useless aggregate — and Assay will report it faithfully.
The log, the stores, the rate card, and the capture path are free. The value layer is the product. The boundary is a lint rule, not a promise.