← back to Designer Wallcoverings
Read-only cross-brand single-roll min/step audit: 15,034 variants/62 vendors — 2,048 active missing min, 584 min!=2, 7 realized odd-qty orders 60d; DWJS #32512 leak is enforcement-layer not data
fdd0045bda7f07d1cb75269b78da4b12639e48e3 · 2026-07-02 10:00:05 -0700 · Steve Abrams
Files touched
A shopify/scripts/audit-single-roll-brands-min-step.pyA shopify/scripts/audits/single-roll-brands-min-step-audit.json
Diff
commit fdd0045bda7f07d1cb75269b78da4b12639e48e3
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jul 2 10:00:05 2026 -0700
Read-only cross-brand single-roll min/step audit: 15,034 variants/62 vendors — 2,048 active missing min, 584 min!=2, 7 realized odd-qty orders 60d; DWJS #32512 leak is enforcement-layer not data
---
.../scripts/audit-single-roll-brands-min-step.py | 166 ++++
.../audits/single-roll-brands-min-step-audit.json | 1028 ++++++++++++++++++++
2 files changed, 1194 insertions(+)
diff --git a/shopify/scripts/audit-single-roll-brands-min-step.py b/shopify/scripts/audit-single-roll-brands-min-step.py
new file mode 100644
index 00000000..18ab3e3f
--- /dev/null
+++ b/shopify/scripts/audit-single-roll-brands-min-step.py
@@ -0,0 +1,166 @@
+#!/usr/bin/env python3
+"""
+READ-ONLY audit: which "Priced Per Single Roll" brands have min=2/step=2
+order-increment metafields — and which are leaking.
+
+Born 2026-07-02 from Shopify order #32512: DWJS-14130 (Jeffrey Stevens,
+variant "Price Per Single Roll") sold at qty 1 via Online Store web, EVEN
+THOUGH global.v_prods_quantity_order_min=2 / _units=2 are set on the product.
+So there are two distinct gaps to quantify:
+ GAP-A products missing the min/step metafields entirely (cadence never set
+ them outside the 06-30 DWTT/AF pass)
+ GAP-B enforcement leak — metafields present but the theme/checkout let a
+ qty below min through (theme min/step is client-side only; Buy-Now /
+ alternate templates bypass it). Quantified via recent orders.
+
+Method:
+ 1. Page ALL productVariants with title containing "Single Roll" (the
+ single-roll-priced class across every brand), group by product vendor.
+ 2. Per product: explicit-key metafield() reads of
+ global.v_prods_quantity_order_min / _units (the metafields(first:N)
+ scrape lies) + status.
+ 3. Recent 60 days of orders: line items with qty==1 whose variant title
+ contains "Single Roll" = realized enforcement leaks.
+
+Zero writes. $0 (Shopify Admin API).
+Run: SHOPIFY_ADMIN_TOKEN=... [SHOPIFY_ORDERS_TOKEN=...] python3 audit-single-roll-brands-min-step.py
+"""
+import json, os, sys, time, urllib.request, datetime, collections
+
+TOKEN = os.environ["SHOPIFY_ADMIN_TOKEN"]
+ORDERS_TOKEN = os.environ.get("SHOPIFY_ORDERS_TOKEN") or TOKEN
+SHOP = "designer-laboratory-sandbox.myshopify.com"
+GQL = f"https://{SHOP}/admin/api/2024-10/graphql.json"
+AUDIT_PATH = os.path.expanduser(
+ "~/Projects/Designer-Wallcoverings/shopify/scripts/audits/single-roll-brands-min-step-audit.json")
+
+def gql(q, v=None, token=TOKEN):
+ body = json.dumps({"query": q, "variables": v or {}}).encode()
+ req = urllib.request.Request(GQL, data=body, headers={
+ "X-Shopify-Access-Token": token, "Content-Type": "application/json"})
+ for _ in range(8):
+ try:
+ with urllib.request.urlopen(req) as r:
+ d = json.load(r)
+ if d.get("errors"):
+ if "THROTTLED" in json.dumps(d["errors"]):
+ time.sleep(2.5); continue
+ raise SystemExit("GQL ERR: " + json.dumps(d["errors"]))
+ return d["data"]
+ except urllib.error.HTTPError as e:
+ if e.code == 429:
+ time.sleep(2.5); continue
+ raise
+ raise SystemExit("retries exhausted")
+
+VARS = """
+query($cursor:String){
+ productVariants(first:250, after:$cursor, query:"title:*Single Roll*"){
+ pageInfo{hasNextPage endCursor}
+ edges{node{
+ id sku title
+ product{
+ id vendor status handle
+ qmin:metafield(namespace:"global",key:"v_prods_quantity_order_min"){value}
+ qunits:metafield(namespace:"global",key:"v_prods_quantity_order_units"){value}
+ }
+ }}
+ }
+}
+"""
+
+ORDERS = """
+query($cursor:String,$q:String!){
+ orders(first:50, after:$cursor, query:$q){
+ pageInfo{hasNextPage endCursor}
+ edges{node{
+ name createdAt sourceName
+ lineItems(first:30){edges{node{
+ sku quantity vendor variantTitle
+ }}}
+ }}
+ }
+}
+"""
+
+def main():
+ # -- 1+2: single-roll variant scan grouped by vendor --------------------
+ per_vendor = collections.defaultdict(lambda: dict(
+ products=set(), active=set(), missing_min=set(), min_not2=set(),
+ ok=set(), sample_missing=[]))
+ cursor, more, scanned = None, True, 0
+ while more:
+ d = gql(VARS, {"cursor": cursor})
+ pv = d["productVariants"]
+ for e in pv["edges"]:
+ n = e["node"]; p = n["product"]
+ scanned += 1
+ v = per_vendor[p["vendor"] or "(none)"]
+ pid = p["id"]
+ v["products"].add(pid)
+ if p["status"] == "ACTIVE":
+ v["active"].add(pid)
+ qmin = (p["qmin"] or {}).get("value")
+ qunits = (p["qunits"] or {}).get("value")
+ if qmin is None:
+ v["missing_min"].add(pid)
+ if len(v["sample_missing"]) < 5:
+ v["sample_missing"].append(dict(sku=n["sku"], handle=p["handle"]))
+ elif qmin != "2" or qunits != "2":
+ v["min_not2"].add(pid)
+ else:
+ v["ok"].add(pid)
+ more = pv["pageInfo"]["hasNextPage"]; cursor = pv["pageInfo"]["endCursor"]
+ sys.stderr.write(f"\rvariants scanned {scanned}")
+ time.sleep(0.2)
+ sys.stderr.write("\n")
+
+ # -- 3: realized qty-1 leaks in last 60 days ---------------------------
+ since = (datetime.date.today() - datetime.timedelta(days=60)).isoformat()
+ leaks = []
+ cursor, more, oscan = None, True, 0
+ try:
+ while more:
+ d = gql(ORDERS, {"cursor": cursor, "q": f"created_at:>={since}"}, token=ORDERS_TOKEN)
+ oo = d["orders"]
+ for e in oo["edges"]:
+ o = e["node"]; oscan += 1
+ for le in o["lineItems"]["edges"]:
+ li = le["node"]
+ vt = (li["variantTitle"] or "")
+ if "single roll" in vt.lower() and li["quantity"] is not None and li["quantity"] % 2 == 1:
+ leaks.append(dict(order=o["name"], created=o["createdAt"],
+ source=o["sourceName"], sku=li["sku"],
+ vendor=li["vendor"], qty=li["quantity"]))
+ more = oo["pageInfo"]["hasNextPage"]; cursor = oo["pageInfo"]["endCursor"]
+ sys.stderr.write(f"\rorders scanned {oscan}")
+ time.sleep(0.2)
+ sys.stderr.write("\n")
+ except SystemExit as e:
+ print(f"\n(order scan unavailable: {e}) — GAP-B via orders skipped", file=sys.stderr)
+
+ # -- report -------------------------------------------------------------
+ out_vendors = {}
+ print(f"\n== Single-roll-priced variants: {scanned} across {len(per_vendor)} vendors ==")
+ print(f"{'vendor':32s} {'prods':>6s} {'active':>6s} {'ok 2/2':>6s} {'no-min':>6s} {'min!=2':>6s}")
+ for vend, v in sorted(per_vendor.items(), key=lambda kv: -len(kv[1]["active"])):
+ out_vendors[vend] = dict(products=len(v["products"]), active=len(v["active"]),
+ ok=len(v["ok"]), missing_min=len(v["missing_min"]),
+ min_not2=len(v["min_not2"]),
+ sample_missing=v["sample_missing"])
+ print(f"{vend[:32]:32s} {len(v['products']):6d} {len(v['active']):6d} "
+ f"{len(v['ok']):6d} {len(v['missing_min']):6d} {len(v['min_not2']):6d}")
+
+ print(f"\n== Realized odd-qty single-roll orders (last 60d): {len(leaks)} ==")
+ for l in leaks[:15]:
+ print(f" {l['order']} {l['created'][:10]} {l['source']:8s} {l['vendor']:24s} {l['sku']} qty={l['qty']}")
+
+ audit = dict(generated_at=datetime.datetime.now().isoformat(),
+ variants_scanned=scanned, vendors=out_vendors, odd_qty_orders=leaks)
+ os.makedirs(os.path.dirname(AUDIT_PATH), exist_ok=True)
+ with open(AUDIT_PATH, "w") as f:
+ json.dump(audit, f, indent=1)
+ print(f"\nAudit JSON: {AUDIT_PATH}")
+
+if __name__ == "__main__":
+ main()
diff --git a/shopify/scripts/audits/single-roll-brands-min-step-audit.json b/shopify/scripts/audits/single-roll-brands-min-step-audit.json
new file mode 100644
index 00000000..a100e5a9
--- /dev/null
+++ b/shopify/scripts/audits/single-roll-brands-min-step-audit.json
@@ -0,0 +1,1028 @@
+{
+ "generated_at": "2026-07-02T09:58:30.076980",
+ "variants_scanned": 15034,
+ "vendors": {
+ "Thibaut": {
+ "products": 2018,
+ "active": 1999,
+ "ok": 1945,
+ "missing_min": 48,
+ "min_not2": 6,
+ "sample_missing": [
+ {
+ "sku": "DWTT-73611",
+ "handle": "mackinac-terracotta-dwtt-73611"
+ },
+ {
+ "sku": "DWTT-73612",
+ "handle": "maroma-seaglass-dwtt-73612"
+ },
+ {
+ "sku": "DWTT-73613",
+ "handle": "maroma-beige-dwtt-73613"
+ },
+ {
+ "sku": "DWTT-73614",
+ "handle": "maroma-bark-dwtt-73614"
+ },
+ {
+ "sku": "DWTT-73615",
+ "handle": "maroma-olive-dwtt-73615"
+ }
+ ]
+ },
+ "Malibu Wallpaper": {
+ "products": 2126,
+ "active": 1908,
+ "ok": 1908,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Jeffrey Stevens": {
+ "products": 3527,
+ "active": 1391,
+ "ok": 1390,
+ "missing_min": 0,
+ "min_not2": 1,
+ "sample_missing": []
+ },
+ "Schumacher": {
+ "products": 754,
+ "active": 754,
+ "ok": 0,
+ "missing_min": 754,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWLK-800000",
+ "handle": "hoppmosse-ivory-and-multi-dwlk-800000"
+ },
+ {
+ "sku": "DWLK-800010",
+ "handle": "hoppmosse-dove-and-blue-dwlk-800010"
+ },
+ {
+ "sku": "DWLK-800020",
+ "handle": "molntuss-lavender-dwlk-800020"
+ },
+ {
+ "sku": "DWLK-800030",
+ "handle": "korall-ng-brown-dwlk-800030"
+ },
+ {
+ "sku": "DWLK-800040",
+ "handle": "korall-ng-ivory-multi-dwlk-800040"
+ }
+ ]
+ },
+ "PS Removable Wallpaper": {
+ "products": 735,
+ "active": 733,
+ "ok": 733,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "LA Walls": {
+ "products": 701,
+ "active": 535,
+ "ok": 535,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Romo": {
+ "products": 568,
+ "active": 535,
+ "ok": 487,
+ "missing_min": 48,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWRM-241251",
+ "handle": "quadrata-sienna-wallcovering-romo"
+ },
+ {
+ "sku": "DWRM-241197",
+ "handle": "marazzi-oxide-wallcovering-romo"
+ },
+ {
+ "sku": "ROP-73261",
+ "handle": "otillo-anthracite-romo"
+ },
+ {
+ "sku": "DWRM-240001",
+ "handle": "abaca-alabaster-dwrm-240001"
+ },
+ {
+ "sku": "DWRM-240002",
+ "handle": "abaca-atmosphere-dwrm-240002"
+ }
+ ]
+ },
+ "Anna French": {
+ "products": 510,
+ "active": 471,
+ "ok": 442,
+ "missing_min": 26,
+ "min_not2": 3,
+ "sample_missing": [
+ {
+ "sku": "DWAT-65137",
+ "handle": "farmingdale-spa-blue-dwat-65137"
+ },
+ {
+ "sku": "DWAT-65138",
+ "handle": "dalton-eggplant-on-pearl-dwat-65138"
+ },
+ {
+ "sku": "DWAT-65139",
+ "handle": "dalton-spa-blue-on-pearl-dwat-65139"
+ },
+ {
+ "sku": "DWAT-65140",
+ "handle": "dalton-green-on-pearl-dwat-65140"
+ },
+ {
+ "sku": "DWAT-65141",
+ "handle": "dalton-blue-and-white-on-pearl-dwat-65141"
+ }
+ ]
+ },
+ "Designer Wallcoverings": {
+ "products": 638,
+ "active": 432,
+ "ok": 340,
+ "missing_min": 3,
+ "min_not2": 89,
+ "sample_missing": [
+ {
+ "sku": "DIG-43230",
+ "handle": "butterfly-love-golden-black-butterflies"
+ },
+ {
+ "sku": "DIG-540053",
+ "handle": "authentic-1950s-reproduction-vintage-wallcoverings-51"
+ },
+ {
+ "sku": "DIG-540050",
+ "handle": "authentic-1950s-reproduction-vintage-wallcoverings-49"
+ }
+ ]
+ },
+ "Graham & Brown": {
+ "products": 387,
+ "active": 387,
+ "ok": 305,
+ "missing_min": 82,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWGB-200008",
+ "handle": "allure-wallpaper-graham-brown"
+ },
+ {
+ "sku": "DWGB-200024",
+ "handle": "prism-rose-gold-wallpaper-graham-brown"
+ },
+ {
+ "sku": "DWGB-200025",
+ "handle": "gothic-damask-noir-wallpaper-graham-brown"
+ },
+ {
+ "sku": "DWGB-200026",
+ "handle": "gothic-damask-flock-white-wallpaper-graham-brown"
+ },
+ {
+ "sku": "DWGB-200028",
+ "handle": "gothic-damask-flock-cobalt-wallpaper-graham-brown"
+ }
+ ]
+ },
+ "Kravet": {
+ "products": 328,
+ "active": 328,
+ "ok": 0,
+ "missing_min": 5,
+ "min_not2": 323,
+ "sample_missing": [
+ {
+ "sku": "DWKK-100290",
+ "handle": "lille-linen-gold-dwkk-100290"
+ },
+ {
+ "sku": "DWKK-100863",
+ "handle": "ultrasuede-green-taupe-dwkk-100863"
+ },
+ {
+ "sku": "DWKK-101540",
+ "handle": "kravet-couture-34031-1610-dwkk-101540"
+ },
+ {
+ "sku": "DWKK-102010",
+ "handle": "kravet-design-beige-dwkk-102010"
+ },
+ {
+ "sku": "DWKK-102059",
+ "handle": "kravet-smart-light-blue-dwkk-102059"
+ }
+ ]
+ },
+ "Nina Campbell": {
+ "products": 269,
+ "active": 269,
+ "ok": 0,
+ "missing_min": 269,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "EUR-80112",
+ "handle": "eur-80112-ncw4120-designer-wallcoverings-los-angeles"
+ },
+ {
+ "sku": "EUR-80113",
+ "handle": "eur-80113-ncw4120-designer-wallcoverings-los-angeles"
+ },
+ {
+ "sku": "EUR-80114",
+ "handle": "eur-80114-ncw4120-designer-wallcoverings-los-angeles"
+ },
+ {
+ "sku": "EUR-80115",
+ "handle": "eur-80115-ncw4120-designer-wallcoverings-los-angeles"
+ },
+ {
+ "sku": "EUR-80116",
+ "handle": "eur-80116-ncw4121-designer-wallcoverings-los-angeles"
+ }
+ ]
+ },
+ "Versace": {
+ "products": 230,
+ "active": 183,
+ "ok": 83,
+ "missing_min": 0,
+ "min_not2": 100,
+ "sample_missing": []
+ },
+ "Scalamandre Wallpaper": {
+ "products": 174,
+ "active": 174,
+ "ok": 4,
+ "missing_min": 170,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWA-88448",
+ "handle": "wtw0443yuko"
+ },
+ {
+ "sku": "DWA-88449",
+ "handle": "wtw0453wyom"
+ },
+ {
+ "sku": "DWA-88466",
+ "handle": "wtw0422silk"
+ },
+ {
+ "sku": "DWA-88467",
+ "handle": "wtw0447safa"
+ },
+ {
+ "sku": "DWA-88468",
+ "handle": "wtw0414safa"
+ }
+ ]
+ },
+ "Fentucci": {
+ "products": 160,
+ "active": 160,
+ "ok": 159,
+ "missing_min": 0,
+ "min_not2": 1,
+ "sample_missing": []
+ },
+ "Mind the Gap": {
+ "products": 142,
+ "active": 142,
+ "ok": 0,
+ "missing_min": 142,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWC-268059",
+ "handle": "dwc-268059-designerwallcoverings-com"
+ },
+ {
+ "sku": "DWWD-60500",
+ "handle": "dwwd-70500-designerwallcoverings-com"
+ },
+ {
+ "sku": "DWWD-60502",
+ "handle": "dwwd-70502-designerwallcoverings-com"
+ },
+ {
+ "sku": "DWWD-60503",
+ "handle": "dwwd-70503-designerwallcoverings-com"
+ },
+ {
+ "sku": "DWWD-60504",
+ "handle": "dwwd-70504-designerwallcoverings-com"
+ }
+ ]
+ },
+ "Rebel Walls": {
+ "products": 128,
+ "active": 128,
+ "ok": 0,
+ "missing_min": 128,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWRW-450057",
+ "handle": "street-art-brick-wall-rebel-walls"
+ },
+ {
+ "sku": "DWRW-451820",
+ "handle": "waves-magenta-rebel-walls"
+ },
+ {
+ "sku": "DWRW-74894",
+ "handle": "dwrw-74894"
+ },
+ {
+ "sku": "DWRW-75257",
+ "handle": "dwrw-75257"
+ },
+ {
+ "sku": "DWRW-75588",
+ "handle": "dwrw-75588"
+ }
+ ]
+ },
+ "Newwall": {
+ "products": 156,
+ "active": 127,
+ "ok": 0,
+ "missing_min": 127,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWXW-1005074",
+ "handle": "antioquia-yellow-sample-vinyl-dwxw-1005074"
+ },
+ {
+ "sku": "DWXW-1005075",
+ "handle": "antioquia-red-sample-vinyl-dwxw-1005075"
+ },
+ {
+ "sku": "DWXW-1005076",
+ "handle": "antioquia-terracotta-sample-vinyl-dwxw-1005076"
+ },
+ {
+ "sku": "DWXW-1005077",
+ "handle": "baranasi-mauve-sample-vinyl-dwxw-1005077"
+ },
+ {
+ "sku": "DWXW-1005078",
+ "handle": "baranasi-navy-sample-vinyl-dwxw-1005078"
+ }
+ ]
+ },
+ "Phillipe Romano": {
+ "products": 292,
+ "active": 109,
+ "ok": 38,
+ "missing_min": 66,
+ "min_not2": 5,
+ "sample_missing": [
+ {
+ "sku": "AI-Print-Dig-FLOCK-1003AI-North_Sea_Blue",
+ "handle": "daphneys-heirloom-flocked-velvet-wallpaper-russet-orange-north-sea-blue"
+ },
+ {
+ "sku": "AIFLOCK-1003_Russet_Orange_&_North_Sea_Blue",
+ "handle": "daphneys-heirloom-flocked-velvet-wallpaper-russet-orange-north-sea-blue-1"
+ },
+ {
+ "sku": "DWC-187890",
+ "handle": "dwc-187890-designerwallcoverings-com"
+ },
+ {
+ "sku": "DWC-278253",
+ "handle": "dwc-278253-designerwallcoverings-com"
+ },
+ {
+ "sku": "DWWC-508290",
+ "handle": "wood-birch-wallcovering-phillipe-romano"
+ }
+ ]
+ },
+ "DW Bespoke Studio": {
+ "products": 87,
+ "active": 87,
+ "ok": 85,
+ "missing_min": 1,
+ "min_not2": 1,
+ "sample_missing": [
+ {
+ "sku": "DIGGM-7400755-ROLL",
+ "handle": "zappys-happy-days-revival-authentic-1970s-vintage-wallpaper-1"
+ }
+ ]
+ },
+ "British Walls": {
+ "products": 169,
+ "active": 78,
+ "ok": 65,
+ "missing_min": 0,
+ "min_not2": 13,
+ "sample_missing": []
+ },
+ "Ronald Redding": {
+ "products": 215,
+ "active": 62,
+ "ok": 62,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Coordonn\u00e9": {
+ "products": 46,
+ "active": 40,
+ "ok": 0,
+ "missing_min": 35,
+ "min_not2": 5,
+ "sample_missing": [
+ {
+ "sku": "DWXW-1005011",
+ "handle": "padmasalis-black-black-dwxw-1005011"
+ },
+ {
+ "sku": "DWXW-1005012",
+ "handle": "kente-green-green-dwxw-1005012"
+ },
+ {
+ "sku": "DWXW-1005013",
+ "handle": "kente-black-black-dwxw-1005013"
+ },
+ {
+ "sku": "DWXW-1005014",
+ "handle": "kente-wine-wine-dwxw-1005014"
+ },
+ {
+ "sku": "DWXW-1005015",
+ "handle": "kente-black-black-dwxw-1005015"
+ }
+ ]
+ },
+ "Apartment Wallpaper": {
+ "products": 38,
+ "active": 38,
+ "ok": 38,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Innovations USA": {
+ "products": 38,
+ "active": 38,
+ "ok": 0,
+ "missing_min": 38,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWIN-15040",
+ "handle": "rangoon-silk-by-innovations-usa-dwc-rs8505"
+ },
+ {
+ "sku": "DWIN-15041",
+ "handle": "rangoon-silk-by-innovations-usa-dwc-rs8504"
+ },
+ {
+ "sku": "DWIN-15042",
+ "handle": "rangoon-silk-by-innovations-usa-dwc-rs8503"
+ },
+ {
+ "sku": "DWIN-15043",
+ "handle": "rangoon-silk-by-innovations-usa-dwc-rs8502"
+ },
+ {
+ "sku": "DWIN-15060",
+ "handle": "nautilus-by-innovations-usa-dwc-j609"
+ }
+ ]
+ },
+ "Harlequin": {
+ "products": 32,
+ "active": 32,
+ "ok": 0,
+ "missing_min": 32,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWHQ-335000",
+ "handle": "amazilia-gooseberry-harlequin"
+ },
+ {
+ "sku": "DWHQ-335001",
+ "handle": "cranes-in-flight-blush-harlequin"
+ },
+ {
+ "sku": "DWHQ-335002",
+ "handle": "cranes-in-flight-emerald-harlequin"
+ },
+ {
+ "sku": "DWHQ-335003",
+ "handle": "demoiselle-cornflower-first-light-honey-harlequin"
+ },
+ {
+ "sku": "DWHQ-335004",
+ "handle": "demoiselle-kelly-first-light-blush-harlequin"
+ }
+ ]
+ },
+ "Tres Tintas": {
+ "products": 28,
+ "active": 28,
+ "ok": 0,
+ "missing_min": 28,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWXW-1005046",
+ "handle": "kerala-blue-sample-vinyl-dwxw-1005046"
+ },
+ {
+ "sku": "DWXW-1005047",
+ "handle": "kerala-charcoal-sample-vinyl-dwxw-1005047"
+ },
+ {
+ "sku": "DWXW-1005048",
+ "handle": "kerala-sand-sample-vinyl-dwxw-1005048"
+ },
+ {
+ "sku": "DWXW-1005049",
+ "handle": "kerala-beige-sample-vinyl-dwxw-1005049"
+ },
+ {
+ "sku": "DWXW-1005050",
+ "handle": "kerala-taupe-sample-vinyl-dwxw-1005050"
+ }
+ ]
+ },
+ "Zoffany": {
+ "products": 24,
+ "active": 24,
+ "ok": 0,
+ "missing_min": 24,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWZF-187000",
+ "handle": "shagreen-zinc-dwzf-187000"
+ },
+ {
+ "sku": "DWZF-187001",
+ "handle": "persian-tulip-poison-dwzf-187001"
+ },
+ {
+ "sku": "DWZF-187003",
+ "handle": "conway-sahara-dwzf-187003"
+ },
+ {
+ "sku": "DWZF-187004",
+ "handle": "spun-silk-antique-copper-dwzf-187004"
+ },
+ {
+ "sku": "DWZF-187005",
+ "handle": "weathered-stone-plain-bluestone-dwzf-187005"
+ }
+ ]
+ },
+ "Traditional Whimsy": {
+ "products": 21,
+ "active": 21,
+ "ok": 21,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Lee Jofa": {
+ "products": 19,
+ "active": 19,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 19,
+ "sample_missing": []
+ },
+ "Hollywood Wallcoverings": {
+ "products": 13,
+ "active": 13,
+ "ok": 13,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Wallpaper NYC": {
+ "products": 92,
+ "active": 12,
+ "ok": 12,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Missoni Wallpaper": {
+ "products": 42,
+ "active": 12,
+ "ok": 12,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Retro Walls": {
+ "products": 10,
+ "active": 9,
+ "ok": 9,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Phillip Jeffries": {
+ "products": 7,
+ "active": 7,
+ "ok": 0,
+ "missing_min": 7,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWJP-11882",
+ "handle": "dwjp-11882-philip-jeffries-chain-mail-platinum-sword-5855"
+ },
+ {
+ "sku": "DWJP-11886",
+ "handle": "dwjp-11886-philip-jeffries-rivets-chrome-on-blue-linen-repeat-11-33-28-8cmv-x-11-3328-8cm-h-5872"
+ },
+ {
+ "sku": "DWJP-11889",
+ "handle": "dwjp-11889-philip-jeffries-rivets-nickel-on-marble-linen-repeat-11-33-28-8cmv-x-11-3328-8cm-h-5874"
+ },
+ {
+ "sku": "DWJP-13156",
+ "handle": "dwjp-13156-philip-jeffries-haiku-beige-flourish-on-manicured-white-zen-washi-11-panel-height-mural-repeat-264-670-6-cm-h-9010"
+ },
+ {
+ "sku": "DWJP-13178",
+ "handle": "dwjp-13178-philip-jeffries-haiku-red-rejuvination-on-venetian-glass-glam-grass-11-panel-height-mural-repeat-264-670-6-cm-h-9020"
+ }
+ ]
+ },
+ "Phyllis Morris": {
+ "products": 3,
+ "active": 3,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 3,
+ "sample_missing": []
+ },
+ "Cole & Son": {
+ "products": 5,
+ "active": 3,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 3,
+ "sample_missing": []
+ },
+ "Baker Lifestyle": {
+ "products": 3,
+ "active": 3,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 2,
+ "sample_missing": [
+ {
+ "sku": "DWKK-150010",
+ "handle": "kashmira-indigo-baker-lifestyle"
+ }
+ ]
+ },
+ "Brunschwig & Fils": {
+ "products": 3,
+ "active": 3,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 3,
+ "sample_missing": []
+ },
+ "Caroline Cecil Textiles": {
+ "products": 3,
+ "active": 3,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 2,
+ "sample_missing": [
+ {
+ "sku": "DWKK-150545",
+ "handle": "raja-wp-grey-caroline-cecil-textiles"
+ }
+ ]
+ },
+ "Clarke and Clarke": {
+ "products": 3,
+ "active": 3,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 2,
+ "sample_missing": [
+ {
+ "sku": "DWKK-150783",
+ "handle": "lost-adventure-midnight-wp-clarke-and-clarke"
+ }
+ ]
+ },
+ "Gaston Y Daniela": {
+ "products": 2,
+ "active": 2,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 2,
+ "sample_missing": []
+ },
+ "Kravet Couture": {
+ "products": 2,
+ "active": 2,
+ "ok": 0,
+ "missing_min": 2,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWKK-143582",
+ "handle": "songbird-dawn-kravet-couture"
+ },
+ {
+ "sku": "DWKK-153586",
+ "handle": "songbird-sunset-kravet-couture"
+ }
+ ]
+ },
+ "Kravet Design": {
+ "products": 2,
+ "active": 2,
+ "ok": 0,
+ "missing_min": 2,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWKK-143879",
+ "handle": "kravet-design-w3606-5-kravet-design"
+ },
+ {
+ "sku": "DWKK-153878",
+ "handle": "kravet-design-w3606-3-kravet-design"
+ }
+ ]
+ },
+ "Malibu Walls": {
+ "products": 2,
+ "active": 2,
+ "ok": 0,
+ "missing_min": 2,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWBR-170664",
+ "handle": "intrepid-light-grey-dwbr-170664"
+ },
+ {
+ "sku": "DWBR-170665",
+ "handle": "intrepid-aqua-dwbr-170665"
+ }
+ ]
+ },
+ "Glambeads by DW": {
+ "products": 2,
+ "active": 1,
+ "ok": 1,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Roberto Cavalli": {
+ "products": 1,
+ "active": 1,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWRC-140009",
+ "handle": "dwrc-140009-designer-wallcobverings"
+ }
+ ]
+ },
+ "Ralph Lauren": {
+ "products": 1,
+ "active": 1,
+ "ok": 1,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "G P & J Baker": {
+ "products": 1,
+ "active": 1,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWKK-152907",
+ "handle": "tall-trees-delft-blue-g-p-j-baker"
+ }
+ ]
+ },
+ "Lee Jofa Modern": {
+ "products": 1,
+ "active": 1,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWKK-155016",
+ "handle": "hutch-raffia-ivory-lee-jofa-modern"
+ }
+ ]
+ },
+ "Mulberry": {
+ "products": 1,
+ "active": 1,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 1,
+ "sample_missing": []
+ },
+ "Scion": {
+ "products": 1,
+ "active": 1,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWKK-155304",
+ "handle": "parlour-palm-scion"
+ }
+ ]
+ },
+ "Threads": {
+ "products": 1,
+ "active": 1,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWKK-155345",
+ "handle": "fallingwater-charcoal-threads"
+ }
+ ]
+ },
+ "Winfield Thybony": {
+ "products": 1,
+ "active": 1,
+ "ok": 0,
+ "missing_min": 1,
+ "min_not2": 0,
+ "sample_missing": [
+ {
+ "sku": "DWKK-156194",
+ "handle": "compass-clay-winfield-thybony"
+ }
+ ]
+ },
+ "Koroseal": {
+ "products": 1,
+ "active": 1,
+ "ok": 1,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Fentucci Wallpaper": {
+ "products": 4,
+ "active": 0,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Florence Broadhurst": {
+ "products": 24,
+ "active": 0,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Glass Beaded": {
+ "products": 14,
+ "active": 0,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Martyn Lawrence Bullard": {
+ "products": 12,
+ "active": 0,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Scalamandre": {
+ "products": 1,
+ "active": 0,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Armani Casa": {
+ "products": 215,
+ "active": 0,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ },
+ "Daisy Bennett": {
+ "products": 1,
+ "active": 0,
+ "ok": 0,
+ "missing_min": 0,
+ "min_not2": 0,
+ "sample_missing": []
+ }
+ },
+ "odd_qty_orders": [
+ {
+ "order": "#32392",
+ "created": "2026-06-18T21:36:14Z",
+ "source": "web",
+ "sku": "DWTT-81070",
+ "vendor": "Thibaut",
+ "qty": 3
+ },
+ {
+ "order": "#32418",
+ "created": "2026-06-22T14:57:30Z",
+ "source": "web",
+ "sku": "ROP-73260",
+ "vendor": "Romo",
+ "qty": 1
+ },
+ {
+ "order": "#32486",
+ "created": "2026-06-30T16:20:06Z",
+ "source": "web",
+ "sku": "DWTT-80064",
+ "vendor": "Thibaut",
+ "qty": 1
+ },
+ {
+ "order": "#32487",
+ "created": "2026-06-30T16:32:02Z",
+ "source": "shopify_draft_order",
+ "sku": "DWTT-80064",
+ "vendor": "Thibaut",
+ "qty": 1
+ },
+ {
+ "order": "#32494",
+ "created": "2026-06-30T21:31:35Z",
+ "source": "web",
+ "sku": "DWTT-80707",
+ "vendor": "Thibaut",
+ "qty": 3
+ },
+ {
+ "order": "#32500",
+ "created": "2026-07-01T16:41:46Z",
+ "source": "shopify_draft_order",
+ "sku": "DWTT-80707",
+ "vendor": "Thibaut",
+ "qty": 1
+ },
+ {
+ "order": "#32512",
+ "created": "2026-07-02T12:45:08Z",
+ "source": "web",
+ "sku": "DWJS-14130",
+ "vendor": "Jeffrey Stevens",
+ "qty": 1
+ }
+ ]
+}
\ No newline at end of file
← 7590d2f5 sangetsu: full per-colorway build — 19,463 staged records (S
·
back to Designer Wallcoverings
·
Thibaut wave-2 backfill FULL RUN complete: 894/1341 PDP-conf e382b648 →