← back to Dw Validator Debug TK11314
Kravet roll-add: gate candidates on has_sample_variant (not the deduped variant_sku) so the executor stops silently missing ~78% of sample-bearing targets; derive rollSku from dw_sku
d2220252543a1eb3d8d54f7e00028b623c76226b · 2026-08-18 15:54:07 -0700 · Steve
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
M shopify/scripts/cadence/add-kravet-roll-variants.js
Diff
commit d2220252543a1eb3d8d54f7e00028b623c76226b
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Aug 18 15:54:07 2026 -0700
Kravet roll-add: gate candidates on has_sample_variant (not the deduped variant_sku) so the executor stops silently missing ~78% of sample-bearing targets; derive rollSku from dw_sku
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
shopify/scripts/cadence/add-kravet-roll-variants.js | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/shopify/scripts/cadence/add-kravet-roll-variants.js b/shopify/scripts/cadence/add-kravet-roll-variants.js
index cdbe5727..b51452cb 100644
--- a/shopify/scripts/cadence/add-kravet-roll-variants.js
+++ b/shopify/scripts/cadence/add-kravet-roll-variants.js
@@ -97,7 +97,7 @@ function candidates() {
WITH base AS (
SELECT DISTINCT s.shopify_id,
COALESCE(NULLIF(trim(s.metafields->'global'->'Item'->>'value'),''), s.mfr_sku) AS mfr_sku,
- s.title, s.variant_sku,
+ s.title, s.variant_sku, s.dw_sku,
COALESCE(ap.new_map, km.map_price, kc.dw_sell_price, km.whls_cost*1.5, kc.cost_price*1.5) AS map,
CASE WHEN ap.new_map>0 THEN 'auth_new_map'
WHEN km.map_price>0 THEN 'master_map'
@@ -111,17 +111,20 @@ function candidates() {
WHERE s.vendor ~* 'kravet|lee ?jofa|groundworks|brunschwig|baker|mulberry|threads|clarke|cole|gp ?& ?j|colefax|nicolette'
AND s.product_type ~* 'wallcover'
AND s.mfr_sku IS NOT NULL AND s.mfr_sku <> ''
- AND s.variant_sku ILIKE '%sample%'
+ -- (2026-08-18) gate on the has_sample_variant flag, not the deduped mirror row's
+ -- variant_sku (which often carries the NON-sample sku) — the old gate silently dropped
+ -- ~78% of sample-bearing worklist targets (33/173 vs 168/173).
+ AND (s.has_sample_variant IS TRUE OR s.variant_sku ILIKE '%sample%')
${onlyClause})
- SELECT shopify_id, mfr_sku, title, variant_sku, map, map_src
+ SELECT shopify_id, mfr_sku, title, variant_sku, dw_sku, map, map_src
FROM base
WHERE map > ${SANE_MIN} AND map < ${SANE_MAX}
ORDER BY shopify_id;`;
const out = psql(sql);
if (!out) return [];
return out.split('\n').map(l => {
- const [shopify_id, mfr_sku, title, variant_sku, map, map_src] = l.split('\t');
- return { shopify_id, mfr_sku, title, variant_sku, map: Math.round(parseFloat(map) * 100) / 100, map_src };
+ const [shopify_id, mfr_sku, title, variant_sku, dw_sku, map, map_src] = l.split('\t');
+ return { shopify_id, mfr_sku, title, variant_sku, dw_sku, map: Math.round(parseFloat(map) * 100) / 100, map_src };
});
}
@@ -153,7 +156,7 @@ function rollLabel(tags) {
if (hasRoll) { already++; continue; } // idempotent: roll already exists
const optName = (p.options[0] && p.options[0].name) || 'Title';
const label = rollLabel((p.tags || []).join(' '));
- const rollSku = (c.variant_sku || '').replace(/-sample$/i, '');
+ const rollSku = (c.dw_sku && c.dw_sku.trim()) || (c.variant_sku || '').replace(/-sample$/i, '');
const price = c.map.toFixed(2);
// UNIT-MISMATCH GUARD (2026-08-18, Cody FIX-FIRST): never create a "Sold Per Single Roll"
// variant on a mural/panel/meter product. Signal = mural/panel/scenic/tapestry/embroider in
← 67771259 Kravet roll-add: harden unit-mismatch ceiling — drop the wid
·
back to Dw Validator Debug TK11314
·
Kravet roll-add: scope guard (refuse un-scoped --commit; req 41b5c609 →