← back to York Reprice 2026 08

BREWSTER-IMAGE-CROSSLINK-FINDINGS-TK10058.md

32 lines

# TK-10058 — brewster_catalog.image_url cross-link: diagnosis + recommendation (2026-07-30)

## Scope (token-overlap, accent-normalized; READ-ONLY)
- 8,199 rows have an image + pattern.
- **358 are genuine cross-links** (filename shares NO pattern token with the row's pattern_name).
- Of those: ~287 have the right *pattern* findable elsewhere in the table; ~27 are true orphans;
  the rest are pattern-only.

## KEY FINDING — bulk auto-relink is UNSAFE
Name-matching recovers the right *pattern* but CANNOT guarantee the right *colorway*: color words
(light/dark/grey/yellow…) are ambiguous/stop-worded, and the exact-colorway image is often absent
from the table. Proof: **Exhale/Light-Yellow AND Exhale/Stone both resolve to `exhale-light-grey`** —
right pattern, wrong color. A blind relink would trade a wrong image for a less-wrong one on a large
fraction of rows. (The York-12 relink was only safe because each was eyeballed.)

## Root cause is the SCRAPER, not the table
Any DB relink re-corrupts on the next scrape. The image mis-assignment originates in the Brewster/York
image-capture pipeline (~/Projects/Designer-Wallcoverings/DW-Programming/, dwjs-phase2-scrape-specs.js
and siblings). The durable fix is there.

## Recommendation (Steve's call — NOT applied)
1. **Do NOT bulk-relink brewster_catalog** — unsafe on colorway fidelity + re-corrupts on re-scrape.
2. **Root-cause the scraper** — find why image_url is assigned to the wrong SKU (likely an ordering /
   index off-by-N in how per-colorway images are zipped to SKUs). Its own session in DW-Programming.
3. **Live-product impact** is the real customer risk (products already onboarded with a wrong image).
   Best handled per-SKU + eyeballed — exactly what the onboard pipeline now does
   ([[brewster-catalog-image-crosslink]]); a bulk fix here would need visual verification per row.

## Evidence
diag-brewster-images.mjs (READ-ONLY) + BREWSTER-RELINK-PLAN-TK10058.json (358 candidates classified;
the 287 "exact" bucket is colorway-contaminated — do not apply as-is). Cost: $0 (local).