[object Object]

← back to Designer Wallcoverings

cadence-import: delete dead <li> spec-list blocks (TK-10039 hardening)

f321a5a0c030faa51093acae8014dec1017dbec5 · 2026-07-29 20:11:06 -0700 · steve

The specs.push('<li>...') blocks in buildSampleOnlyInput + buildInput were
already discarded by 'void specs' — descriptionHtml is prose-only. Removing
the dead code so a future edit can't accidentally re-wire it into body_html
and re-introduce the list-format defect TK-10030 cleaned fleet-wide.

Files touched

Diff

commit f321a5a0c030faa51093acae8014dec1017dbec5
Author: steve <steve@designerwallcoverings.com>
Date:   Wed Jul 29 20:11:06 2026 -0700

    cadence-import: delete dead <li> spec-list blocks (TK-10039 hardening)
    
    The specs.push('<li>...') blocks in buildSampleOnlyInput + buildInput were
    already discarded by 'void specs' — descriptionHtml is prose-only. Removing
    the dead code so a future edit can't accidentally re-wire it into body_html
    and re-introduce the list-format defect TK-10030 cleaned fleet-wide.
---
 shopify/scripts/cadence/cadence-import.js | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/shopify/scripts/cadence/cadence-import.js b/shopify/scripts/cadence/cadence-import.js
index fd45b5bd..f3ebaba0 100644
--- a/shopify/scripts/cadence/cadence-import.js
+++ b/shopify/scripts/cadence/cadence-import.js
@@ -491,12 +491,6 @@ function buildSampleOnlyInput(vendor, cfg, row, activate) {
   const SL='single_line_text_field', ML='multi_line_text_field';
   let vendorDesc = String(row.vendor_desc || '').trim();
   if (/^(\\N|null|undefined)$/i.test(vendorDesc)) vendorDesc = '';
-  const specs = [];
-  if (row.material) specs.push(`<li><strong>Material:</strong> ${esc(row.material)}</li>`);
-  if (row.width) specs.push(`<li><strong>Width:</strong> ${esc(row.width)}</li>`);
-  if (row.roll_length) specs.push(`<li><strong>Roll Length:</strong> ${esc(row.roll_length)}</li>`);
-  if (row.pattern_repeat) specs.push(`<li><strong>Repeat:</strong> ${esc(row.pattern_repeat)}</li>`);
-  if (row.collection) specs.push(`<li><strong>Collection:</strong> ${esc(row.collection)}</li>`);
   const safeVendor = scrubBanned(vendor);
   const safeCollection = scrubBanned(row.collection);
   let intro = vendorDesc
@@ -508,7 +502,6 @@ function buildSampleOnlyInput(vendor, cfg, row, activate) {
     .replace(/Wallcoverings/g,'Fabrics').replace(/wallcoverings/g,'fabrics')
     .replace(/Wallcovering/g,'Fabric').replace(/wallcovering/g,'fabric');
   // specs live in metafields (rendered by product-description-meta.liquid), NEVER a body list (TK-10039)
-  void specs;
   const descriptionHtml = `<p>${intro}</p>`;
 
   // Metafields — NO cost (there is none). Width/specs where present, brand, sku, pattern, color.
@@ -640,12 +633,6 @@ function buildInput(vendor, cfg, row, retail, activate) {
   const typeWord = /fabric/i.test(productType) ? 'Fabric' : 'Wallcoverings';   // mixed-type vendors (Anna French): fabric rows must not be titled "Wallcoverings"
   const title = `${core} ${typeWord} | ${vendor}`.replace(/wallpaper/gi,'Wallcovering');
   const handle = (`${core}-${row.dw_sku}`).toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-+|-+$/g,'').slice(0,100);
-  const specs = [];
-  if (row.material) specs.push(`<li><strong>Material:</strong> ${esc(row.material)}</li>`);
-  if (row.width) specs.push(`<li><strong>Width:</strong> ${esc(row.width)}</li>`);
-  if (row.roll_length) specs.push(`<li><strong>Roll Length:</strong> ${esc(row.roll_length)}</li>`);
-  if (row.pattern_repeat) specs.push(`<li><strong>Repeat:</strong> ${esc(row.pattern_repeat)}</li>`);
-  specs.push(`<li><strong>Sold By:</strong> ${esc(soldBy)}</li>`);
   const safeVendor = scrubBanned(vendor);
   const safeCollection = scrubBanned(row.collection);
   const intro = `${pattern}${color?' in '+color:''} is a designer ${/fabric/i.test(productType)?'fabric':'wallcovering'}${safeCollection?' from the '+esc(safeCollection)+' collection':''} by ${safeVendor}. Priced per ${soldBy.toLowerCase()}.`;
@@ -682,7 +669,6 @@ function buildInput(vendor, cfg, row, retail, activate) {
   // stays DRAFT and is TAGGED Needs-Specs / Needs-Description / Needs-Image so it's
   // fixable later — never a broken product on the storefront.
   // specs live in metafields (rendered by product-description-meta.liquid), NEVER a body list (TK-10039)
-  void specs;
   const descriptionHtml = `<p>${esc(intro)}</p>`;
   const gate = validateBeforeActivate({
     title, vendor, dwSku: row.dw_sku, descriptionHtml,   // vendor → INTERNAL guard (registry vendor never activates)

← b99dbd61 auto-save: 2026-07-29T17:10:49 (1 files) — shopify/scripts/c  ·  back to Designer Wallcoverings  ·  chore: image-gate sweep hardening per code review — check DE b05ee055 →