← back to Maya Width Fix
TK-11029: read-only diagnosis + deterministic dry-run correction pipeline + tested widthlib + source proof
3b407f58df57ca58df7c65eb9c5ec7f7e77f1929 · 2026-09-02 13:57:01 -0700 · Steve Abrams
- widthlib.py: pure width classifier (SINGLE/MULTI_WIDTH/META_POLLUTION), 17 unit tests (fixtures=live DB distinct values + negatives), all pass
- diagnose.py: read-only DB diagnosis -> 224 total, 2 residual polluted (DWMR-80026/80211, both 404), 222 clean
- authoritative_source.py: $0 read-only re-scrape + DB reconciliation; all 14 single-width slugs match DB exactly, 2x404, 4 multi-width
- pipeline.py: deterministic DRY-RUN correction plan (never writes; --apply refused); rollback artifact per run
- evidence/: committed stable JSON proofs; README with finalizer gated-apply path
No canonical DB/Shopify writes, no deploy/restart/spend/send/DNS/delete/remote-push. Prior applied backfill + restore-maps left intact.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8Z4wTw69YbodS8A2FkQj4
Files touched
M .gitignoreA README.mdA __pycache__/widthlib.cpython-314.pycA authoritative_source.pyA diagnose.pyA evidence/diagnosis.jsonA evidence/dryrun-plan-all.jsonA evidence/dryrun-plan-polluted.jsonA evidence/source-proof.jsonA pipeline.pyA test_widthlib.pyA widthlib.py
Diff
commit 3b407f58df57ca58df7c65eb9c5ec7f7e77f1929
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Sep 2 13:57:01 2026 -0700
TK-11029: read-only diagnosis + deterministic dry-run correction pipeline + tested widthlib + source proof
- widthlib.py: pure width classifier (SINGLE/MULTI_WIDTH/META_POLLUTION), 17 unit tests (fixtures=live DB distinct values + negatives), all pass
- diagnose.py: read-only DB diagnosis -> 224 total, 2 residual polluted (DWMR-80026/80211, both 404), 222 clean
- authoritative_source.py: $0 read-only re-scrape + DB reconciliation; all 14 single-width slugs match DB exactly, 2x404, 4 multi-width
- pipeline.py: deterministic DRY-RUN correction plan (never writes; --apply refused); rollback artifact per run
- evidence/: committed stable JSON proofs; README with finalizer gated-apply path
No canonical DB/Shopify writes, no deploy/restart/spend/send/DNS/delete/remote-push. Prior applied backfill + restore-maps left intact.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8Z4wTw69YbodS8A2FkQj4
---
.gitignore | 6 +
README.md | 75 ++
__pycache__/widthlib.cpython-314.pyc | Bin 0 -> 4037 bytes
authoritative_source.py | 127 ++
diagnose.py | 71 ++
evidence/diagnosis.json | 156 +++
evidence/dryrun-plan-all.json | 2261 ++++++++++++++++++++++++++++++++++
evidence/dryrun-plan-polluted.json | 38 +
evidence/source-proof.json | 354 ++++++
pipeline.py | 137 ++
test_widthlib.py | 75 ++
widthlib.py | 68 +
12 files changed, 3368 insertions(+)
diff --git a/.gitignore b/.gitignore
index ff2422c..a20ab8b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,9 @@ node_modules/
tmp/
*.log
.DS_Store
+
+# TK-11029 generated dry-run churn (stable copies live in evidence/)
+/diagnosis-*.json
+/dryrun-plan-*.json
+/restore-map-dryrun-*.json
+/authoritative-source-proof-*.json
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..da900cb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,75 @@
+# maya-width-fix — TK-11029
+
+Fixes the `maya_catalog.width` meta-tag pollution: at ticket open, **all 224**
+`DWMR-8%` rows held the scraped garbage string `=device-width, initial-scale=1">`
+(a `<meta name="viewport">` leak), so the Maya importer emitted 0 width metafields.
+
+## Current state (read-only, verified 2026-09-02)
+
+| metric | value |
+|---|---|
+| total `DWMR-8%` rows | 224 |
+| originally polluted | 224 / 224 |
+| **still polluted (residual)** | **2** — `DWMR-80026`, `DWMR-80211` |
+| clean width | 222 |
+| `width_inches` NULL | 17 (genuine multi-width, ambiguous by design) + 2 residual |
+
+The 2 residual rows (`cozy-bed-fellow` / `cozy-nestle`) return **HTTP 404** on
+mayaromanoff.com (discontinued) → width is **unrecoverable from the web**; needs a
+Maya rep/PDF. A rep width-request email is drafted (unsent, Steve-gated). **Do not guess.**
+
+## Authoritative source
+
+`mayaromanoff.com/collections/<slug>` → the spec-table `Width` cell. `$0` plain-fetch
+GET, no browser/proxy/creds. Each collection resolves to exactly one width string,
+classified as SINGLE (one roll width → `width_inches` derivable) or MULTI_WIDTH (one
+pattern genuinely offered in 2 roll widths, **no per-SKU width exists** → keep the full
+string, `width_inches` = NULL).
+
+## Files
+
+| file | role | writes? |
+|---|---|---|
+| `widthlib.py` | pure width classifier/parser (SINGLE / MULTI_WIDTH / META_POLLUTION / …) | none |
+| `test_widthlib.py` | unit tests, fixtures = live DB distinct values + negatives | none |
+| `diagnose.py` | read-only DB diagnosis → `evidence/diagnosis.json` | none |
+| `authoritative_source.py` | read-only re-scrape + DB reconciliation source-proof | none |
+| `pipeline.py` | **deterministic DRY-RUN** correction plan + rollback artifact | **none** |
+| `restore.py` | one-command UNDO from a restore-map (finalizer/undo tool) | DB (undo only) |
+| `evidence/` | committed stable copies of the JSON proofs | — |
+
+`scrape.py` / `backfill.py` / `backfill-multiwidth.py` + `restore-map-2026-*.json`
+are the **prior** (already-applied) one-time backfill + its rollback maps — left intact.
+
+## Run
+
+```bash
+python3 test_widthlib.py # unit tests (exit 0 = pass)
+python3 diagnose.py # current counts + residual rows
+python3 authoritative_source.py # re-scrape + prove DB == live source
+python3 pipeline.py # DRY-RUN plan, currently-polluted scope (2 rows)
+python3 pipeline.py --simulate-all # DRY-RUN plan over all 224 (proves convergence)
+python3 pipeline.py --apply # REFUSED — dry-run only (see below)
+```
+
+## Finalizer (/root) apply path — GATED
+
+`pipeline.py` never writes. Applying a `maya_catalog` correction is a **canonical
+Mac2-staging-DB write** and stays gated. To apply a reviewed dry-run plan:
+
+1. Re-run `python3 pipeline.py --simulate-all` (or polluted scope) to regenerate the
+ plan + a fresh `restore-map-dryrun-<ts>.json` (rollback artifact) against live DB.
+2. Review `plan[].sql` — each is a single bounded `UPDATE … WHERE dw_sku='…'`.
+3. Apply the `sql` lines (finalizer authority) inside one transaction.
+4. **Undo** at any time: `python3 restore.py restore-map-dryrun-<ts>.json`.
+
+Current recommendation for the finalizer: **no apply needed.** 222/224 are already
+correct; the 2 residual are unrecoverable (rep-gated); the only `--simulate-all` diff
+is 3 `wisping-weaves-montauk` rows where the **stored DB value is cleaner**
+(`137.2 cm`) than the live page's current vendor typo (`137.2 m`, curly quote) —
+cosmetic, `width_inches` NULL either way → keep the DB value.
+
+## Constraints honored
+
+Read-only diagnosis + dry-run only. No canonical DB / Shopify writes, no
+deploy/restart/spend/send/DNS/delete/remote-push. Unrelated edits preserved.
diff --git a/__pycache__/widthlib.cpython-314.pyc b/__pycache__/widthlib.cpython-314.pyc
new file mode 100644
index 0000000..830c005
Binary files /dev/null and b/__pycache__/widthlib.cpython-314.pyc differ
diff --git a/authoritative_source.py b/authoritative_source.py
new file mode 100644
index 0000000..4080289
--- /dev/null
+++ b/authoritative_source.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env python3
+"""
+authoritative_source.py — TK-11029 authoritative-field mapping + SOURCE PROOF.
+
+READ-ONLY. Re-fetches each Maya Romanoff collection page ($0 plain-fetch GET,
+no browser/proxy/creds), extracts the spec-table Width value, classifies it with
+widthlib, and (if the DB is reachable) proves the already-applied maya_catalog
+widths equal the live authoritative source.
+
+Emits: authoritative-source-proof-<ts>.json
+Never writes the DB. Network egress = read-only GETs of public product pages.
+"""
+import urllib.request, re, json, subprocess, sys, datetime, os
+from widthlib import classify_width, is_meta_pollution
+
+SLUGS = [
+ "island-weaves", "craze", "natural-elements", "braided-hemp", "ajiro-burst-of-happiness",
+ "entwine-inlet-linen", "serigraph-cityscape", "beadazzled-leaf", "entwine-tranquil-linen",
+ "bouquet", "entwine-serene-silk", "wisping-weaves-montauk", "beadazzled",
+ "wisping-weaves-cape-may", "cozy-nestle", "cozy-bed-fellow", "coco-chenille",
+ "beadazzled-geode", "hurly-burly-ii", "ajiro-sunburst",
+]
+UA = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 "
+ "(KHTML, like Gecko) Chrome/120 Safari/537.36")
+WIDTH_RX = re.compile(r'>\s*Width\s*</td>\s*<td[^>]*>\s*([^<]{1,120}?)\s*</td>', re.I)
+HERE = os.path.dirname(os.path.abspath(__file__))
+
+
+def fetch_width(slug, attempts=3):
+ url = f"https://www.mayaromanoff.com/collections/{slug}"
+ last = None
+ for i in range(attempts):
+ try:
+ req = urllib.request.Request(url, headers={"User-Agent": UA})
+ with urllib.request.urlopen(req, timeout=30) as r:
+ html = r.read().decode("utf-8", "ignore")
+ status = r.status
+ break
+ except urllib.error.HTTPError as e:
+ # 404 is authoritative (discontinued) — do not retry
+ return {"slug": slug, "http_status": e.code, "width": None, "error": f"HTTP {e.code}"}
+ except Exception as e:
+ last = str(e)
+ import time as _t; _t.sleep(1.5 * (i + 1))
+ else:
+ return {"slug": slug, "http_status": None, "width": None, "error": f"transient: {last}"}
+ m = WIDTH_RX.search(html)
+ val = re.sub(r"\s+", " ", m.group(1).strip()) if m else None
+ dec, wi = classify_width(val)
+ return {"slug": slug, "http_status": status, "width": val,
+ "decision": dec, "width_inches": wi}
+
+
+def db_rows():
+ """Current maya_catalog state per collection slug (read-only)."""
+ sql = ("SELECT split_part(product_url,'/collections/',2) AS slug, "
+ "count(*), "
+ "count(*) FILTER (WHERE width LIKE '%device-width%'), "
+ "string_agg(DISTINCT coalesce(width_inches::text,'NULL'), '|') "
+ "FROM maya_catalog WHERE dw_sku LIKE 'DWMR-8%' GROUP BY slug")
+ r = subprocess.run(["psql", "-h", "/tmp", "-d", "dw_unified", "-At", "-F", "\t", "-c", sql],
+ capture_output=True, text=True)
+ if r.returncode != 0:
+ return None
+ out = {}
+ for line in r.stdout.strip().split("\n"):
+ if not line:
+ continue
+ slug, n, poll, wis = line.split("\t")
+ out[slug] = {"rows": int(n), "polluted": int(poll), "db_width_inches": wis}
+ return out
+
+
+def main():
+ ts = datetime.datetime.now(datetime.timezone.utc).isoformat()
+ src = [fetch_width(s) for s in SLUGS]
+ for s in src:
+ print(f" {s['slug']:28s} http={str(s.get('http_status')):>4} "
+ f"{s.get('decision','-'):<14} wi={s.get('width_inches')} {s.get('width')}")
+
+ db = db_rows()
+ proof = []
+ if db:
+ for s in src:
+ d = db.get(s["slug"])
+ if not d:
+ continue
+ match = None
+ if s.get("decision") == "SINGLE":
+ # every recovered row for this slug should carry the parsed inch value
+ match = (d["db_width_inches"] == s["width_inches"])
+ elif s.get("decision") == "MULTI_WIDTH":
+ match = (d["db_width_inches"] == "NULL") # ambiguous by design
+ elif s.get("http_status") == 404:
+ match = (d["polluted"] > 0) # correctly left flagged
+ proof.append({"slug": s["slug"], "decision": s.get("decision"),
+ "http_status": s.get("http_status"),
+ "src_width_inches": s.get("width_inches"),
+ "db_width_inches": d["db_width_inches"],
+ "db_rows": d["rows"], "db_polluted": d["polluted"],
+ "db_matches_source": match})
+
+ single_ok = all(p["db_matches_source"] for p in proof
+ if p["decision"] == "SINGLE" and p["db_matches_source"] is not None)
+ out = {
+ "ticket": "TK-11029", "generated_at": ts, "mode": "READ-ONLY source proof",
+ "source": "mayaromanoff.com collection spec-table Width cell",
+ "slugs_fetched": len(src),
+ "http_200": sum(1 for s in src if s.get("http_status") == 200),
+ "http_404": sum(1 for s in src if s.get("http_status") == 404),
+ "single_slugs": sum(1 for s in src if s.get("decision") == "SINGLE"),
+ "multi_width_slugs": sum(1 for s in src if s.get("decision") == "MULTI_WIDTH"),
+ "authoritative_source": src,
+ "db_reconciliation": proof,
+ "all_single_slugs_match_db": bool(single_ok) if proof else None,
+ }
+ path = os.path.join(HERE, f"authoritative-source-proof-{ts.replace(':', '-')}.json")
+ json.dump(out, open(path, "w"), indent=2)
+ print(f"\nSOURCE PROOF -> {path}")
+ print(f" 200s={out['http_200']} 404s={out['http_404']} "
+ f"single={out['single_slugs']} multi={out['multi_width_slugs']} "
+ f"all_single_match_db={out['all_single_slugs_match_db']}")
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/diagnose.py b/diagnose.py
new file mode 100644
index 0000000..9580ec8
--- /dev/null
+++ b/diagnose.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python3
+"""
+diagnose.py — TK-11029 READ-ONLY diagnosis of maya_catalog.width pollution.
+Emits exact affected counts (original vs current), per-slug breakdown, and the
+residual still-polluted rows. Zero writes. dw_unified via local socket.
+"""
+import subprocess, json, datetime, os, sys
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+PSQL = ["psql", "-h", "/tmp", "-d", "dw_unified", "-At", "-F", "\t", "-c"]
+
+
+def q(sql):
+ r = subprocess.run(PSQL + [sql], capture_output=True, text=True)
+ if r.returncode != 0:
+ print("SQL ERR:", r.stderr, file=sys.stderr); sys.exit(1)
+ return [ln.split("\t") for ln in r.stdout.strip().split("\n") if ln]
+
+
+def main():
+ ts = datetime.datetime.now(datetime.timezone.utc).isoformat()
+ counts = q("""SELECT
+ count(*) FILTER (WHERE dw_sku LIKE 'DWMR-8%'),
+ count(*) FILTER (WHERE dw_sku LIKE 'DWMR-8%' AND width LIKE '%device-width%'),
+ count(*) FILTER (WHERE dw_sku LIKE 'DWMR-8%' AND width IS NOT NULL AND width NOT LIKE '%device-width%'),
+ count(*) FILTER (WHERE dw_sku LIKE 'DWMR-8%' AND width IS NULL),
+ count(*) FILTER (WHERE dw_sku LIKE 'DWMR-8%' AND width_inches IS NULL)
+ FROM maya_catalog""")[0]
+ total, polluted, clean, nullw, null_wi = map(int, counts)
+
+ residual = [{"dw_sku": r[0], "mfr_sku": r[1], "width": r[2],
+ "width_inches": r[3], "product_url": r[4], "slug": r[5]}
+ for r in q("""SELECT dw_sku, mfr_sku, width, coalesce(width_inches::text,''),
+ product_url, split_part(product_url,'/collections/',2)
+ FROM maya_catalog
+ WHERE dw_sku LIKE 'DWMR-8%' AND width LIKE '%device-width%'
+ ORDER BY dw_sku""")]
+
+ per_slug = [{"slug": r[0], "rows": int(r[1]), "polluted": int(r[2]),
+ "distinct_width_inches": r[3]}
+ for r in q("""SELECT split_part(product_url,'/collections/',2), count(*),
+ count(*) FILTER (WHERE width LIKE '%device-width%'),
+ string_agg(DISTINCT coalesce(width_inches::text,'NULL'),'|')
+ FROM maya_catalog WHERE dw_sku LIKE 'DWMR-8%'
+ GROUP BY 1 ORDER BY 2 DESC""")]
+
+ out = {
+ "ticket": "TK-11029", "generated_at": ts, "mode": "READ-ONLY diagnosis",
+ "table": "maya_catalog", "row_scope": "dw_sku LIKE 'DWMR-8%'",
+ "polluted_string": "=device-width, initial-scale=1\">",
+ "counts": {
+ "total_dwmr8": total,
+ "original_polluted_all_224": total, # historical: 224/224 were polluted at ticket open
+ "current_still_polluted": polluted,
+ "current_clean_width": clean,
+ "current_null_width": nullw,
+ "current_null_width_inches": null_wi, # 17 multi-width (ambiguous) + 2 residual keep NULL/garbage
+ },
+ "residual_rows": residual,
+ "per_slug": per_slug,
+ }
+ path = os.path.join(HERE, f"diagnosis-{ts.replace(':', '-')}.json")
+ json.dump(out, open(path, "w"), indent=2)
+ print(f"total={total} still_polluted={polluted} clean={clean} null_width={nullw} null_width_inches={null_wi}")
+ print(f"residual (needs Maya rep): {[r['dw_sku'] for r in residual]}")
+ print(f"DIAGNOSIS -> {path}")
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/evidence/diagnosis.json b/evidence/diagnosis.json
new file mode 100644
index 0000000..ef2ea67
--- /dev/null
+++ b/evidence/diagnosis.json
@@ -0,0 +1,156 @@
+{
+ "ticket": "TK-11029",
+ "generated_at": "2026-09-02T20:54:39.510058+00:00",
+ "mode": "READ-ONLY diagnosis",
+ "table": "maya_catalog",
+ "row_scope": "dw_sku LIKE 'DWMR-8%'",
+ "polluted_string": "=device-width, initial-scale=1\">",
+ "counts": {
+ "total_dwmr8": 224,
+ "original_polluted_all_224": 224,
+ "current_still_polluted": 2,
+ "current_clean_width": 222,
+ "current_null_width": 0,
+ "current_null_width_inches": 17
+ },
+ "residual_rows": [
+ {
+ "dw_sku": "DWMR-80026",
+ "mfr_sku": "MR-CC-1506-H",
+ "width": "=device-width, initial-scale=1\">",
+ "width_inches": "1",
+ "product_url": "https://www.mayaromanoff.com/collections/cozy-bed-fellow",
+ "slug": "cozy-bed-fellow"
+ },
+ {
+ "dw_sku": "DWMR-80211",
+ "mfr_sku": "MR-CZ-2511",
+ "width": "=device-width, initial-scale=1\">",
+ "width_inches": "1",
+ "product_url": "https://www.mayaromanoff.com/collections/cozy-nestle",
+ "slug": "cozy-nestle"
+ }
+ ],
+ "per_slug": [
+ {
+ "slug": "island-weaves",
+ "rows": 70,
+ "polluted": 0,
+ "distinct_width_inches": "36"
+ },
+ {
+ "slug": "craze",
+ "rows": 47,
+ "polluted": 0,
+ "distinct_width_inches": "55"
+ },
+ {
+ "slug": "natural-elements",
+ "rows": 24,
+ "polluted": 0,
+ "distinct_width_inches": "49"
+ },
+ {
+ "slug": "braided-hemp",
+ "rows": 20,
+ "polluted": 0,
+ "distinct_width_inches": "36"
+ },
+ {
+ "slug": "ajiro-burst-of-happiness",
+ "rows": 16,
+ "polluted": 0,
+ "distinct_width_inches": "36"
+ },
+ {
+ "slug": "entwine-inlet-linen",
+ "rows": 9,
+ "polluted": 0,
+ "distinct_width_inches": "NULL"
+ },
+ {
+ "slug": "serigraph-cityscape",
+ "rows": 8,
+ "polluted": 0,
+ "distinct_width_inches": "36.5"
+ },
+ {
+ "slug": "beadazzled-leaf",
+ "rows": 6,
+ "polluted": 0,
+ "distinct_width_inches": "28.5"
+ },
+ {
+ "slug": "bouquet",
+ "rows": 4,
+ "polluted": 0,
+ "distinct_width_inches": "38"
+ },
+ {
+ "slug": "entwine-serene-silk",
+ "rows": 4,
+ "polluted": 0,
+ "distinct_width_inches": "NULL"
+ },
+ {
+ "slug": "entwine-tranquil-linen",
+ "rows": 4,
+ "polluted": 0,
+ "distinct_width_inches": "54"
+ },
+ {
+ "slug": "wisping-weaves-montauk",
+ "rows": 3,
+ "polluted": 0,
+ "distinct_width_inches": "NULL"
+ },
+ {
+ "slug": "beadazzled",
+ "rows": 2,
+ "polluted": 0,
+ "distinct_width_inches": "28.5"
+ },
+ {
+ "slug": "hurly-burly-ii",
+ "rows": 1,
+ "polluted": 0,
+ "distinct_width_inches": "54"
+ },
+ {
+ "slug": "ajiro-sunburst",
+ "rows": 1,
+ "polluted": 0,
+ "distinct_width_inches": "NULL"
+ },
+ {
+ "slug": "coco-chenille",
+ "rows": 1,
+ "polluted": 0,
+ "distinct_width_inches": "52"
+ },
+ {
+ "slug": "cozy-nestle",
+ "rows": 1,
+ "polluted": 1,
+ "distinct_width_inches": "1"
+ },
+ {
+ "slug": "cozy-bed-fellow",
+ "rows": 1,
+ "polluted": 1,
+ "distinct_width_inches": "1"
+ },
+ {
+ "slug": "beadazzled-geode",
+ "rows": 1,
+ "polluted": 0,
+ "distinct_width_inches": "28.5"
+ },
+ {
+ "slug": "wisping-weaves-cape-may",
+ "rows": 1,
+ "polluted": 0,
+ "distinct_width_inches": "54"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evidence/dryrun-plan-all.json b/evidence/dryrun-plan-all.json
new file mode 100644
index 0000000..ba22304
--- /dev/null
+++ b/evidence/dryrun-plan-all.json
@@ -0,0 +1,2261 @@
+{
+ "ticket": "TK-11029",
+ "generated_at": "2026-09-02T20:55:47.927815+00:00",
+ "mode": "DRY-RUN (no writes)",
+ "scope": "all-224-simulated",
+ "source_proof_used": "authoritative-source-proof-2026-09-02T20-55-17.462412+00-00.json",
+ "rows_in_scope": 224,
+ "actionable_updates": 3,
+ "tally": {
+ "FIX_SINGLE": 0,
+ "KEEP_MULTI_WIDTH": 3,
+ "UNRECOVERABLE_404": 2,
+ "SOURCE_MISSING": 0,
+ "NO_CHANGE": 219
+ },
+ "plan": [
+ {
+ "dw_sku": "DWMR-80000",
+ "mfr_sku": "MR-AZ-1667-G",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80001",
+ "mfr_sku": "MR-ABH-1001",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80002",
+ "mfr_sku": "MR-ABH-1107",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80003",
+ "mfr_sku": "MR-RA-888",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80004",
+ "mfr_sku": "MR-AZ-1604",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80005",
+ "mfr_sku": "MR-AZ-4852-S",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80006",
+ "mfr_sku": "MR-AZ-1176-S",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80007",
+ "mfr_sku": "MR-AZ-1109-S",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80008",
+ "mfr_sku": "MR-AZ-1510-S",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80009",
+ "mfr_sku": "MR-AZ-4508-S",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80010",
+ "mfr_sku": "MR-AS-3604-X",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80011",
+ "mfr_sku": "MR-AS-3676-P",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80012",
+ "mfr_sku": "MR-AS-3608-G",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80013",
+ "mfr_sku": "MR-AS-3607-M",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80014",
+ "mfr_sku": "MR-AS-3852",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80015",
+ "mfr_sku": "MR-AS-3852-G",
+ "slug": "ajiro-burst-of-happiness",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80016",
+ "mfr_sku": "MR-AS-3055-S",
+ "slug": "ajiro-sunburst",
+ "current_width": "15\" Width Approx. 30 in untrimmed (76.2 cm); 18\" Width Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "15\" Width Approx. 30 in untrimmed (76.2 cm); 18\" Width Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80017",
+ "mfr_sku": "MR-RA-555",
+ "slug": "beadazzled",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80018",
+ "mfr_sku": "MR-BM-1389-GS",
+ "slug": "beadazzled",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80019",
+ "mfr_sku": "MR-RA-838",
+ "slug": "beadazzled-geode",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80020",
+ "mfr_sku": "MR-GC-1101",
+ "slug": "beadazzled-leaf",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80021",
+ "mfr_sku": "MR-GC-1510-S",
+ "slug": "beadazzled-leaf",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80022",
+ "mfr_sku": "MR-GC-1109-S",
+ "slug": "beadazzled-leaf",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80023",
+ "mfr_sku": "MR-GC-1113",
+ "slug": "beadazzled-leaf",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80024",
+ "mfr_sku": "MR-GC-1244-G",
+ "slug": "beadazzled-leaf",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80025",
+ "mfr_sku": "MR-GC-1109-G",
+ "slug": "beadazzled-leaf",
+ "current_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "current_width_inches": "28.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "proposed_width_inches": "28.5"
+ },
+ {
+ "dw_sku": "DWMR-80026",
+ "mfr_sku": "MR-CC-1506-H",
+ "slug": "cozy-bed-fellow",
+ "current_width": "=device-width, initial-scale=1\">",
+ "current_width_inches": "1",
+ "decision": "UNRECOVERABLE_404",
+ "proposed_width": null,
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80027",
+ "mfr_sku": "MR-RV-11113",
+ "slug": "bouquet",
+ "current_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "current_width_inches": "38",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "proposed_width_inches": "38"
+ },
+ {
+ "dw_sku": "DWMR-80028",
+ "mfr_sku": "MR-RV-11511",
+ "slug": "bouquet",
+ "current_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "current_width_inches": "38",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "proposed_width_inches": "38"
+ },
+ {
+ "dw_sku": "DWMR-80029",
+ "mfr_sku": "MR-RV-11381",
+ "slug": "bouquet",
+ "current_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "current_width_inches": "38",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "proposed_width_inches": "38"
+ },
+ {
+ "dw_sku": "DWMR-80030",
+ "mfr_sku": "MR-RV-11464",
+ "slug": "bouquet",
+ "current_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "current_width_inches": "38",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 38 in untrimmed (96.5 cm)",
+ "proposed_width_inches": "38"
+ },
+ {
+ "dw_sku": "DWMR-80031",
+ "mfr_sku": "MR-PD-1604-N",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80032",
+ "mfr_sku": "MR-PD-1381-R",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80033",
+ "mfr_sku": "MR-PD-1099-G",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80034",
+ "mfr_sku": "MR-PD-1109-B",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80035",
+ "mfr_sku": "MR-PD-1510-B",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80036",
+ "mfr_sku": "MR-PD-1608-B",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80037",
+ "mfr_sku": "MR-PD-1670-G",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80038",
+ "mfr_sku": "MR-PE-1604-N",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80039",
+ "mfr_sku": "MR-PE-1099-G",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80040",
+ "mfr_sku": "MR-PE-1109-B",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80041",
+ "mfr_sku": "MR-PL-1604-N",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80042",
+ "mfr_sku": "MR-PL-1099-G",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80043",
+ "mfr_sku": "MR-PL-1109-B",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80044",
+ "mfr_sku": "MR-TY-2070",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80045",
+ "mfr_sku": "MR-TY-2051",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80046",
+ "mfr_sku": "MR-TY-2081",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80047",
+ "mfr_sku": "MR-TY-2083",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80048",
+ "mfr_sku": "MR-TY-2073",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80049",
+ "mfr_sku": "MR-TY-2075",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80050",
+ "mfr_sku": "MR-TY-2054",
+ "slug": "braided-hemp",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80051",
+ "mfr_sku": "MR-CC-1667-A",
+ "slug": "coco-chenille",
+ "current_width": "Approx. 52 in untrimmed (132.1 cm)",
+ "current_width_inches": "52",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 52 in untrimmed (132.1 cm)",
+ "proposed_width_inches": "52"
+ },
+ {
+ "dw_sku": "DWMR-80052",
+ "mfr_sku": "MR-FV-25169",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80053",
+ "mfr_sku": "MR-FV-25110",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80054",
+ "mfr_sku": "MR-FV-38032",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80055",
+ "mfr_sku": "MR-FV-38033",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80056",
+ "mfr_sku": "MR-FV-38099",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80057",
+ "mfr_sku": "MR-FV-38105",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80058",
+ "mfr_sku": "MR-FV-38169",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80059",
+ "mfr_sku": "MR-FV-38176",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80060",
+ "mfr_sku": "MR-FV-38179",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80061",
+ "mfr_sku": "MR-FV-38244",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80062",
+ "mfr_sku": "MR-FV-38389",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80063",
+ "mfr_sku": "MR-FV-38501",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80064",
+ "mfr_sku": "MR-FV-41055",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80065",
+ "mfr_sku": "MR-FV-41113",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80066",
+ "mfr_sku": "MR-FV-41176",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80067",
+ "mfr_sku": "MR-FV-41244",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80068",
+ "mfr_sku": "MR-FV-41389",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80069",
+ "mfr_sku": "MR-FV-41507",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80070",
+ "mfr_sku": "MR-FV-41667",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80071",
+ "mfr_sku": "MR-FV-40032",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80072",
+ "mfr_sku": "MR-FV-40099",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80073",
+ "mfr_sku": "MR-FV-40113",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80074",
+ "mfr_sku": "MR-FV-40169",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80075",
+ "mfr_sku": "MR-FV-40176",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80076",
+ "mfr_sku": "MR-FV-40389",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80077",
+ "mfr_sku": "MR-FV-40500",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80078",
+ "mfr_sku": "MR-FV-40504",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80079",
+ "mfr_sku": "MR-FV-40505",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80080",
+ "mfr_sku": "MR-FV-43176",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80081",
+ "mfr_sku": "MR-FV-43381",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80082",
+ "mfr_sku": "MR-FV-43506",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80083",
+ "mfr_sku": "MR-FV-37032",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80084",
+ "mfr_sku": "MR-FV-37105",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80085",
+ "mfr_sku": "MR-FV-37169",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80086",
+ "mfr_sku": "MR-FV-37176",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80087",
+ "mfr_sku": "MR-FV-37179",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80088",
+ "mfr_sku": "MR-FV-37387",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80089",
+ "mfr_sku": "MR-FV-37389",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80090",
+ "mfr_sku": "MR-FV-37500",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80091",
+ "mfr_sku": "MR-FV-37501",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80092",
+ "mfr_sku": "MR-FV-42032",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80093",
+ "mfr_sku": "MR-FV-42105",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80094",
+ "mfr_sku": "MR-FV-42113",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80095",
+ "mfr_sku": "MR-FV-42176",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80096",
+ "mfr_sku": "MR-FV-42505",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80097",
+ "mfr_sku": "MR-FV-42508",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80098",
+ "mfr_sku": "MR-FV-42667",
+ "slug": "craze",
+ "current_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "current_width_inches": "55",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 55 in untrimmed (139.7 cm)",
+ "proposed_width_inches": "55"
+ },
+ {
+ "dw_sku": "DWMR-80099",
+ "mfr_sku": "MR-FV-38407",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80100",
+ "mfr_sku": "MR-FV-38508",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80101",
+ "mfr_sku": "MR-FV-38510",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80102",
+ "mfr_sku": "MR-FV-38603",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80103",
+ "mfr_sku": "MR-FV-38604",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80104",
+ "mfr_sku": "MR-FV-38605",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80105",
+ "mfr_sku": "MR-FV-38606",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80106",
+ "mfr_sku": "MR-FV-38608",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80107",
+ "mfr_sku": "MR-FV-38667",
+ "slug": "entwine-inlet-linen",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80108",
+ "mfr_sku": "MR-FV-40507",
+ "slug": "entwine-serene-silk",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80109",
+ "mfr_sku": "MR-FV-40508",
+ "slug": "entwine-serene-silk",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80110",
+ "mfr_sku": "MR-FV-40667",
+ "slug": "entwine-serene-silk",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80111",
+ "mfr_sku": "MR-FV-40670",
+ "slug": "entwine-serene-silk",
+ "current_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "",
+ "decision": "NO_CHANGE",
+ "proposed_width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80112",
+ "mfr_sku": "MR-FV-37505",
+ "slug": "entwine-tranquil-linen",
+ "current_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "54",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": "54"
+ },
+ {
+ "dw_sku": "DWMR-80113",
+ "mfr_sku": "MR-FV-37506",
+ "slug": "entwine-tranquil-linen",
+ "current_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "54",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": "54"
+ },
+ {
+ "dw_sku": "DWMR-80114",
+ "mfr_sku": "MR-FV-37507",
+ "slug": "entwine-tranquil-linen",
+ "current_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "54",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": "54"
+ },
+ {
+ "dw_sku": "DWMR-80115",
+ "mfr_sku": "MR-FV-37508",
+ "slug": "entwine-tranquil-linen",
+ "current_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "54",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": "54"
+ },
+ {
+ "dw_sku": "DWMR-80116",
+ "mfr_sku": "MR-FV-20176",
+ "slug": "hurly-burly-ii",
+ "current_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "current_width_inches": "54",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 54 in untrimmed (137.2 cm)",
+ "proposed_width_inches": "54"
+ },
+ {
+ "dw_sku": "DWMR-80117",
+ "mfr_sku": "MR-TY-2076",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80118",
+ "mfr_sku": "MR-TY-2069",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80119",
+ "mfr_sku": "MR-TY-2059",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80120",
+ "mfr_sku": "MR-TY-2045",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80121",
+ "mfr_sku": "MR-TY-2047",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80122",
+ "mfr_sku": "MR-TY-2067",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80123",
+ "mfr_sku": "MR-TY-2068",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80124",
+ "mfr_sku": "MR-TY-2084",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80125",
+ "mfr_sku": "MR-TY-2046",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80126",
+ "mfr_sku": "MR-TY-2048",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80127",
+ "mfr_sku": "MR-TY-2063",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80128",
+ "mfr_sku": "MR-TY-2049",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80129",
+ "mfr_sku": "MR-TY-2061",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80130",
+ "mfr_sku": "MR-TY-2058",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80131",
+ "mfr_sku": "MR-TY-2060",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80132",
+ "mfr_sku": "MR-TY-2071",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80133",
+ "mfr_sku": "MR-TY-2062",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80134",
+ "mfr_sku": "MR-TY-2053",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80135",
+ "mfr_sku": "MR-TY-2042",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80136",
+ "mfr_sku": "MR-TY-2064",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80137",
+ "mfr_sku": "MR-TY-2079",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80138",
+ "mfr_sku": "MR-TY-2080",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80139",
+ "mfr_sku": "MR-TY-2065",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80140",
+ "mfr_sku": "MR-TY-2072",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80141",
+ "mfr_sku": "MR-TY-2057",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80142",
+ "mfr_sku": "MR-TY-2078",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80143",
+ "mfr_sku": "MR-TY-2074",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80144",
+ "mfr_sku": "MR-TY-2077",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80145",
+ "mfr_sku": "MR-TY-2082",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80146",
+ "mfr_sku": "MR-TY-2056",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80147",
+ "mfr_sku": "MR-TY-2066",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80148",
+ "mfr_sku": "MR-FV-39099",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80149",
+ "mfr_sku": "MR-FV-39169",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80150",
+ "mfr_sku": "MR-FV-39179",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80151",
+ "mfr_sku": "MR-FV-39385",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80152",
+ "mfr_sku": "MR-FV-39387",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80153",
+ "mfr_sku": "MR-FV-39501",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80154",
+ "mfr_sku": "MR-FV-39505",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80155",
+ "mfr_sku": "MR-FV-39389",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80156",
+ "mfr_sku": "MR-FV-39603",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80157",
+ "mfr_sku": "MR-FV-35109",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80158",
+ "mfr_sku": "MR-FV-35176",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80159",
+ "mfr_sku": "MR-FV-35506",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80160",
+ "mfr_sku": "MR-FV-35510",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80161",
+ "mfr_sku": "MR-FV-31032",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80162",
+ "mfr_sku": "MR-FV-31099",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80163",
+ "mfr_sku": "MR-FV-31105",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80164",
+ "mfr_sku": "MR-FV-31169",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80165",
+ "mfr_sku": "MR-FV-31176",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80166",
+ "mfr_sku": "MR-FV-31389",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80167",
+ "mfr_sku": "MR-FV-31506",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80168",
+ "mfr_sku": "MR-FV-31508",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80169",
+ "mfr_sku": "MR-FV-31509",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80170",
+ "mfr_sku": "MR-FV-33113",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80171",
+ "mfr_sku": "MR-FV-33169",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80172",
+ "mfr_sku": "MR-FV-33389",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80173",
+ "mfr_sku": "MR-FV-33510",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80174",
+ "mfr_sku": "MR-FV-34176",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80175",
+ "mfr_sku": "MR-FV-34389",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80176",
+ "mfr_sku": "MR-FV-34506",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80177",
+ "mfr_sku": "MR-FV-34508",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80178",
+ "mfr_sku": "MR-FV-32176",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80179",
+ "mfr_sku": "MR-FV-32506",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80180",
+ "mfr_sku": "MR-FV-32510",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80181",
+ "mfr_sku": "MR-FV-32667",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80182",
+ "mfr_sku": "MR-FV-36033",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80183",
+ "mfr_sku": "MR-FV-36109",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80184",
+ "mfr_sku": "MR-FV-36167",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80185",
+ "mfr_sku": "MR-FV-36176",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80186",
+ "mfr_sku": "MR-FV-36510",
+ "slug": "island-weaves",
+ "current_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "current_width_inches": "36",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36 in untrimmed (91.4 cm)",
+ "proposed_width_inches": "36"
+ },
+ {
+ "dw_sku": "DWMR-80187",
+ "mfr_sku": "MR-NE-1026",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80188",
+ "mfr_sku": "MR-NE-1176",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80189",
+ "mfr_sku": "MR-NE-1055-S",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80190",
+ "mfr_sku": "MR-NE-1109",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80191",
+ "mfr_sku": "MR-FV-26033",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80192",
+ "mfr_sku": "MR-FV-26099",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80193",
+ "mfr_sku": "MR-FV-26176",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80194",
+ "mfr_sku": "MR-FV-26389",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80195",
+ "mfr_sku": "MR-FV-26510",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80196",
+ "mfr_sku": "MR-FV-29109",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80197",
+ "mfr_sku": "MR-FV-29113",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80198",
+ "mfr_sku": "MR-FV-29605",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80199",
+ "mfr_sku": "MR-FV-27109",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80200",
+ "mfr_sku": "MR-FV-27113",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80201",
+ "mfr_sku": "MR-FV-27176",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80202",
+ "mfr_sku": "MR-FV-27605",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80203",
+ "mfr_sku": "MR-FV-28055",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80204",
+ "mfr_sku": "MR-FV-28176",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80205",
+ "mfr_sku": "MR-FV-28389",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80206",
+ "mfr_sku": "MR-FV-28508",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80207",
+ "mfr_sku": "MR-FV-28510",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80208",
+ "mfr_sku": "MR-FV-30176",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80209",
+ "mfr_sku": "MR-FV-30510",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80210",
+ "mfr_sku": "MR-FV-30605",
+ "slug": "natural-elements",
+ "current_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "current_width_inches": "49",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 49 in untrimmed (124.5 cm)",
+ "proposed_width_inches": "49"
+ },
+ {
+ "dw_sku": "DWMR-80211",
+ "mfr_sku": "MR-CZ-2511",
+ "slug": "cozy-nestle",
+ "current_width": "=device-width, initial-scale=1\">",
+ "current_width_inches": "1",
+ "decision": "UNRECOVERABLE_404",
+ "proposed_width": null,
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80212",
+ "mfr_sku": "MR-SPC-1033-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80213",
+ "mfr_sku": "MR-SPC-1177-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80214",
+ "mfr_sku": "MR-SPC-1506-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80215",
+ "mfr_sku": "MR-SPD-1033-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80216",
+ "mfr_sku": "MR-SPD-1177-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80217",
+ "mfr_sku": "MR-SPD-1506-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80218",
+ "mfr_sku": "MR-SPM-1177-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80219",
+ "mfr_sku": "MR-SPM-1506-E",
+ "slug": "serigraph-cityscape",
+ "current_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "current_width_inches": "36.5",
+ "decision": "NO_CHANGE",
+ "proposed_width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "proposed_width_inches": "36.5"
+ },
+ {
+ "dw_sku": "DWMR-80220",
+ "mfr_sku": "MR-FV-39665",
+ "slug": "wisping-weaves-cape-may",
+ "current_width": "54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "current_width_inches": "54",
+ "decision": "NO_CHANGE",
+ "proposed_width": "54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "proposed_width_inches": "54"
+ },
+ {
+ "dw_sku": "DWMR-80221",
+ "mfr_sku": "MR-FV-31510",
+ "slug": "wisping-weaves-montauk",
+ "current_width": "27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\" untrimmed (137.2 cm), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "current_width_inches": "",
+ "decision": "KEEP_MULTI_WIDTH",
+ "proposed_width": "27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "proposed_width_inches": null,
+ "sql": "UPDATE maya_catalog SET width='27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)', width_inches = NULL, updated_at=now() WHERE dw_sku='DWMR-80221';"
+ },
+ {
+ "dw_sku": "DWMR-80222",
+ "mfr_sku": "MR-FV-31511",
+ "slug": "wisping-weaves-montauk",
+ "current_width": "27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\" untrimmed (137.2 cm), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "current_width_inches": "",
+ "decision": "KEEP_MULTI_WIDTH",
+ "proposed_width": "27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "proposed_width_inches": null,
+ "sql": "UPDATE maya_catalog SET width='27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)', width_inches = NULL, updated_at=now() WHERE dw_sku='DWMR-80222';"
+ },
+ {
+ "dw_sku": "DWMR-80223",
+ "mfr_sku": "MR-FV-31603",
+ "slug": "wisping-weaves-montauk",
+ "current_width": "27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\" untrimmed (137.2 cm), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "current_width_inches": "",
+ "decision": "KEEP_MULTI_WIDTH",
+ "proposed_width": "27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "proposed_width_inches": null,
+ "sql": "UPDATE maya_catalog SET width='27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)', width_inches = NULL, updated_at=now() WHERE dw_sku='DWMR-80223';"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evidence/dryrun-plan-polluted.json b/evidence/dryrun-plan-polluted.json
new file mode 100644
index 0000000..53db44c
--- /dev/null
+++ b/evidence/dryrun-plan-polluted.json
@@ -0,0 +1,38 @@
+{
+ "ticket": "TK-11029",
+ "generated_at": "2026-09-02T20:56:15.187699+00:00",
+ "mode": "DRY-RUN (no writes)",
+ "scope": "currently-polluted-only",
+ "source_proof_used": "authoritative-source-proof-2026-09-02T20-55-17.462412+00-00.json",
+ "rows_in_scope": 2,
+ "actionable_updates": 0,
+ "tally": {
+ "FIX_SINGLE": 0,
+ "KEEP_MULTI_WIDTH": 0,
+ "UNRECOVERABLE_404": 2,
+ "SOURCE_MISSING": 0,
+ "NO_CHANGE": 0
+ },
+ "plan": [
+ {
+ "dw_sku": "DWMR-80026",
+ "mfr_sku": "MR-CC-1506-H",
+ "slug": "cozy-bed-fellow",
+ "current_width": "=device-width, initial-scale=1\">",
+ "current_width_inches": "1",
+ "decision": "UNRECOVERABLE_404",
+ "proposed_width": null,
+ "proposed_width_inches": null
+ },
+ {
+ "dw_sku": "DWMR-80211",
+ "mfr_sku": "MR-CZ-2511",
+ "slug": "cozy-nestle",
+ "current_width": "=device-width, initial-scale=1\">",
+ "current_width_inches": "1",
+ "decision": "UNRECOVERABLE_404",
+ "proposed_width": null,
+ "proposed_width_inches": null
+ }
+ ]
+}
\ No newline at end of file
diff --git a/evidence/source-proof.json b/evidence/source-proof.json
new file mode 100644
index 0000000..25927e3
--- /dev/null
+++ b/evidence/source-proof.json
@@ -0,0 +1,354 @@
+{
+ "ticket": "TK-11029",
+ "generated_at": "2026-09-02T20:55:17.462412+00:00",
+ "mode": "READ-ONLY source proof",
+ "source": "mayaromanoff.com collection spec-table Width cell",
+ "slugs_fetched": 20,
+ "http_200": 18,
+ "http_404": 2,
+ "single_slugs": 14,
+ "multi_width_slugs": 4,
+ "authoritative_source": [
+ {
+ "slug": "island-weaves",
+ "http_status": 200,
+ "width": "Approx. 36 in untrimmed (91.4 cm)",
+ "decision": "SINGLE",
+ "width_inches": "36"
+ },
+ {
+ "slug": "craze",
+ "http_status": 200,
+ "width": "Approx. 55 in untrimmed (139.7 cm)",
+ "decision": "SINGLE",
+ "width_inches": "55"
+ },
+ {
+ "slug": "natural-elements",
+ "http_status": 200,
+ "width": "Approx. 49 in untrimmed (124.5 cm)",
+ "decision": "SINGLE",
+ "width_inches": "49"
+ },
+ {
+ "slug": "braided-hemp",
+ "http_status": 200,
+ "width": "Approx. 36 in untrimmed (91.4 cm)",
+ "decision": "SINGLE",
+ "width_inches": "36"
+ },
+ {
+ "slug": "ajiro-burst-of-happiness",
+ "http_status": 200,
+ "width": "Approx. 36 in untrimmed (91.4 cm)",
+ "decision": "SINGLE",
+ "width_inches": "36"
+ },
+ {
+ "slug": "entwine-inlet-linen",
+ "http_status": 200,
+ "width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "decision": "MULTI_WIDTH",
+ "width_inches": null
+ },
+ {
+ "slug": "serigraph-cityscape",
+ "http_status": 200,
+ "width": "Approx. 36.5 in untrimmed (92.7 cm)",
+ "decision": "SINGLE",
+ "width_inches": "36.5"
+ },
+ {
+ "slug": "beadazzled-leaf",
+ "http_status": 200,
+ "width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "decision": "SINGLE",
+ "width_inches": "28.5"
+ },
+ {
+ "slug": "entwine-tranquil-linen",
+ "http_status": 200,
+ "width": "Approx. 54 in untrimmed (137.2 cm)",
+ "decision": "SINGLE",
+ "width_inches": "54"
+ },
+ {
+ "slug": "bouquet",
+ "http_status": 200,
+ "width": "Approx. 38 in untrimmed (96.5 cm)",
+ "decision": "SINGLE",
+ "width_inches": "38"
+ },
+ {
+ "slug": "entwine-serene-silk",
+ "http_status": 200,
+ "width": "27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "decision": "MULTI_WIDTH",
+ "width_inches": null
+ },
+ {
+ "slug": "wisping-weaves-montauk",
+ "http_status": 200,
+ "width": "27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "decision": "MULTI_WIDTH",
+ "width_inches": null
+ },
+ {
+ "slug": "beadazzled",
+ "http_status": 200,
+ "width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "decision": "SINGLE",
+ "width_inches": "28.5"
+ },
+ {
+ "slug": "wisping-weaves-cape-may",
+ "http_status": 200,
+ "width": "54\u201d untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "decision": "SINGLE",
+ "width_inches": "54"
+ },
+ {
+ "slug": "cozy-nestle",
+ "http_status": 404,
+ "width": null,
+ "error": "HTTP 404"
+ },
+ {
+ "slug": "cozy-bed-fellow",
+ "http_status": 404,
+ "width": null,
+ "error": "HTTP 404"
+ },
+ {
+ "slug": "coco-chenille",
+ "http_status": 200,
+ "width": "Approx. 52 in untrimmed (132.1 cm)",
+ "decision": "SINGLE",
+ "width_inches": "52"
+ },
+ {
+ "slug": "beadazzled-geode",
+ "http_status": 200,
+ "width": "Approx. 28.5 in trimmed (72.4 cm)",
+ "decision": "SINGLE",
+ "width_inches": "28.5"
+ },
+ {
+ "slug": "hurly-burly-ii",
+ "http_status": 200,
+ "width": "Approx. 54 in untrimmed (137.2 cm)",
+ "decision": "SINGLE",
+ "width_inches": "54"
+ },
+ {
+ "slug": "ajiro-sunburst",
+ "http_status": 200,
+ "width": "15\" Width Approx. 30 in untrimmed (76.2 cm); 18\" Width Approx. 36 in untrimmed (91.4 cm)",
+ "decision": "MULTI_WIDTH",
+ "width_inches": null
+ }
+ ],
+ "db_reconciliation": [
+ {
+ "slug": "island-weaves",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "36",
+ "db_width_inches": "36",
+ "db_rows": 70,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "craze",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "55",
+ "db_width_inches": "55",
+ "db_rows": 47,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "natural-elements",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "49",
+ "db_width_inches": "49",
+ "db_rows": 24,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "braided-hemp",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "36",
+ "db_width_inches": "36",
+ "db_rows": 20,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "ajiro-burst-of-happiness",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "36",
+ "db_width_inches": "36",
+ "db_rows": 16,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "entwine-inlet-linen",
+ "decision": "MULTI_WIDTH",
+ "http_status": 200,
+ "src_width_inches": null,
+ "db_width_inches": "NULL",
+ "db_rows": 9,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "serigraph-cityscape",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "36.5",
+ "db_width_inches": "36.5",
+ "db_rows": 8,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "beadazzled-leaf",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "28.5",
+ "db_width_inches": "28.5",
+ "db_rows": 6,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "entwine-tranquil-linen",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "54",
+ "db_width_inches": "54",
+ "db_rows": 4,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "bouquet",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "38",
+ "db_width_inches": "38",
+ "db_rows": 4,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "entwine-serene-silk",
+ "decision": "MULTI_WIDTH",
+ "http_status": 200,
+ "src_width_inches": null,
+ "db_width_inches": "NULL",
+ "db_rows": 4,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "wisping-weaves-montauk",
+ "decision": "MULTI_WIDTH",
+ "http_status": 200,
+ "src_width_inches": null,
+ "db_width_inches": "NULL",
+ "db_rows": 3,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "beadazzled",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "28.5",
+ "db_width_inches": "28.5",
+ "db_rows": 2,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "wisping-weaves-cape-may",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "54",
+ "db_width_inches": "54",
+ "db_rows": 1,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "cozy-nestle",
+ "decision": null,
+ "http_status": 404,
+ "src_width_inches": null,
+ "db_width_inches": "1",
+ "db_rows": 1,
+ "db_polluted": 1,
+ "db_matches_source": true
+ },
+ {
+ "slug": "cozy-bed-fellow",
+ "decision": null,
+ "http_status": 404,
+ "src_width_inches": null,
+ "db_width_inches": "1",
+ "db_rows": 1,
+ "db_polluted": 1,
+ "db_matches_source": true
+ },
+ {
+ "slug": "coco-chenille",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "52",
+ "db_width_inches": "52",
+ "db_rows": 1,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "beadazzled-geode",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "28.5",
+ "db_width_inches": "28.5",
+ "db_rows": 1,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "hurly-burly-ii",
+ "decision": "SINGLE",
+ "http_status": 200,
+ "src_width_inches": "54",
+ "db_width_inches": "54",
+ "db_rows": 1,
+ "db_polluted": 0,
+ "db_matches_source": true
+ },
+ {
+ "slug": "ajiro-sunburst",
+ "decision": "MULTI_WIDTH",
+ "http_status": 200,
+ "src_width_inches": null,
+ "db_width_inches": "NULL",
+ "db_rows": 1,
+ "db_polluted": 0,
+ "db_matches_source": true
+ }
+ ],
+ "all_single_slugs_match_db": true
+}
\ No newline at end of file
diff --git a/pipeline.py b/pipeline.py
new file mode 100644
index 0000000..4d7209a
--- /dev/null
+++ b/pipeline.py
@@ -0,0 +1,137 @@
+#!/usr/bin/env python3
+"""
+pipeline.py — TK-11029 deterministic DRY-RUN correction pipeline for
+maya_catalog.width meta-tag pollution.
+
+DRY-RUN ONLY. Produces, deterministically and reproducibly, the exact per-row
+correction plan by joining current DB rows to the authoritative mayaromanoff.com
+source (via a source-proof JSON, or a fresh read-only re-scrape), classifying each
+with widthlib, and emitting:
+ - dryrun-plan-<ts>.json the proposed UPDATE plan (NOT applied)
+ - restore-map-dryrun-<ts>.json rollback artifact: current state of every row the
+ plan would touch (finalizer applies UPDATEs, then
+ restore.py <this-map> is the one-command undo)
+
+This script performs NO database writes and NO Shopify/deploy/send actions.
+Applying the plan is the finalizer's (/root) gated step — see README.md.
+
+Modes:
+ (default) scope = currently-polluted rows only (width LIKE '%device-width%')
+ --simulate-all scope = ALL 224 DWMR-8 rows, re-derived from source (full-line
+ deterministic plan; proves the correction logic end-to-end)
+ --source PATH use an existing authoritative-source-proof-*.json (skip network)
+"""
+import subprocess, json, datetime, os, sys, glob
+from widthlib import classify_width
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+PSQL = ["psql", "-h", "/tmp", "-d", "dw_unified", "-At", "-F", "\t", "-c"]
+
+
+def db(sql):
+ r = subprocess.run(PSQL + [sql], capture_output=True, text=True)
+ if r.returncode != 0:
+ print("SQL ERR:", r.stderr, file=sys.stderr); sys.exit(1)
+ return [ln.split("\t") for ln in r.stdout.strip().split("\n") if ln]
+
+
+def load_source(path=None):
+ """slug -> {decision, width, width_inches, http_status} from a source-proof JSON."""
+ if not path:
+ cands = sorted(glob.glob(os.path.join(HERE, "authoritative-source-proof-*.json")))
+ if not cands:
+ print("No source-proof JSON found; run authoritative_source.py first "
+ "or pass --source.", file=sys.stderr)
+ sys.exit(2)
+ path = cands[-1]
+ data = json.load(open(path))
+ smap = {s["slug"]: s for s in data["authoritative_source"]}
+ return smap, path
+
+
+def main():
+ args = sys.argv[1:]
+ simulate_all = "--simulate-all" in args
+ src_path = None
+ if "--source" in args:
+ src_path = args[args.index("--source") + 1]
+ if "--apply" in args:
+ print("REFUSED: pipeline.py is DRY-RUN ONLY. Applying maya_catalog writes is a\n"
+ "canonical-DB change owned by the finalizer (/root) under approval. "
+ "See README.md.", file=sys.stderr)
+ return 3
+
+ ts = datetime.datetime.now(datetime.timezone.utc).isoformat()
+ smap, used_src = load_source(src_path)
+
+ where = "" if simulate_all else "AND width LIKE '%device-width%'"
+ rows = db(f"""SELECT dw_sku, mfr_sku, width, coalesce(width_inches::text,''),
+ split_part(product_url,'/collections/',2)
+ FROM maya_catalog WHERE dw_sku LIKE 'DWMR-8%' {where} ORDER BY dw_sku""")
+
+ plan, restore = [], []
+ tally = {"FIX_SINGLE": 0, "KEEP_MULTI_WIDTH": 0, "UNRECOVERABLE_404": 0,
+ "SOURCE_MISSING": 0, "NO_CHANGE": 0}
+ for dw_sku, mfr_sku, cur_w, cur_wi, slug in rows:
+ s = smap.get(slug)
+ restore.append({"dw_sku": dw_sku, "old_width": cur_w, "old_width_inches": cur_wi})
+ if s is None:
+ decision, new_w, new_wi = "SOURCE_MISSING", None, None
+ elif s.get("http_status") == 404 or s.get("width") is None:
+ decision, new_w, new_wi = "UNRECOVERABLE_404", None, None
+ else:
+ dec, wi = classify_width(s["width"])
+ if dec == "SINGLE":
+ decision, new_w, new_wi = "FIX_SINGLE", s["width"], wi
+ elif dec == "MULTI_WIDTH":
+ decision, new_w, new_wi = "KEEP_MULTI_WIDTH", s["width"], None
+ else:
+ decision, new_w, new_wi = "SOURCE_MISSING", None, None
+ # NO_CHANGE if the DB already holds exactly what we'd write
+ if new_w is not None and cur_w == new_w and (cur_wi or "") == (new_wi or ""):
+ decision = "NO_CHANGE"
+ tally[decision] = tally.get(decision, 0) + 1
+ entry = {"dw_sku": dw_sku, "mfr_sku": mfr_sku, "slug": slug,
+ "current_width": cur_w, "current_width_inches": cur_wi,
+ "decision": decision, "proposed_width": new_w,
+ "proposed_width_inches": new_wi}
+ # only rows that would actually change are "actionable"
+ if decision in ("FIX_SINGLE", "KEEP_MULTI_WIDTH"):
+ entry["sql"] = _update_sql(dw_sku, new_w, new_wi)
+ plan.append(entry)
+
+ actionable = [p for p in plan if p["decision"] in ("FIX_SINGLE", "KEEP_MULTI_WIDTH")]
+ out = {
+ "ticket": "TK-11029", "generated_at": ts, "mode": "DRY-RUN (no writes)",
+ "scope": "all-224-simulated" if simulate_all else "currently-polluted-only",
+ "source_proof_used": os.path.basename(used_src),
+ "rows_in_scope": len(rows), "actionable_updates": len(actionable),
+ "tally": tally, "plan": plan,
+ }
+ plan_path = os.path.join(HERE, f"dryrun-plan-{ts.replace(':', '-')}.json")
+ json.dump(out, open(plan_path, "w"), indent=2)
+
+ rm = {"ticket": "TK-11029", "generated_at": ts, "table": "maya_catalog",
+ "columns": "width,width_inches", "restore_map": restore,
+ "note": "finalizer applies dryrun-plan then `python3 restore.py <this>` = undo"}
+ rm_path = os.path.join(HERE, f"restore-map-dryrun-{ts.replace(':', '-')}.json")
+ json.dump(rm, open(rm_path, "w"), indent=2)
+
+ print(f"scope={out['scope']} rows={len(rows)} actionable={len(actionable)} tally={tally}")
+ print(f"DRY-RUN PLAN -> {plan_path}")
+ print(f"RESTORE-MAP -> {rm_path}")
+ if not simulate_all and tally.get("UNRECOVERABLE_404"):
+ print(f"NOTE: {tally['UNRECOVERABLE_404']} residual row(s) unrecoverable from web "
+ f"(collection 404) -> needs Maya rep/PDF; DO NOT guess.")
+ return 0
+
+
+def _update_sql(dw_sku, w, wi):
+ esc = lambda s: (s or "").replace("'", "''")
+ wi_clause = f"width_inches = {wi}" if wi else "width_inches = NULL"
+ return (f"UPDATE maya_catalog SET width='{esc(w)}', {wi_clause}, updated_at=now() "
+ f"WHERE dw_sku='{esc(dw_sku)}';")
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/test_widthlib.py b/test_widthlib.py
new file mode 100644
index 0000000..cb5e042
--- /dev/null
+++ b/test_widthlib.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+"""
+Unit tests for widthlib — TK-11029.
+Fixtures are the EXACT distinct width strings observed in maya_catalog (DWMR-8%),
+plus negative / edge cases. Run: python3 test_widthlib.py (exit 0 = all pass).
+"""
+from widthlib import classify_width, is_meta_pollution, width_measurements
+
+# (raw_width, expected_decision, expected_width_inches) — mirrors live DB distinct values
+CASES = [
+ # --- SINGLE roll width (the recoverable majority) ---
+ ("Approx. 36 in untrimmed (91.4 cm)", "SINGLE", "36"), # island/braided/ajiro-boh (106 rows)
+ ("Approx. 55 in untrimmed (139.7 cm)", "SINGLE", "55"), # craze (47 rows)
+ ("Approx. 49 in untrimmed (124.5 cm)", "SINGLE", "49"), # natural-elements (24 rows)
+ ("Approx. 28.5 in trimmed (72.4 cm)", "SINGLE", "28.5"), # beadazzled* (9 rows)
+ ("Approx. 36.5 in untrimmed (92.7 cm)", "SINGLE", "36.5"), # serigraph-cityscape (8 rows)
+ ("Approx. 54 in untrimmed (137.2 cm)", "SINGLE", "54"), # entwine-tranquil/hurly (5 rows)
+ ("Approx. 38 in untrimmed (96.5 cm)", "SINGLE", "38"), # bouquet (4 rows)
+ ("Approx. 52 in untrimmed (132.1 cm)", "SINGLE", "52"), # coco-chenille (1 row)
+ ("54” untrimmed (137.2 m), 13.5 sq ft/yd (1.25 sq m/yd)", "SINGLE", "54"), # cape-may curly-quote (1 row)
+
+ # --- MULTI_WIDTH (genuine 2-width patterns; NO per-SKU width -> never guess) ---
+ ("27\" Width Approx. 27 in untrimmed (68.6 cm); 54\" Width Approx. 54 in untrimmed (137.2 cm)",
+ "MULTI_WIDTH", None), # entwine-inlet/serene (13 rows)
+ ("27\" untrimmed (68.6 cm), 6.75 sq ft/yd (0.63 sq m/yd); 54\" untrimmed (137.2 cm), 13.5 sq ft/yd (1.25 sq m/yd)",
+ "MULTI_WIDTH", None), # wisping-weaves-montauk (3 rows)
+ ("15\" Width Approx. 30 in untrimmed (76.2 cm); 18\" Width Approx. 36 in untrimmed (91.4 cm)",
+ "MULTI_WIDTH", None), # ajiro-sunburst (1 row)
+
+ # --- META_POLLUTION (the bug this ticket exists for) ---
+ ("=device-width, initial-scale=1\">", "META_POLLUTION", None), # cozy-* 404s (2 rows)
+
+ # --- EMPTY / edge ---
+ (None, "EMPTY", None),
+ ("", "EMPTY", None),
+ (" ", "EMPTY", None),
+
+ # --- UNPARSEABLE (defensive: real text but no roll-width token) ---
+ ("Contact rep for width", "UNPARSEABLE", None),
+]
+
+
+def run():
+ failures = []
+ for raw, exp_dec, exp_wi in CASES:
+ dec, wi = classify_width(raw)
+ if (dec, wi) != (exp_dec, exp_wi):
+ failures.append(f" FAIL classify_width({raw!r}) = ({dec},{wi}) expected ({exp_dec},{exp_wi})")
+
+ # is_meta_pollution focused checks
+ assert is_meta_pollution("=device-width, initial-scale=1\">") is True
+ assert is_meta_pollution("Approx. 36 in untrimmed (91.4 cm)") is False
+ assert is_meta_pollution("") is False
+ assert is_meta_pollution(None) is False
+
+ # measurement counting is the multi-width discriminator
+ assert len(width_measurements("Approx. 36 in untrimmed (91.4 cm)")) == 1
+ assert len(width_measurements("27\" untrimmed (68.6 cm); 54\" untrimmed (137.2 cm)")) == 2
+ assert len(width_measurements("=device-width, initial-scale=1\">")) == 0
+
+ # numeric normalization
+ assert classify_width("Approx. 36.0 in untrimmed (x)") == ("SINGLE", "36")
+ assert classify_width("Approx. 28.50 in trimmed (x)") == ("SINGLE", "28.5")
+
+ if failures:
+ print(f"{len(failures)} FAILURE(S):")
+ print("\n".join(failures))
+ return 1
+ print(f"OK: {len(CASES)} classify cases + focused asserts all pass.")
+ return 0
+
+
+if __name__ == "__main__":
+ import sys
+ sys.exit(run())
diff --git a/widthlib.py b/widthlib.py
new file mode 100644
index 0000000..c1a5653
--- /dev/null
+++ b/widthlib.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+"""
+widthlib — pure, deterministic helpers for classifying/parsing Maya Romanoff
+width strings scraped from mayaromanoff.com collection spec tables.
+
+TK-11029. No I/O, no network, no DB — safe to unit-test in isolation.
+
+Vocabulary of decisions a raw width string maps to:
+ META_POLLUTION the scraped meta-tag leak ('=device-width, initial-scale=1">')
+ -> unrecoverable from the string; needs re-scrape or rep.
+ SINGLE exactly one roll width -> width_inches is derivable.
+ MULTI_WIDTH the vendor genuinely offers ONE pattern in >1 roll width and
+ no per-SKU width exists -> keep the full string, width_inches=NULL
+ (ambiguous BY DESIGN, never guessed).
+ UNPARSEABLE a non-empty, non-pollution string we cannot classify.
+ EMPTY NULL / blank.
+"""
+import re
+
+META_POLLUTION_MARKER = "device-width"
+
+# One roll-width measurement, e.g. "36 in untrimmed", '27" untrimmed', '54” trimmed'.
+# Accepts straight/curly/prime inch marks and the word 'in'. Trailing (un)trimmed anchors it.
+_MEASURE_RX = re.compile(r'(\d+(?:\.\d+)?)\s*(?:in|["”″])\s*(?:un)?trimmed', re.I)
+
+
+def is_meta_pollution(width: str) -> bool:
+ """True iff the width holds the scraped meta-tag garbage."""
+ return bool(width) and META_POLLUTION_MARKER in width
+
+
+def width_measurements(width: str):
+ """Return the ordered list of inch measurements found in the string."""
+ if not width:
+ return []
+ return [m.group(1) for m in _MEASURE_RX.finditer(width)]
+
+
+def classify_width(width):
+ """
+ Classify a raw width string.
+ Returns (decision, width_inches) where width_inches is a str|None.
+ - SINGLE -> the single inch value as a normalized numeric string
+ - MULTI_WIDTH -> None (ambiguous by design)
+ - META_POLLUTION / EMPTY / UNPARSEABLE -> None
+ """
+ if width is None or str(width).strip() == "":
+ return ("EMPTY", None)
+ width = str(width)
+ if is_meta_pollution(width):
+ return ("META_POLLUTION", None)
+ meas = width_measurements(width)
+ if len(meas) == 1:
+ return ("SINGLE", _norm_num(meas[0]))
+ if len(meas) > 1:
+ return ("MULTI_WIDTH", None)
+ return ("UNPARSEABLE", None)
+
+
+def _norm_num(s: str) -> str:
+ """'36.0' -> '36', '28.50' -> '28.5', '28.5' -> '28.5'."""
+ f = float(s)
+ return str(int(f)) if f == int(f) else str(f).rstrip("0").rstrip(".")
+
+
+if __name__ == "__main__":
+ import sys, json
+ print(json.dumps(list(classify_width(sys.argv[1] if len(sys.argv) > 1 else ""))))
← 9397433 TK-11029 phase2: recover 17 multi-width Maya widths (verifie
·
back to Maya Width Fix
·
TK-11029: E2E proof (PASS) + gitignore pycache 4044134 →