The two clips were staged but never exercised. One frame per second through the production detector and the shipped local lane: - The 1080p supermarket pan: 227 crops, 0 accepted. Correct open-set behaviour - the frame is German pickle jars, not catalog products. - The 360p mayonnaise bay: 1623 crops, 24 accepted (1.5%), across seven SKUs. The clip visibly contains Kewpie products, so those are not automatically false accepts, but at 640x360 the labels are too soft for per-SKU ground truth. Recorded as an accept-rate probe with false_accepts and accuracy left null rather than estimated. Tier 3 still needs an operator-recorded walk. |
||
|---|---|---|
| .. | ||
| kewpie | ||
| l12-reconciliation | ||
| other-mayo | ||
| tier3-sources | ||
| README.md | ||
External evidence (2026-09-29)
Independent-source media used to stress the identity pipeline. None of this is
Tier 2. DECISION.md's Tier 2 is a second labelled store visit; these are
external_proxy artifacts, and every manifest here says so.
| Directory | What it holds |
|---|---|
other-mayo/ |
8 accepted images for sku_l04, sku_l07, sku_l09 from 6 source domains, plus the scored result |
l12-reconciliation/ |
What sku_l12 actually is, from the shelf tag and package pixels |
kewpie/ |
12 accepted images for six SKUs from 6 source domains, plus the scored result. One is now enrolled, so it is excluded from scoring. |
tier3-sources/ |
Two reusable pan clips and 11 rejected candidates for a future Tier-3 replay |
Leak checks
Two, both in code/eval_external.py, both run before any number is reported:
- Against the evaluation photo. Every image is template-matched against
add/image6.jpg. The highest score across all 20 is 0.675 (sku_l07_1), and the 0.95+ band that identifies a crop of the evaluation photo is empty. - Against the catalog. An image that has since been enrolled is refused
rather than scored.
kewpie/sku_l06_1.jpgis one: it is now the enrolled l06 view, so scoring it would be training accuracy wearing a held-out label.
Result: 19 scored, 0 false accepts
.venv/bin/python code/eval_external.py --stock stock-lopia-clean \
data/external-eval/kewpie data/external-eval/other-mayo
| Set | Scored | Correct | Abstain | False accepts | Leaked |
|---|---|---|---|---|---|
kewpie/ |
11 | 8 | 3 | 0 | 1 |
other-mayo/ |
8 | 4 | 4 | 0 | 0 |
| Total | 19 | 12 | 7 | 0 | 1 |
Two things this establishes that the image6 shelf cannot:
sku_l07is answered with no enrolled image. Both l07 images accept through the text lane alone:sku_l07_1reads ラッキー フヨネーズ, andsku_l07_2reads the rear label's 製造者:丸和油脂株式会社 with 内容量:200g. The catalog row is 丸和油脂 ラッキーマヨネーズ 200g, so the manufacturer and the size together name it. This is the text lane's coverage claim - that a product with no reference image can still be named - holding on data that was not used to build it.- The l04 abstentions are correct behaviour, not a miss. l04 has no
enrolled image either, and its reads are weak:
sku_l04_2reads only コと旨 タ 味 (all rows score 0.0), andsku_l04_4reads the rear label with やまや garbled to まや, scoring 0.379 - below the accept line. Abstaining on a weak read is the designed outcome.
sku_l07_2 accepts with a negative local score (-0.55) on text evidence alone.
That is the lane doing its job, but it is worth naming: the accept rests on two
matched tokens (manufacturer + size), not on geometry.
What is still missing
No external source gives per-SKU identity for the whole catalog, and no reusable clip combines the target category with shelf-distance text resolution. The Tier-2 and Tier-3 gates in DECISION.md still need the operator's own recorded walks.