[object Object]

← back to Dw Image Dup Audit

5x sweep 1: NA dups 96->23 verified; caught Meadowbrook N-suffix same-title pairs, P&S strays, LLM-prompt-leak titles; staged sweep1-fix.js

29f9554de65b5884c66c473385d4a332cae43d3f · 2026-07-22 06:45:08 -0700 · Steve Abrams

Files touched

Diff

commit 29f9554de65b5884c66c473385d4a332cae43d3f
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 22 06:45:08 2026 -0700

    5x sweep 1: NA dups 96->23 verified; caught Meadowbrook N-suffix same-title pairs, P&S strays, LLM-prompt-leak titles; staged sweep1-fix.js
---
 5x/na-dup-check-sweep1.json | 79 +++++++++++++++++++++++++++++++++++++++++++++
 5x/sweep-1.md               | 29 +++++++++++++++++
 sweep1-fix.js               | 34 +++++++++++++++++++
 3 files changed, 142 insertions(+)

diff --git a/5x/na-dup-check-sweep1.json b/5x/na-dup-check-sweep1.json
new file mode 100644
index 0000000..d826ca3
--- /dev/null
+++ b/5x/na-dup-check-sweep1.json
@@ -0,0 +1,79 @@
+{
+ "total": 2042,
+ "noimg": [],
+ "dups": [
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0075608_sisal.jpg",
+   [
+    "Sisal | Phillipe Romano · Phillipe Romano",
+    "Sisal | Phillipe Romano · Phillipe Romano",
+    "Sisal | Phillipe Romano · Phillipe Romano",
+    "Sisal | Phillipe Romano · Phillipe Romano",
+    "Sisal | Phillipe Romano · Phillipe Romano"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/peel-and-stick.jpg",
+   [
+    "Peel and Stick Wallcovering | Jeffrey Stevens · Jeffrey Stevens",
+    "Peel and Stick Wallcovering Grey Blythe | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cb5c0d64d0421dd607af7529f3697f92.jpg",
+   [
+    "Sea Island-Navy & Buff Paper Weave Wallcovering | Phillipe Romano · Phillipe Romano",
+    "Sea Island-Rubber Blue Paper Weave Wallcovering | Phillipe Romano · Phillipe Romano"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0149196_meadowbrook-wallpaper-thread.jpg",
+   [
+    "Meadowbrook Thread | Jeffrey Stevens · Jeffrey Stevens",
+    "Meadowbrook Thread | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0149189_meadowbrook-wallpaper-reservoir.jpg",
+   [
+    "Meadowbrook Reservoir | Jeffrey Stevens · Jeffrey Stevens",
+    "Meadowbrook Reservoir | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0149182_meadowbrook-wallpaper-nook.jpg",
+   [
+    "Meadowbrook Nook | Jeffrey Stevens · Jeffrey Stevens",
+    "Meadowbrook Nook | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0149175_meadowbrook-wallpaper-loft.jpg",
+   [
+    "Meadowbrook Loft | Jeffrey Stevens · Jeffrey Stevens",
+    "Meadowbrook Loft | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0149168_meadowbrook-wallpaper-gravel.jpg",
+   [
+    "Meadowbrook Gravel | Jeffrey Stevens · Jeffrey Stevens",
+    "Meadowbrook Gravel | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0149161_meadowbrook-wallpaper-cotton.jpg",
+   [
+    "Meadowbrook Cotton | Jeffrey Stevens · Jeffrey Stevens",
+    "Meadowbrook Cotton | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ],
+  [
+   "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0149154_meadowbrook-wallpaper-charcoal.jpg",
+   [
+    "Meadowbrook Charcoal | Jeffrey Stevens · Jeffrey Stevens",
+    "Meadowbrook Charcoal | Jeffrey Stevens · Jeffrey Stevens"
+   ]
+  ]
+ ]
+}
\ No newline at end of file
diff --git a/5x/sweep-1.md b/5x/sweep-1.md
new file mode 100644
index 0000000..d1c6301
--- /dev/null
+++ b/5x/sweep-1.md
@@ -0,0 +1,29 @@
+# /5x sweep 1 — new-arrivals?page=3 (2026-07-22)
+
+## Verify
+- Domain check (Admin API, collection 167327760435, 2,042 products): dup lead-image
+  products down 96 → 23 (10 groups). Phase-1 remediation confirmed live.
+- 3x six-way suite: see sweep-1-3x.txt (ran after this note).
+
+## Caught
+1. Sisal ×5 — known, already staged in rename-run.js (pending Steve paste).
+2. Meadowbrook ×7 pairs (Jeffrey Stevens) — NOT exact dupes: York MJ48xx vs MJ48xxN,
+   distinct DWJS SKUs, identical titles + identical image. Likely pasted/non-pasted
+   variants imported as two same-titled products. Needs York source check → title
+   disambiguation or variant merge. DO NOT draft blindly.
+3. Peel-and-stick strays on main store (line policy: lives on apartmentwallpaper.com):
+   - peel-and-stick-wallcovering-jeffrey-stevens-4 — ACTIVE, bare no-name title,
+     sample-only, placeholder image
+   - peel-and-stick-wallcovering-grey-blythe-jeffrey-stevens — ACTIVE, placeholder image
+4. LLM-prompt-leak titles in the Jeffrey Stevens P&S line (DRAFT, so not customer-facing,
+   but data poison): e.g. "Peel and Stick Wallcovering Wait—the title is already in
+   English. ..." — a translation prompt saved as the title. Class-level cleanup needed
+   in whatever generated these titles.
+5. Sea Island Navy&Buff vs Rubber Blue — colorway collapse, no known source image
+   (carried on the investigation list).
+
+## Fixes this sweep
+- sweep1-fix.js: draft the 2 ACTIVE peel-and-stick strays (policy: P&S off main store).
+- Meadowbrook + Sea Island: escalated to investigation (source-of-truth needed), not
+  blind-fixed — per the no-fake-fix rule.
+- Sisal ×5: fix already staged in rename-run.js.
diff --git a/sweep1-fix.js b/sweep1-fix.js
new file mode 100644
index 0000000..09fc083
--- /dev/null
+++ b/sweep1-fix.js
@@ -0,0 +1,34 @@
+#!/usr/bin/env node
+// /5x sweep-1 fix: draft the two ACTIVE peel-and-stick strays on the main store
+// (P&S line policy = apartmentwallpaper.com only). Ledgered, reversible.
+const https = require("https");
+const fs = require("fs");
+const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN;
+const HOST = "designer-laboratory-sandbox.myshopify.com";
+const API = "/admin/api/2024-10";
+const LEDGER = __dirname + "/fix-ledger.jsonl";
+const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
+function req(method, path, body) {
+  return new Promise((res, rej) => {
+    const data = body ? JSON.stringify(body) : null;
+    const r = https.request({ host: HOST, path, method, headers: { "X-Shopify-Access-Token": TOKEN, "Content-Type": "application/json", ...(data ? { "Content-Length": Buffer.byteLength(data) } : {}) } },
+      (resp) => { let d = ""; resp.on("data", (c) => (d += c)); resp.on("end", () => res({ status: resp.statusCode, body: d })); });
+    r.on("error", rej); if (data) r.write(data); r.end();
+  });
+}
+const HANDLES = [
+  "peel-and-stick-wallcovering-jeffrey-stevens-4",
+  "peel-and-stick-wallcovering-grey-blythe-jeffrey-stevens",
+];
+(async () => {
+  for (const handle of HANDLES) {
+    const g = await req("GET", `${API}/products.json?handle=${handle}&fields=id,status,title`);
+    const p = (JSON.parse(g.body).products || [])[0];
+    await sleep(600);
+    if (!p || p.status !== "active") { console.log("skip", handle); continue; }
+    const r = await req("PUT", `${API}/products/${p.id}.json`, { product: { id: p.id, status: "draft" } });
+    await sleep(600);
+    fs.appendFileSync(LEDGER, JSON.stringify({ ts: new Date().toISOString(), act: "5x-sweep1-draft", handle, id: p.id, title: p.title, ok: r.status === 200 }) + "\n");
+    console.log(r.status === 200 ? "drafted" : "FAIL", handle);
+  }
+})();

← 6836d19 auto-save: 2026-07-22T06:41:50 (2 files) — rename-run.js wq-  ·  back to Dw Image Dup Audit  ·  5x sweep 1 complete: clickthrough cascade proven false-posit 7d65859 →