[object Object]

← back to Designer Wallcoverings

Tres Tintas designer-description pilot: executor + snippet case-fix + approval memo (officer signed off)

e8637bd7dfcd15f5b5d997a4ee5d0e461a0e0869 · 2026-06-23 07:10:41 -0700 · Steve

Files touched

Diff

commit e8637bd7dfcd15f5b5d997a4ee5d0e461a0e0869
Author: Steve <steve@designerwallcoverings.com>
Date:   Tue Jun 23 07:10:41 2026 -0700

    Tres Tintas designer-description pilot: executor + snippet case-fix + approval memo (officer signed off)
---
 .../tres-tintas-designer-descriptions-pilot.md            |  4 +++-
 shopify/scripts/tres-tintas-designer-descriptions.js      | 15 +++++++++------
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/pending-approval/tres-tintas-designer-descriptions-pilot.md b/pending-approval/tres-tintas-designer-descriptions-pilot.md
index f796abb0..aec0e404 100644
--- a/pending-approval/tres-tintas-designer-descriptions-pilot.md
+++ b/pending-approval/tres-tintas-designer-descriptions-pilot.md
@@ -1,7 +1,9 @@
 # PENDING APPROVAL — Tres Tintas pilot: interior-designer descriptions + spec-metafield backfill (~554 products)
 
-**Drafted:** 2026-06-23 · **Status:** ⏳ AWAITING STEVE
+**Drafted:** 2026-06-23 · **Status:** ⏳ AWAITING STEVE — vp-dw-commerce SIGNED OFF (smoke-test-3-first path); Defect A closed.
 **Owner officer:** vp-dw-commerce (DW catalog / Shopify / customer-facing)
+
+**Officer sign-off (2026-06-23):** vp-dw-commerce reviewed memo + executor + live snippet (both mirrors). Verdict: SIGN OFF with smoke-test-3 first. Confirmed: banned-word guard, metafield-FIRST ordering, additive/skip-if-present writes, idempotent ledger + per-product backups, correct LIVE store, every written metafield key is read by the `dw-specs` snippet. **Defect A (Material was writing legacy `global.Contents`, read only via fallback tail) — CLOSED:** `SPEC_MAP` retargeted to the snippet's canonical `custom.*` keys (Material→`custom.material`, Repeat→`custom.pattern_repeat`, Care→`custom.care`, Origin→`custom.origin`; Width/Weight/Fire already canonical). Re-dry-ran clean. Residual low-risk notes for a post-run audit: products doubling via a non-`<h3>` wrapper aren't caught (the 554 is a floor); no-image products are skipped (need separate image backfill); `Type=Mural` not metafield-backfilled (snippet has no Type row anyway); API version `2024-01` vs house `2024-10` (cosmetic).
 **Gate reason:** Customer-facing LIVE Shopify writes — rewrites `body_html` description + sets product metafields on ~554 live products on the production store (`designer-laboratory-sandbox.myshopify.com`).
 
 ## What this is
diff --git a/shopify/scripts/tres-tintas-designer-descriptions.js b/shopify/scripts/tres-tintas-designer-descriptions.js
index be27097e..9d122fbd 100644
--- a/shopify/scripts/tres-tintas-designer-descriptions.js
+++ b/shopify/scripts/tres-tintas-designer-descriptions.js
@@ -64,17 +64,20 @@ function parseTable(html) {
 }
 
 // Every embedded-table label -> the metafield key dw-specs reads (no data loss).
+// Targets the snippet's CANONICAL custom.* keys (read FIRST) per Defect A
+// sign-off — avoids writing redundant legacy global.* keys that only render
+// via the fallback tail. Width/Weight/Fire were already canonical.
 const SPEC_MAP = {
   'Width':             { ns: 'custom', key: 'width' },
   'Length':            { ns: 'custom', key: 'length' },
-  'Repeat':            { ns: 'global', key: 'repeat' },
-  'Pattern Repeat':    { ns: 'global', key: 'repeat' },
-  'Material':          { ns: 'global', key: 'Contents' },
+  'Repeat':            { ns: 'custom', key: 'pattern_repeat' },
+  'Pattern Repeat':    { ns: 'custom', key: 'pattern_repeat' },
+  'Material':          { ns: 'custom', key: 'material' },
   'Weight':            { ns: 'custom', key: 'product_weight' },
   'Fire Rating':       { ns: 'custom', key: 'fire_rating' },
-  'Care Instructions': { ns: 'global', key: 'Cleaning' },
-  'Care':              { ns: 'global', key: 'Cleaning' },
-  'Origin':            { ns: 'global', key: 'Country' },
+  'Care Instructions': { ns: 'custom', key: 'care' },
+  'Care':              { ns: 'custom', key: 'care' },
+  'Origin':            { ns: 'custom', key: 'origin' },
 };
 
 async function getMetafields(id) {

← 5438ce13 Fix Shopify schema validation errors in toolbar and filter s  ·  back to Designer Wallcoverings  ·  Fix Liquid error: convert collection-toolbar section to snip d2fc51db →