← back to Carnegie Identity Audit

preserve-manufacturer-identity.patch

34 lines

--- a/rollout.mjs
+++ b/rollout.mjs
@@ -35,7 +35,7 @@
 const hex2rgb=h=>{h=String(h).replace('#','');if(h.length!==6)return null;const n=parseInt(h,16);return[(n>>16)&255,(n>>8)&255,n&255];};
 const nearest=rgb=>{let b=null,bd=1e18;for(const[n,[ar,ag,ab]]of Object.entries(ANCHORS)){const d=(rgb[0]-ar)**2*.3+(rgb[1]-ag)**2*.59+(rgb[2]-ab)**2*.11;if(d<bd){bd=d;b=n;}}return b;};
 const slug=s=>s.toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-|-$/g,'');
-const cleanMfr=s=>String(s).replace(/-(upholstery|windows|panels[a-z-]*|wall[a-z-]*|drapery|cubicle|health[a-z-]*|acoustic[a-z-]*)$/i,'');
+const cleanMfr = s => String(s); // Preserve category-bearing manufacturer identity (TK-11246).
 async function rest(p,o={},t=10){for(let i=0;i<t;i++){const r=await fetch(`https://${SHOP}/admin/api/${API}/${p}`,{...o,headers:{'X-Shopify-Access-Token':TOK,'Content-Type':'application/json',...(o.headers||{})}});if(r.status===429){await sleep(Number(r.headers.get('retry-after')||2)*1000+400);continue;}return r;}throw new Error('429 '+p);}
 async function gql(q,v,t=10){for(let i=0;i<t;i++){const r=await fetch(`https://${SHOP}/admin/api/${API}/graphql.json`,{method:'POST',headers:{'X-Shopify-Access-Token':TOK,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});if(r.status===429){await sleep(2000);continue;}const j=await r.json();if(j.errors&&/throttl/i.test(JSON.stringify(j.errors))){await sleep(2500);continue;}return j;}throw new Error('gql');}
 const psql=s=>execSync(`psql -h /tmp -d dw_unified -tA -F'§' -c "${s.replace(/"/g,'\\"')}"`).toString();
--- a/rollout2.mjs
+++ b/rollout2.mjs
@@ -33,7 +33,7 @@
 const hex2rgb=h=>{h=String(h).replace('#','');if(h.length!==6)return null;const n=parseInt(h,16);return[(n>>16)&255,(n>>8)&255,n&255];};
 const nearest=rgb=>{let b=null,bd=1e18;for(const[n,[ar,ag,ab]]of Object.entries(ANCHORS)){const d=(rgb[0]-ar)**2*.3+(rgb[1]-ag)**2*.59+(rgb[2]-ab)**2*.11;if(d<bd){bd=d;b=n;}}return b;};
 const slug=s=>s.toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-|-$/g,'');
-const cleanMfr=s=>String(s).replace(/-(upholstery|windows|panels[a-z-]*|wall[a-z-]*|drapery|cubicle|health[a-z-]*|acoustic[a-z-]*)$/i,'');
+const cleanMfr = s => String(s); // Preserve category-bearing manufacturer identity (TK-11246).
 const classOf=pt=>/wallcover/i.test(pt||'')?'Wallcovering':'Fabric';
 const consLabel=pt=>{pt=String(pt||'').trim();const m={ 'Wallcoverings':'Wallcovering','Upholstered Walls/Panels':'Panels','Upholstery':'Upholstery','Windows':'Windows','Drapery':'Drapery','Panels':'Panels','Cubicle':'Cubicle'};return m[pt]||pt||'Standard';};
 async function rest(p,o={},t=10){for(let i=0;i<t;i++){const r=await fetch(`https://${SHOP}/admin/api/${API}/${p}`,{...o,headers:{'X-Shopify-Access-Token':TOK,'Content-Type':'application/json',...(o.headers||{})}});if(r.status===429){await sleep(Number(r.headers.get('retry-after')||2)*1000+400);continue;}return r;}throw new Error('429 '+p);}
--- a/build-siltech-grain-v2-archived.mjs
+++ b/build-siltech-grain-v2-archived.mjs
@@ -48,7 +48,7 @@
 const hex2rgb = h => { h = String(h).replace('#',''); if (h.length !== 6) return null; const n = parseInt(h,16); return [(n>>16)&255,(n>>8)&255,n&255]; };
 const nearest = rgb => { let b=null,bd=1e18; for (const [n,[ar,ag,ab]] of Object.entries(ANCHORS)) { const d=(rgb[0]-ar)**2*.3+(rgb[1]-ag)**2*.59+(rgb[2]-ab)**2*.11; if (d<bd){bd=d;b=n;} } return b; };
 const slug = s => s.toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-|-$/g,'');
-const cleanMfr = s => String(s).replace(/-(upholstery|windows|panels[a-z-]*|wall[a-z-]*|drapery|cubicle|health[a-z-]*|acoustic[a-z-]*)$/i,'');
+const cleanMfr = s => String(s); // Preserve category-bearing manufacturer identity (TK-11246).
 const classOf = pt => /wallcover/i.test(pt||'') ? 'Wallcovering' : 'Fabric';
 const consLabel = pt => { pt = String(pt||'').trim(); const m = {'Wallcoverings':'Wallcovering','Upholstered Walls/Panels':'Panels','Upholstery':'Upholstery','Windows':'Windows','Drapery':'Drapery','Panels':'Panels','Cubicle':'Cubicle'}; return m[pt]||pt||'Standard'; };
 async function rest(p,o={},t=10){for(let i=0;i<t;i++){const r=await fetch(`https://${SHOP}/admin/api/${API}/${p}`,{...o,headers:{'X-Shopify-Access-Token':TOK,'Content-Type':'application/json',...(o.headers||{})}});if(r.status===429){await sleep(Number(r.headers.get('retry-after')||2)*1000+400);continue;}return r;}throw new Error('429 '+p);}