Executable
Can a shopping assistant match this exact bag to a catalogue entry?
ALS-COFFEE-1.2-IDENT-001
This question is asked as a test and produces a result for a real page.
Assertion
product_identifier_published is_present true
Applicability
- applies when
- the product page publishes readable Product structured data
- signal
- presence of a JSON-LD Product node
Accepted evidence
- structured_identifier — a GTIN in JSON-LD whose check digit validates after separators are stripped, or an MPN that is not a placeholder
Explicitly insufficient evidence
What does not count, and why. Published because the omission is where a check quietly becomes a claim.
- a placeholder value such as N/A, TBD, PLACEHOLDER or YOUR-MPN-HERE, in any punctuated or suffixed form
A merchant filling a required field with nothing is how these values arise, and a value that identifies nothing cannot do the job the row promises. - an all-zero GTIN
All zeros satisfies the check-digit arithmetic and identifies no product, so the arithmetic alone is not a sufficient test. - a value with the right length and a wrong check digit
A mistyped or invented identifier resolves to nothing in any catalogue, so length is not evidence of validity. - an internal SKU published in the GTIN field
A seller-private stock code is not a global identifier and cannot match this product to any external catalogue entry. - an identifier stated in prose rather than in structured data
The engine reads identifiers only from structured data, and prose identifiers are not machine-consumable in the way a shopping assistant needs.
Conflict rules
- When the GTIN is invalid but a real MPN is present — then the row passes on the MPN alone, and the engine names which identifier it read precedence: structured_identifier
- When different variants carry different barcodes — then the engine reads the product-level node only; per-variant identity is a known limitation published as a blocked entry
What a pass licenses
A pass establishes: That the page publishes a structurally plausible product identifier that is not a placeholder and, for a GTIN, has a valid check digit.
A pass does NOT establish: That the identifier is correct, unique to this product, allocated to this seller, or resolvable to any catalogue record anywhere.
Discrimination
Measured fail rate: 94.7% (72 of 76 adjudicated)
95% interval: 87.2% – 97.9%, against a 15-85% target band (wilson95 vs target band)
Verdict: Not discriminating — the whole 95% interval lies outside the target band, so almost every store answers the same way. This is evidence for a retirement decision and is not the decision.
Declared bias in the instrument
A 95% interval bounds SAMPLING error and nothing else. These are the known biases in the measuring instrument for this row, declared rather than netted — where two point in opposite directions and neither is quantified, combining them into one signed number would be a guess wearing a direction.
- deflates fail rate, 3.9474pp
Measured false-pass rate of this engine on this entry, from the row-by-row audit of the same run (experiments/v3-2/verdicts.json): 3 of this entry's 4 pass rows were confirmed wrong. Correcting them moves rows from pass to fail, so the measured fail rate is BELOW the true one.
Recomputed by `standards/coffee/issue_v1_2.ts` from experiments/v3-2/standard_run3.jsonl through the shipped `verdictFor` in standards/discrimination.ts; no re-run, no network, no spend. Cross-checked against experiments/v3-2/discrimination.json and standards/coffee/v1.0/fitness.json.
Authored expectation: no prediction, confidence low. The numeric band this standard used to carry is not published at this grammar version.
Small roasters overwhelmingly sell without barcodes and Shopify does not require one, so most coffee pages should fail, while packaged-goods sellers reaching grocery channels will have them. The band is high and the upper bound is set at the target limit because a rate above it would carry little information.
The numeric fail-rate band this reasoning was authored with is NOT carried at grammar 1.2 and is not reproduced here. Authored bands held 1 of 10 against this category's own sample and every miss was HIGH, so a direction derived from the band would inherit the error that condemned it (SCHEMA.md §9.3 step 3). The band survives in ALS-COFFEE v1.1 (standard_hash f8ec2780f60c38931913e5b6cd37506500c8462709209de7180ba6691d6137e7), which is byte-frozen and still served.
For a shopper
This is the field that lets an assistant tell your bag apart from a similarly-named one, and it is why searching by product name sometimes surfaces the wrong seller. You can look for it yourself in the page source, though most small roasters publish none.
For a merchant
Publish a valid GTIN or a real manufacturer part number in the Product structured data, and never fill the field with a placeholder, because an unusable value is worse than an absent one for a machine consumer.
Grounding
- Google Merchant Center product data specification (retailer_help_centre)
that the dominant product-feed specification treats a global trade item number as the field that identifies a product to an automated consumer, which is what makes its absence a machine-buying defect rather than a cosmetic one - GS1 general specifications overview (trade_body)
that a global trade item number is allocated under a defined numbering system with a computed check digit, which is the basis for validating a published value rather than accepting any digit string