← back to Dw Yolo Loop
Thibaut mfr-SKU fix: queue 1027 tag backfills, stage 69 title rewrites + backlog
bdd29b7dc0c73d0fc9f3ec6d8c114aced5efa2b4 · 2026-06-11 12:06:18 -0700 · Steve Abrams
- Audited 3612 Thibaut products for mfr-number placement (tags not title)
- Enqueued 1027 tag-backfill PUT jobs to shopify_api_queue (clean mfr token where missing)
- Staged 69 auto-fixable title de-SKU rewrites (await review) in thibaut_mfr_fix_staging
- Backlog: 10 titles needing real pattern names + 160 junk parenthetical tags
Files touched
A thibaut-mfr-fix/BACKLOG.mdA thibaut-mfr-fix/README.mdA thibaut-mfr-fix/TITLES-FOR-REVIEW.mdA thibaut-mfr-fix/title_scrub.py
Diff
commit bdd29b7dc0c73d0fc9f3ec6d8c114aced5efa2b4
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jun 11 12:06:18 2026 -0700
Thibaut mfr-SKU fix: queue 1027 tag backfills, stage 69 title rewrites + backlog
- Audited 3612 Thibaut products for mfr-number placement (tags not title)
- Enqueued 1027 tag-backfill PUT jobs to shopify_api_queue (clean mfr token where missing)
- Staged 69 auto-fixable title de-SKU rewrites (await review) in thibaut_mfr_fix_staging
- Backlog: 10 titles needing real pattern names + 160 junk parenthetical tags
---
thibaut-mfr-fix/BACKLOG.md | 22 +++++++++++
thibaut-mfr-fix/README.md | 47 +++++++++++++++++++++++
thibaut-mfr-fix/TITLES-FOR-REVIEW.md | 73 ++++++++++++++++++++++++++++++++++++
thibaut-mfr-fix/title_scrub.py | 72 +++++++++++++++++++++++++++++++++++
4 files changed, 214 insertions(+)
diff --git a/thibaut-mfr-fix/BACKLOG.md b/thibaut-mfr-fix/BACKLOG.md
new file mode 100644
index 0000000..3dd02a8
--- /dev/null
+++ b/thibaut-mfr-fix/BACKLOG.md
@@ -0,0 +1,22 @@
+# Thibaut mfr-fix — BACKLOG (needs manual / sourced pattern names)
+
+## A) Titles that still carry the SKU but can't be auto-fixed ( 10)
+No real Thibaut pattern name available — stripping the SKU would leave a color-only title.
+Need the real pattern name sourced from Thibaut's catalog, then rebuild + de-SKU.
+
+| product_id | mfr | current title |
+|---|---|---|
+| 1244068 | BELIZA | Beliza \| Thibaut |
+| 1244067 | IPANEMA | Ipanema \| Thibaut |
+| 1244069 | LANDRY | Landry \| Thibaut |
+| 81496 | T64167 | T64167 Beige \| Thibaut |
+| 81497 | T64178 | T64178 Yellow and Grey \| Thibaut |
+| 82167 | T7617 | T7617 Aqua on Metallic \| Thibaut |
+| 82168 | T7620 | T7620 Beige \| Thibaut |
+| 82255 | T8605 | T8605 Pastel \| Thibaut |
+| 82254 | T8610 | T8610 Cream \| Thibaut |
+| 1244066 | TAMARAC | Tamarac \| Thibaut |
+
+## B) Junk parenthetical tags — ~160 active Thibaut products
+Tags contain a garbage entry like `Thibaut Taluk Sisal(T41170)` (SKU embedded in a parenthetical name).
+The clean mfr token has now been added alongside; these junk tags should be stripped in a follow-up pass.
diff --git a/thibaut-mfr-fix/README.md b/thibaut-mfr-fix/README.md
new file mode 100644
index 0000000..775fd1d
--- /dev/null
+++ b/thibaut-mfr-fix/README.md
@@ -0,0 +1,47 @@
+# Thibaut mfr-SKU placement fix
+
+Goal (Steve, 2026-06-11): every Thibaut product has its **manufacturer number in the tags, not in the title**.
+
+Scope audited: 3,612 Thibaut products (`vendor_prefix='DWTT'`).
+
+## State
+
+| Task | Count | Status |
+|---|---|---|
+| Tag backfill — add mfr SKU as a clean tag where missing (active) | 1,027 | **QUEUED** to `shopify_api_queue` (`source_agent='thibaut-mfr-tag-backfill'`, PUT, status `pending`) |
+| Title de-SKU — auto-fixable rewrites | 69 | **STAGED**, awaiting Steve eyeball → see `TITLES-FOR-REVIEW.md` |
+| Title de-SKU — needs real pattern name | 10 | backlog → `BACKLOG.md` |
+| Junk parenthetical tags `Pattern(SKU)` | ~160 | backlog → `BACKLOG.md` |
+
+Everything is staged in PG table **`thibaut_mfr_fix_staging`** (`id, shopify_id, fix_type, mfr_sku, old_value, new_value, status`).
+
+## Write path
+Pushes go through `shopify_api_queue` → the `shopify-queue-worker` (runs on Kamatera,
+`/root/DW-Agents/shopify-queue-worker/worker.js`, ~950 jobs/day ceiling). The queue table is
+bidirectionally replicated, so jobs enqueued on Mac2 reach the worker. Shopify REST `PUT` merges —
+sending only `{product:{id,tags}}` changes tags **without** touching title/variants/images.
+
+Contract (proven, from `DW-Programming/justindavid-shopify-push.js`):
+`INSERT INTO shopify_api_queue(method,endpoint,payload,token_alias,priority,source_agent,status)`
+`method='PUT'`, `endpoint='/products/<numeric_id>.json'`, `token_alias='product'`, `status='pending'`.
+
+## To push the 69 titles once approved
+```sql
+INSERT INTO shopify_api_queue (method, endpoint, payload, token_alias, priority, source_agent, status)
+SELECT 'PUT',
+ '/products/'||split_part(shopify_id,'/',5)||'.json',
+ jsonb_build_object('product', jsonb_build_object(
+ 'id', split_part(shopify_id,'/',5)::bigint, 'title', new_value)),
+ 'product', 5, 'thibaut-mfr-title-fix', 'pending'
+FROM thibaut_mfr_fix_staging
+WHERE fix_type='title' AND shopify_id ~ '^gid://shopify/Product/[0-9]+$' AND status='staged';
+
+UPDATE thibaut_mfr_fix_staging SET status='queued'
+WHERE fix_type='title' AND shopify_id ~ '^gid://shopify/Product/[0-9]+$' AND status='staged';
+```
+
+## Re-run the title transformer (preview only)
+```sh
+python3 title_scrub.py # preview AUTOFIX / BACKLOG buckets
+python3 title_scrub.py --emit # also write /tmp/thibaut_title_proposals.tsv
+```
diff --git a/thibaut-mfr-fix/TITLES-FOR-REVIEW.md b/thibaut-mfr-fix/TITLES-FOR-REVIEW.md
new file mode 100644
index 0000000..5a23884
--- /dev/null
+++ b/thibaut-mfr-fix/TITLES-FOR-REVIEW.md
@@ -0,0 +1,73 @@
+# Thibaut title de-SKU — 69 proposed rewrites (REVIEW BEFORE PUSH)
+
+| product_id | mfr | OLD title | NEW title |
+|---|---|---|---|
+| 81083 | T4058 | Baldwin Herringbone Thibaut Product T4058 - Thibaut Product T4058 Natural Wallcovering \| Thibaut | Baldwin Herringbone - Natural Wallcovering \| Thibaut |
+| 81081 | T4056 | Baldwin Herringbone Thibaut Product T4056 - Thibaut Product T4056 Natural Wallcovering \| Thibaut | Baldwin Herringbone - Natural Wallcovering \| Thibaut |
+| 81082 | T4057 | Baldwin Herringbone Thibaut Product T4057 - Thibaut Product T4057 Wallcovering \| Thibaut | Baldwin Herringbone Wallcovering \| Thibaut |
+| 81084 | T4059 | Baldwin Herringbone Thibaut Product T4059 - Thibaut Product T4059 Wallcovering \| Thibaut | Baldwin Herringbone Wallcovering \| Thibaut |
+| 82173 | T6811 | Belgium Linen Thibaut Belgium Linen(T6811) - Thibaut Belgium Linen(T6811) Wallcovering \| Thibaut | Belgium Linen Wallcovering \| Thibaut |
+| 1252432 | AE12375 | Bree Tape Tapes & Trims (ae12375) – Aqua and Willow \| Thibaut | Bree Tape Tapes & Trims - Aqua and Willow \| Thibaut |
+| 82175 | T6813 | Cabo Raffia Thibaut Cabo Raffia(T6813) - Thibaut Cabo Raffia(T6813) Natural Wallcovering \| Thibaut | Cabo Raffia - Natural Wallcovering \| Thibaut |
+| 132131 | T72834 | Cabo Raffia Thibaut Cabo Raffia(T72834) - Pale Green Wallcovering \| Thibaut | Cabo Raffia - Pale Green Wallcovering \| Thibaut |
+| 132094 | T41160 | Cabo Raffia Thibaut Cabo Raffia(T41160) - Thibaut Cabo Raffia(T41160) Wallcovering \| Thibaut | Cabo Raffia Wallcovering \| Thibaut |
+| 132110 | T41192 | Cabo Raffia Thibaut Cabo Raffia(T41192) - Thibaut Cabo Raffia(T41192) Wallcovering \| Thibaut | Cabo Raffia Wallcovering \| Thibaut |
+| 81117 | T4010 | Colored Blocks Thibaut Colored Blocks(T4010) - Thibaut Colored Blocks(T4010) Wallcovering \| Thibaut | Colored Blocks Wallcovering \| Thibaut |
+| 132766 | T75482 | Cordoza Weave Thibaut Cordoza Weave(T75482) - Thibaut Cordoza Weave(T75482) Wallcovering \| Thibaut | Cordoza Weave Wallcovering \| Thibaut |
+| 1252428 | AE12359 | Esme Fringe Tapes & Trims (ae12359) – Aqua and Willow \| Thibaut | Esme Fringe Tapes & Trims - Aqua and Willow \| Thibaut |
+| 1252429 | AF9645 | Fairbanks Fabrics (af9645) – Salmon \| Thibaut | Fairbanks Fabrics - Salmon \| Thibaut |
+| 1252430 | AE12367 | Gabrielle Tape Tapes & Trims (ae12367) – Aqua and Willow \| Thibaut | Gabrielle Tape Tapes & Trims - Aqua and Willow \| Thibaut |
+| 1252431 | AF9639 | Herriot Way Embroidery Fabrics (af9639) – White on Flax \| Thibaut | Herriot Way Embroidery Fabrics - White on Flax \| Thibaut |
+| 1252426 | AE12302 | June Tape Tapes & Trims (ae12302) – Willow \| Thibaut | June Tape Tapes & Trims - Willow \| Thibaut |
+| 1252424 | AF78741 | Kalamkari Fabrics (af78741) – Red and Gold \| Thibaut | Kalamkari Fabrics - Red and Gold \| Thibaut |
+| 132762 | T75478 | Lattice Weave Thibaut Product T75478 \| Thibaut | Lattice Weave \| Thibaut |
+| 132764 | T75480 | Lattice Weave Thibaut Product T75480 - Thibaut Product T75480 Wallcovering \| Thibaut | Lattice Weave Wallcovering \| Thibaut |
+| 132763 | T75479 | Lattice Weave Thibaut Product T75479 - Thibaut Product T75479 Wallcovering \| Thibaut | Lattice Weave Wallcovering \| Thibaut |
+| 132761 | T75477 | Lattice Weave Thibaut Product T75477 - Thibaut Product T75477 Wallcovering \| Thibaut | Lattice Weave Wallcovering \| Thibaut |
+| 1252427 | AE12341 | Leila Tape Tapes & Trims (ae12341) – Aqua and Willow \| Thibaut | Leila Tape Tapes & Trims - Aqua and Willow \| Thibaut |
+| 1252433 | AE12350 | Maren Cord Tapes & Trims (ae12350) – Aqua and Willow \| Thibaut | Maren Cord Tapes & Trims - Aqua and Willow \| Thibaut |
+| 1252434 | AE12352 | Maren Cord Tapes & Trims (ae12352) – French Blue and Sky \| Thibaut | Maren Cord Tapes & Trims - French Blue and Sky \| Thibaut |
+| 132245 | T41030 | Matrix Thibaut Product T41030 - Ivory Wallcovering \| Thibaut | Matrix - Ivory Wallcovering \| Thibaut |
+| 132246 | T41028 | Matrix Thibaut Product T41028 - Ivory Wallcovering \| Thibaut | Matrix - Ivory Wallcovering \| Thibaut |
+| 132247 | T41029 | Matrix Thibaut Product T41029 - Ivory Wallcovering \| Thibaut | Matrix - Ivory Wallcovering \| Thibaut |
+| 132248 | T41031 | Matrix Thibaut Product T41031 - Light Blue Wallcovering \| Thibaut | Matrix - Light Blue Wallcovering \| Thibaut |
+| 82099 | T4961 | Miranda Thibaut Miranda(T4961) - Beige Wallcovering \| Thibaut | Miranda - Beige Wallcovering \| Thibaut |
+| 81106 | T3988 | Moab Weave Thibaut Moab Weave(T3988) - Thibaut Moab Weave(T3988) Natural Wallcovering \| Thibaut | Moab Weave - Natural Wallcovering \| Thibaut |
+| 81079 | T4034 | Moab Weave Thibaut Moab Weave(T4034) - Thibaut Moab Weave(T4034) Wallcovering \| Thibaut | Moab Weave Wallcovering \| Thibaut |
+| 81075 | T4030 | Moab Weave Thibaut Moab Weave(T4030) - Thibaut Moab Weave(T4030) Wallcovering \| Thibaut | Moab Weave Wallcovering \| Thibaut |
+| 132097 | T41163 | Moab Weave Thibaut Moab Weave(T41163) - Thibaut Moab Weave(T41163) Wallcovering \| Thibaut | Moab Weave Wallcovering \| Thibaut |
+| 132116 | T5027 | Moab Weave Thibaut Moab Weave(T5027) - Thibaut Moab Weave(T5027) Wallcovering \| Thibaut | Moab Weave Wallcovering \| Thibaut |
+| 81184 | T89148 | Moab Weave Thibaut Moab Weave(T89148) - Thibaut Moab Weave(T89148) Wallcovering \| Thibaut | Moab Weave Wallcovering \| Thibaut |
+| 1252425 | T13147 | Palm Island Wallcoverings (t13147) – Coral \| Thibaut | Palm Island Wallcoverings - Coral \| Thibaut |
+| 81128 | T4042 | Persian Carpet Thibaut Persian Carpet(T4042) - Thibaut Persian Carpet(T4042) Wallcovering \| Thibaut | Persian Carpet Wallcovering \| Thibaut |
+| 131849 | T44034 | Railway Stripe Thibaut Product T44034 - Ivory Wallcovering \| Thibaut | Railway Stripe - Ivory Wallcovering \| Thibaut |
+| 131848 | T44033 | Railway Stripe Thibaut Product T44033 - Thibaut Product T44033 Wallcovering \| Thibaut | Railway Stripe Wallcovering \| Thibaut |
+| 131851 | T44036 | Railway Stripe Thibaut Product T44036 - Thibaut Product T44036 Wallcovering \| Thibaut | Railway Stripe Wallcovering \| Thibaut |
+| 131850 | T44035 | Railway Stripe Thibaut Product T44035 - Thibaut Product T44035 Wallcovering \| Thibaut | Railway Stripe Wallcovering \| Thibaut |
+| 1252423 | AF9837 | Shadows Fabrics (af9837) – Fuchsia \| Thibaut | Shadows Fabrics - Fuchsia \| Thibaut |
+| 1252422 | AF9832 | Shadows Fabrics (af9832) – Navy \| Thibaut | Shadows Fabrics - Navy \| Thibaut |
+| 81541 | T41112 | Stablewood Thibaut Stablewood(T41112) - Thibaut Stablewood(T41112) Natural Wallcovering \| Thibaut | Stablewood - Natural Wallcovering \| Thibaut |
+| 82019 | T3687 | Stablewood Thibaut Stablewood(T3687) - Thibaut Stablewood(T3687) Natural Wallcovering \| Thibaut | Stablewood - Natural Wallcovering \| Thibaut |
+| 81616 | T36140 | Stablewood Thibaut Stablewood(T36140) - Thibaut Stablewood(T36140) Natural Wallcovering \| Thibaut | Stablewood - Natural Wallcovering \| Thibaut |
+| 81507 | T41132 | Stablewood Thibaut Stablewood(T41132) - Thibaut Stablewood(T41132) Natural Wallcovering \| Thibaut | Stablewood - Natural Wallcovering \| Thibaut |
+| 81521 | T41113 | Stablewood Thibaut Stablewood(T41113) - Thibaut Stablewood(T41113) Natural Wallcovering \| Thibaut | Stablewood - Natural Wallcovering \| Thibaut |
+| 132106 | T41175 | Stablewood Thibaut Stablewood(T41175) - Thibaut Stablewood(T41175) Wallcovering \| Thibaut | Stablewood Wallcovering \| Thibaut |
+| 81505 | T41130 | Stablewood Thibaut Stablewood(T41130) - Thibaut Stablewood(T41130) Wallcovering \| Thibaut | Stablewood Wallcovering \| Thibaut |
+| 81523 | T41115 | Stablewood Thibaut Stablewood(T41115) - Thibaut Stablewood(T41115) Wallcovering \| Thibaut | Stablewood Wallcovering \| Thibaut |
+| 81512 | T41137 | Stablewood Thibaut Stablewood(T41137) - Thibaut Stablewood(T41137) Wallcovering \| Thibaut | Stablewood Wallcovering \| Thibaut |
+| 1252421 | CW10003 | Stoffa Wallcoverings (cw10003) – Grey \| Thibaut | Stoffa Wallcoverings - Grey \| Thibaut |
+| 131841 | T44028 | Suited Stripe Thibaut Product T44028 - Beige Wallcovering \| Thibaut | Suited Stripe - Beige Wallcovering \| Thibaut |
+| 131842 | T44026 | Suited Stripe Thibaut Product T44026 - Beige Wallcovering \| Thibaut | Suited Stripe - Beige Wallcovering \| Thibaut |
+| 131843 | T44027 | Suited Stripe Thibaut Product T44027 - Ivory Wallcovering \| Thibaut | Suited Stripe - Ivory Wallcovering \| Thibaut |
+| 131844 | T44029 | Suited Stripe Thibaut Product T44029 - Light Blue Wallcovering \| Thibaut | Suited Stripe - Light Blue Wallcovering \| Thibaut |
+| 132117 | T5028 | Taluk Sisal Thibaut Taluk Sisal(T5028) - Cream Wallcovering \| Thibaut | Taluk Sisal - Cream Wallcovering \| Thibaut |
+| 132102 | T41170 | Taluk Sisal Thibaut Taluk Sisal(T41170) - Cream Wallcovering \| Thibaut | Taluk Sisal - Cream Wallcovering \| Thibaut |
+| 81107 | T3989 | Taluk Sisal Thibaut Taluk Sisal(T3989) - Thibaut Taluk Sisal(T3989) Natural Wallcovering \| Thibaut | Taluk Sisal - Natural Wallcovering \| Thibaut |
+| 132191 | T3669 | Taluk Sisal Thibaut Taluk Sisal(T3669) - Thibaut Taluk Sisal(T3669) Wallcovering \| Thibaut | Taluk Sisal Wallcovering \| Thibaut |
+| 82170 | T6808 | Taluk Sisal Thibaut Taluk Sisal(T6808) - Thibaut Taluk Sisal(T6808) Wallcovering \| Thibaut | Taluk Sisal Wallcovering \| Thibaut |
+| 81119 | T4012 | Taluk Sisal Thibaut Taluk Sisal(T4012) - Thibaut Taluk Sisal(T4012) Wallcovering \| Thibaut | Taluk Sisal Wallcovering \| Thibaut |
+| 132113 | T5021 | Taluk Sisal Thibaut Taluk Sisal(T5021) - Thibaut Taluk Sisal(T5021) Wallcovering \| Thibaut | Taluk Sisal Wallcovering \| Thibaut |
+| 81066 | T4017 | Volar Thibaut Volar(T4017) - Thibaut Volar(T4017) Wallcovering \| Thibaut | Volar Wallcovering \| Thibaut |
+| 1252437 | CW10030 | Waves Wallcoverings (cw10030) – Greige and Grey \| Thibaut | Waves Wallcoverings - Greige and Grey \| Thibaut |
+| 1252436 | CW10029 | Waves Wallcoverings (cw10029) – Ivory and Grey \| Thibaut | Waves Wallcoverings - Ivory and Grey \| Thibaut |
+| 1252435 | AF23144 | Wynford Fabrics (af23144) – Blush \| Thibaut | Wynford Fabrics - Blush \| Thibaut |
diff --git a/thibaut-mfr-fix/title_scrub.py b/thibaut-mfr-fix/title_scrub.py
new file mode 100644
index 0000000..935e89e
--- /dev/null
+++ b/thibaut-mfr-fix/title_scrub.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python3
+"""Thibaut title de-SKU transformer. Buckets: AUTOFIX / BACKLOG.
+Preview-only unless --emit (writes /tmp/thibaut_title_proposals.tsv). No Shopify writes."""
+import re, sys
+
+rows = []
+with open('/tmp/thibaut_title_cases.tsv') as f:
+ for line in f:
+ line = line.rstrip('\n')
+ if not line: continue
+ pid, mfr, pat, title = line.split('\t')
+ rows.append((pid, mfr, pat.strip(), title))
+
+def strip_suffix(t):
+ m = re.search(r'\s*\|\s*Thibaut\s*$', t)
+ return (t[:m.start()], ' | Thibaut') if m else (t, '')
+
+def cs(t):
+ return re.sub(r'\s{2,}', ' ', t).strip(' -–|,')
+
+def clean_pattern(mfr, pat, body):
+ """Derive a clean pattern name from a possibly-corrupted pattern_name/title body."""
+ src = pat if pat else body
+ src = re.split(r'\s+thibaut\s+', src, flags=re.I)[0] # cut at " Thibaut <repeat>"
+ src = re.sub(r'\(.*$', '', src) # cut at first paren
+ src = re.sub(r'\b'+re.escape(mfr)+r'\b', '', src, flags=re.I)
+ src = re.sub(r'\bproduct\b', '', src, flags=re.I)
+ return cs(src)
+
+def rebuild(mfr, clean_pat, title):
+ body, suf = strip_suffix(title)
+ had_wc = bool(re.search(r'\bwallcovering\b', body, re.I))
+ r = body
+ for pat_repr in (re.escape(clean_pat), re.escape(mfr)):
+ r = re.sub(r'\b'+pat_repr+r'\b', ' ', r, flags=re.I)
+ r = re.sub(r'\(\s*\)', ' ', r)
+ r = re.sub(r'\bthibaut\b|\bproduct\b|\bwallcovering\b', ' ', r, flags=re.I)
+ color = cs(re.sub(r'[-–()]', ' ', r))
+ new = clean_pat + (' - ' + color if color else '')
+ if had_wc:
+ new += ' Wallcovering'
+ return cs(new) + suf
+
+AUTOFIX=[]; BACKLOG=[]
+for pid, mfr, pat, title in rows:
+ body0,_ = strip_suffix(title)
+ cp = clean_pattern(mfr, pat, body0)
+ sku_led = bool(re.match(r'^\s*'+re.escape(mfr)+r'\b', body0, re.I)) # title starts with SKU -> no real name
+ # unusable pattern: empty, too short, still holds the SKU, sku-led, or pattern_name itself = "<SKU> <color>"
+ bad_cp = (sku_led or not cp or len(cp) < 3 or re.search(r'\b'+re.escape(mfr)+r'\b', cp, re.I))
+ if bad_cp:
+ BACKLOG.append((pid, mfr, pat, title)); continue
+ new = rebuild(mfr, cp, title)
+ nb,_ = strip_suffix(new)
+ if not nb or len(nb) < 3 or re.search(r'\b'+re.escape(mfr)+r'\b', new, re.I) \
+ or re.search(r'\bthibaut\b', nb, re.I):
+ BACKLOG.append((pid, mfr, pat, title))
+ else:
+ AUTOFIX.append((pid, mfr, cp, title, new))
+
+if '--emit' in sys.argv:
+ with open('/tmp/thibaut_title_proposals.tsv','w') as out:
+ for pid, mfr, cp, old, new in AUTOFIX:
+ out.write(f"{pid}\t{mfr}\t{old}\t{new}\n")
+
+print(f"AUTOFIX={len(AUTOFIX)} BACKLOG={len(BACKLOG)}\n")
+print("===== AUTOFIX =====")
+for pid, mfr, cp, old, new in AUTOFIX:
+ print(f"{pid} {mfr}\n OLD: {old}\n NEW: {new}")
+print("\n===== BACKLOG (needs real pattern name; title left as-is, tag still ensured) =====")
+for pid, mfr, pat, title in BACKLOG:
+ print(f"{pid} {mfr} pat='{pat}' :: {title}")
← d8a8633 Scrub residual vendor names from products.json (title/vendor
·
back to Dw Yolo Loop
·
Thibaut mfr-fix: flag jobs are in wrong queue DB (worker rea 298b81b →