Provenance and abstention
Where did this value come from?
Every field carries its origin: supplied by your file, inferred by us, or abstained from with a reason. It is a question almost nothing else in this category can answer, and the answer is per field rather than per file.
Supplied
The value came out of your file. It may have been reformatted — a unit parsed, a number normalised — and the original is still recorded next to it.
Inferred
We wrote it, from what the file supported and nothing else. It stays marked inferred through the review screen and into the export, so it is auditable after the fact and not only during.
Abstained
We could not resolve it, so it is blank, with the reason. A plausible guess in this position is worse than an empty cell, because an empty cell is visible and a plausible guess is not.
The rule is code, because the prompt was tried first
The instruction not to name a value the file never carried was in the system prompt, in as many words, quoting the exact case we wanted avoided. Measured over 129 real generations, 4.6% of raw answers named one anyway. Given a title and nothing else, 1/2 CTTW came back as “featuring 1/2 CTTW diamonds”.
A prompt instruction is not a control. It is a request, made to a system with no obligation to honour it, and its failure rate is invisible unless somebody counts. So the rule moved into code: a curated list of gemstones, metals, fibres, woods and origin claims, checked against what the file actually contained. An answer naming one the source did not supply is refused, and the field is abstained from with that word in its reason.
The list also names what it does not yet catch — measurements, capacities, compatibility claims. It is a floor. Publishing the floor is the honest part; a control whose coverage nobody has stated is a control nobody can rely on.
Measured on the acceptance run
- 19,885 rows
- Processed end to end, across the whole test corpus in one run.
- 0 of 142
- Model requests that broke their response contract. A response without the shape it promised is discarded, not parsed optimistically.
- Zero leaked
- Fabrications reaching an output, on an independent recount that re-derives the check from each row rather than trusting the runtime’s own tally.
- 2026-09-05
- When this was measured. A number without a date is a liability rather than evidence.
Abstention is a feature, and it costs us something
A tool that always produces an answer is easier to demonstrate and worse to rely on.
Across the corpus run, thousands of cells were written and hundreds were deliberately left blank. Every blank is a field a competitor’s demo would have filled, and every one of them is a field you would otherwise have had to catch yourself, in a storefront, after a customer read it.
We publish the searches that fail too. Looking for open catalogue data to widen the test corpus, we swept 546 sources, inspected 250 files, and found 0 usable. The well was wrong, not the filter. A method that only reports its successes is not a method.
How provenance survives into the export · This stage in the pipeline
See what it refuses to answer.
The free report will not enrich anything, but it will show you the same posture: what was checked, what was not, and why.
Check a file free