← back to Designer Wallcoverings
TK-11871: Wallcovering guard default 3.0 -> 2.0 lb (live catalog norm)
b58f60ef6899c82b09998e21631aed79e7a3624c · 2026-09-17 17:23:22 -0700 · Steve
Twin commit of 3418680 (designerwallcoverings). TYPE_DEFAULT_LB Wallcovering
family 3.0 -> 2.0 (TK-11803 DTD verdict A: 2 lb = 91.9% of ACTIVE Wallcovering
sellable variants). Covers the cadence-import weight-guard.mjs twin + the
ImportNewSkufromURL lib/weight-guard.ts mirror + its jest tests. Samples stay
0.25 lb; FALLBACK_LB 2.0 unchanged. batch-import-jobs.ts comment updated to
cite 2.0. Restore map: ticket-system/evidence/TK-11871/restore-map-20260917-1700/.
Tests: mjs 52/52 (py twin suite), jest weight-guard 10/10, jest
batch-import-gate 36/36, tsc --noEmit clean, node --check cadence OK.
Files touched
M DW-Programming/ImportNewSkufromURL/__tests__/weight-guard.test.tsM DW-Programming/ImportNewSkufromURL/lib/weight-guard.tsM shopify/scripts/lib/weight-guard.mjs
Diff
commit b58f60ef6899c82b09998e21631aed79e7a3624c
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Sep 17 17:23:22 2026 -0700
TK-11871: Wallcovering guard default 3.0 -> 2.0 lb (live catalog norm)
Twin commit of 3418680 (designerwallcoverings). TYPE_DEFAULT_LB Wallcovering
family 3.0 -> 2.0 (TK-11803 DTD verdict A: 2 lb = 91.9% of ACTIVE Wallcovering
sellable variants). Covers the cadence-import weight-guard.mjs twin + the
ImportNewSkufromURL lib/weight-guard.ts mirror + its jest tests. Samples stay
0.25 lb; FALLBACK_LB 2.0 unchanged. batch-import-jobs.ts comment updated to
cite 2.0. Restore map: ticket-system/evidence/TK-11871/restore-map-20260917-1700/.
Tests: mjs 52/52 (py twin suite), jest weight-guard 10/10, jest
batch-import-gate 36/36, tsc --noEmit clean, node --check cadence OK.
---
.../ImportNewSkufromURL/__tests__/weight-guard.test.ts | 8 ++++----
DW-Programming/ImportNewSkufromURL/lib/weight-guard.ts | 6 ++++--
shopify/scripts/lib/weight-guard.mjs | 9 +++++++--
3 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/DW-Programming/ImportNewSkufromURL/__tests__/weight-guard.test.ts b/DW-Programming/ImportNewSkufromURL/__tests__/weight-guard.test.ts
index 0c6254b6..1b8fe912 100644
--- a/DW-Programming/ImportNewSkufromURL/__tests__/weight-guard.test.ts
+++ b/DW-Programming/ImportNewSkufromURL/__tests__/weight-guard.test.ts
@@ -17,13 +17,13 @@ import {
} from '../lib/weight-guard';
describe('TK-11539 weight guard — weight resolution', () => {
- it('sellable Wallcovering resolves to the TK-11414 backfill default (3.0 lb)', () => {
+ it('sellable Wallcovering resolves to the catalog-standard default (2.0 lb, TK-11871)', () => {
expect(sellableWeightLb('Wallcovering')).toBe(TYPE_DEFAULT_LB['Wallcovering']);
- expect(sellableWeightLb('Wallcovering')).toBe(3.0);
+ expect(sellableWeightLb('Wallcovering')).toBe(2.0);
});
it('sellable resolution is case-insensitive', () => {
- expect(sellableWeightLb('wallcovering')).toBe(3.0);
+ expect(sellableWeightLb('wallcovering')).toBe(2.0);
expect(sellableWeightLb(' FABRIC ')).toBe(1.0);
});
@@ -50,7 +50,7 @@ describe('TK-11539 weight guard — inventoryItemWithWeight builder', () => {
expect(out.sku).toBe('DWXX-1-Roll');
expect(out.tracked).toBe(true);
expect(out.measurement.weight.unit).toBe('POUNDS');
- expect(out.measurement.weight.value).toBe(3.0);
+ expect(out.measurement.weight.value).toBe(2.0);
expect(hasPositiveWeight(out)).toBe(true);
});
diff --git a/DW-Programming/ImportNewSkufromURL/lib/weight-guard.ts b/DW-Programming/ImportNewSkufromURL/lib/weight-guard.ts
index 6f46a611..ad4e0948 100644
--- a/DW-Programming/ImportNewSkufromURL/lib/weight-guard.ts
+++ b/DW-Programming/ImportNewSkufromURL/lib/weight-guard.ts
@@ -16,9 +16,11 @@ export const SAMPLE_WEIGHT_LB = 0.25;
export const FALLBACK_LB = 2.0;
// product_type -> sellable default weight (POUNDS). Mirrors weight-guard.mjs.
+// TK-11871 (2026-09-17): Wallcovering family 3.0 -> 2.0 = live catalog norm (91.9% of
+// ACTIVE Wallcovering sellable variants; TK-11803 DTD verdict A). Revert = 3.0.
export const TYPE_DEFAULT_LB: Record<string, number> = {
- 'Wallcovering': 3.0, 'Wallcoverings': 3.0, 'Wallpaper': 3.0,
- 'Metallic Wallcovering': 3.0, 'Commercial Wallcovering': 3.0,
+ 'Wallcovering': 2.0, 'Wallcoverings': 2.0, 'Wallpaper': 2.0,
+ 'Metallic Wallcovering': 2.0, 'Commercial Wallcovering': 2.0,
'Mural': 4.0,
'Fabric': 1.0, 'Commercial Fabric': 1.0, 'Commercial Drapery': 1.0,
'Trim': 0.5, 'Acoustic Panel': 6.0, 'Pillow': 1.5,
diff --git a/shopify/scripts/lib/weight-guard.mjs b/shopify/scripts/lib/weight-guard.mjs
index 8d8313d0..cb05934e 100644
--- a/shopify/scripts/lib/weight-guard.mjs
+++ b/shopify/scripts/lib/weight-guard.mjs
@@ -21,9 +21,14 @@ export const SAMPLE_WEIGHT_LB = 0.25;
export const FALLBACK_LB = 2.0;
// product_type -> sellable default weight (POUNDS)
+// TK-11871 (2026-09-17): Wallcovering family 3.0 -> 2.0 to match the live catalog norm —
+// 91.9% of ACTIVE Wallcovering sellable variants carry 2 lb (independent sample 2,299:
+// 2 lb 91.9% / 3 lb 0.7% / 1 lb 0.4%). Ratified by TK-11803 DTD verdict A + Cody red-team:
+// freight asymmetry favors 2 lb (overcharge kills checkout; slight undercharge is invisible),
+// and 2.0 == FALLBACK_LB, so an unknown type and a Wallcovering now agree. Revert = 3.0.
export const TYPE_DEFAULT_LB = {
- 'Wallcovering': 3.0, 'Wallcoverings': 3.0, 'Wallpaper': 3.0,
- 'Metallic Wallcovering': 3.0, 'Commercial Wallcovering': 3.0,
+ 'Wallcovering': 2.0, 'Wallcoverings': 2.0, 'Wallpaper': 2.0,
+ 'Metallic Wallcovering': 2.0, 'Commercial Wallcovering': 2.0,
'Mural': 4.0,
'Fabric': 1.0, 'Commercial Fabric': 1.0, 'Commercial Drapery': 1.0,
'Trim': 0.5, 'Acoustic Panel': 6.0, 'Pillow': 1.5,
← 2b9cc4d0 security: remove hardcoded secrets from live files + untrack
·
back to Designer Wallcoverings
·
auto-data-snapshot: 2026-09-17T17:25:36 (1 data files) — DW- 1e7d155f →