genai-interlingua · measured, not asserted

What translation costs

How a span is recognised

This is the only part that is an algorithm. Everything else on this page is a census — what these fixtures were observed to carry, counted. This is computed per span: each dialect counts the attributes only it would write, the highest total wins, and the number stamped on the span as interlingua.dialect.confidence is winner − runner-up. An integer margin, not a probability, because there is no denominator to make one out of.

What each dialect could not carry, and why

None of these is a spelling problem. Renaming prompt_tokens to gen_ai.usage.input_tokens is the part that looks like the work and is the part a lookup table can do. Every band above is the other kind: no field means the conventions have no concept for it, not merely no name for it; unstructured is a blob the schema cannot type; flattened is structure that existed in the source and has no canonical form; and ambiguous is one attribute that could have meant two different fields, recorded rather than guessed at. Matching names is not matching meaning, and this is where the difference is measured.

Lost to the vocabulary, not deleted. Under the default originals: keep every attribute above is still on the span, under the name its library gave it. What it lacks is a gen_ai.* name, so a query written in the conventions’ vocabulary will not find it and one written in the library’s will. originals: dedupe removes only exact copies a rename already made redundant. Only originals: prune takes them off the span, and that is a choice somebody has to make.

LiteLLM's 53 is not noise. It is an entire cost model — gen_ai.cost.input_cost, output_cost, margin_percent, discount_amount — plus every user_api_key_* field it records about who spent what. The conventions have no home for any of it, which is a finding about the conventions rather than about LiteLLM.

Field coverage, and the cost of pinning

A filled cell means that dialect's fixtures carried the field. A blank is silence, not a denial: the emitter may have had nothing to put there, or the fixture may not exercise it. Read a mark as evidence.

The cost of pinning a target

Both are defensible. Neither is correct. What is not defensible is making the choice silently — which is what a normalizer with a hardcoded attribute table does, and why the target here is a flag rather than a constant.