[object Object]

← back to Designer Wallcoverings

auto-data-snapshot: 2026-09-11T10:08:53 (4 data files) — DW-Programming/ImportNewSkufromURL/lib/PENDING-WIREIN-price-gate.md shopify/scripts/cadence/data/cadence-cursor.json shopify/scripts/cadence/data/cadence-plan-am-2026-09-11.json shopify/scripts/cadence/data/upload-restore-2026-09-11.jsonl

0001f171cc897310a727d253a046a748c6edd3e5 · 2026-09-11 10:12:58 -0700 · auto-commit-fleet

Files touched

Diff

commit 0001f171cc897310a727d253a046a748c6edd3e5
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date:   Fri Sep 11 10:12:58 2026 -0700

    auto-data-snapshot: 2026-09-11T10:08:53 (4 data files) — DW-Programming/ImportNewSkufromURL/lib/PENDING-WIREIN-price-gate.md shopify/scripts/cadence/data/cadence-cursor.json shopify/scripts/cadence/data/cadence-plan-am-2026-09-11.json shopify/scripts/cadence/data/upload-restore-2026-09-11.jsonl
---
 .../lib/PENDING-WIREIN-price-gate.md               | 124 +++++++++----
 shopify/scripts/cadence/data/cadence-cursor.json   |   2 +-
 .../cadence/data/cadence-plan-am-2026-09-11.json   | 202 ++++++++++-----------
 .../cadence/data/upload-restore-2026-09-11.jsonl   |  15 ++
 4 files changed, 200 insertions(+), 143 deletions(-)

diff --git a/DW-Programming/ImportNewSkufromURL/lib/PENDING-WIREIN-price-gate.md b/DW-Programming/ImportNewSkufromURL/lib/PENDING-WIREIN-price-gate.md
index 98508f29..76af9394 100644
--- a/DW-Programming/ImportNewSkufromURL/lib/PENDING-WIREIN-price-gate.md
+++ b/DW-Programming/ImportNewSkufromURL/lib/PENDING-WIREIN-price-gate.md
@@ -27,19 +27,42 @@ for Steve:
   the gate actually "shared" and kills the recurrence class fleet-wide.
 - **Option C:** #1 now; file follow-up tickets for #2 and #3.
 
-## What the gate catches (and the headline-bug fix)
+## A-with-teeth (DTD verdict, 2026-09-11) — cost-unknown WARNs, does NOT block
+
+The gate now returns **`{ ok, violations, warnings }`**. `violations` are
+**block-severity** (fail `ok`, thrown by `enforcePriceIntegrity`); `warnings` are
+**warn-severity** — recorded, **non-blocking**. `ok = violations.length === 0`.
+
+Why: the original contract blocked on unknown cost (`cost-unknown`). That would
+**halt ~97 of 108 vendors** that have no cost feed — an import outage. The panel
+committed 5/5 to Option A: **cost-unknown → a WARNING (`cost-unverified`), not a
+block**, PLUS a **cost-free absolute-dollar floor** so unknown-cost is not a blind
+allow. Class A and Class C stay HARD BLOCKS.
+
+> **CRITICAL (TK-11431 amendment 2 — a swallowed warning is a false green):** the
+> wire-in call site MUST record `warnings[]` to a MONITORED channel, not a
+> `console.log`. The parallel skill `~/.claude/skills/dw-price-integrity-gate`
+> emits the fleet-health `data/latest.json`; the call site must call its
+> **`recordOutcome()`** so the `cost-unverified` WARN count is visible on the
+> morning panel. This is a hard dependency of the wire-in — see the diff below.
+
+## What the gate catches
 
 `enforcePriceIntegrity(input)` from `./price-integrity-gate` throws
-`PriceIntegrityError` (with `.violations`) on any block. Classes:
-
-- **A** — `sample-not-expected` (a sample not == $4.25); **`sellable-equals-sample`**
-  (a sellable priced at ≈ the $4.25 sample — the headline LEAK; a numeric backstop
-  that fires even when cost is low enough that 4.25 clears the markup floor);
-  **`sellable-defaulted-price`** (a sellable whose `priceSource==='defaulted'` —
-  provenance catch).
-- **B** — `below-markup-floor` (sellable < 1.5× cost) and `cost-unknown`
-  (cost null/≤0 → cannot prove markup → fail-closed BLOCK).
-- **C** — `zero-price-orderable` ($0/NaN orderable) and `negative-price`
+`PriceIntegrityError` (with block-severity `.violations`) **only** on a block.
+Classes:
+
+- **A (BLOCK)** — `sample-not-expected` (a sample not == $4.25);
+  **`sellable-equals-sample`** (a sellable priced at ≈ the $4.25 sample — the
+  headline LEAK; a numeric backstop that fires even when cost is low enough that
+  4.25 clears the markup floor); **`sellable-defaulted-price`** (a sellable whose
+  `priceSource==='defaulted'` — provenance catch).
+- **B** — `below-markup-floor` (cost KNOWN and sellable < 1.5× cost → **BLOCK**);
+  `below-absolute-floor` (any orderable variant priced > 0 but < `absoluteFloor`,
+  **default $5.00, tunable** — a **cost-FREE** anomaly guard → **BLOCK**,
+  regardless of whether cost is known); `cost-unverified` (cost null/≤0 →
+  **WARN**, non-blocking — the ~97-vendor allow path).
+- **C (BLOCK)** — `zero-price-orderable` ($0/NaN orderable) and `negative-price`
   (negative orderable, its own honest code).
 
 ### Why Class A `sample-not-expected` is a NO-OP AT choke point #1
@@ -50,7 +73,8 @@ At `addSampleVariant` the sample variant is created with the **hardcoded literal
 future callers can pass a wrong sample price, and it guards against a future edit
 that stops hardcoding 4.25), but at site #1 the real value is:
 
-- **Class B** (markup floor + cost-unknown fail-closed),
+- **Class B** (markup floor when cost known; the cost-free `below-absolute-floor`
+  block; a `cost-unverified` WARN when cost is unknown),
 - **Class C** ($0-orderable — the 6×-recurring bug),
 - **`sellable-equals-sample` + provenance** on the DTO-sourced sellable price
   (`numericUnitPrice`), which is exactly where the $4.25 default leaks in.
@@ -72,68 +96,88 @@ default flows into `numericUnitPrice`. So:
 
 ## What the gate needs
 
-- `enforcePriceIntegrity(input)` from `./price-integrity-gate`.
+- `assertPriceIntegrity(input)` / `enforcePriceIntegrity(input)` from `./price-integrity-gate`.
 - `resolveNetCost(vendor, sku)` from `./price-integrity-cost` (returns
-  `number | null`; null → gate blocks via Class B `cost-unknown`).
+  `number | null`; null → gate emits a `cost-unverified` **WARN**, not a block).
+- The skill `~/.claude/skills/dw-price-integrity-gate` `recordOutcome()` sink for
+  the `warnings[]` (fleet-health `data/latest.json`).
 
-### Threading `vendor` (still required)
+### Threading `vendor` (still required, but NO LONGER blocks everything)
 
 `addSampleVariant` currently has **no `vendor` parameter**. The memo authors must
 thread it — add a `vendor: string` param passed from the caller, or carry it on
 the `ProductDTO`. **Until vendor is available, `resolveNetCost` returns null and
-the gate blocks fail-closed on `cost-unknown`** — the correct safe default, but it
-would block ALL publishes, so threading vendor is required for the gate to pass
-real products.
+the gate WARNs `cost-unverified` (non-blocking)** — so imports keep flowing
+(A-with-teeth). The absolute-dollar floor still blocks a sub-$5 orderable price
+even with no vendor, so a mis-price is still caught. Threading vendor upgrades
+the WARN into a real markup PROOF, so it remains required for full coverage.
 
-## The ~12-line diff (conceptual, choke point #1)
+## The ~15-line diff (conceptual, choke point #1)
+
+Use `assertPriceIntegrity` (not just `enforce`) so the call site can RECORD the
+`warnings[]` before deciding to block — a swallowed warning is a false green.
 
 ```ts
 // at top of lib/shopify.ts
-import { enforcePriceIntegrity } from './price-integrity-gate';
+import { assertPriceIntegrity } from './price-integrity-gate';
 import { resolveNetCost } from './price-integrity-cost';
+// recordOutcome sink from the parallel skill (fleet-health data/latest.json):
+import { recordOutcome } from '../../.claude/skills/dw-price-integrity-gate/record'; // path per that skill
 
 // inside addSampleVariant(productId, sku, price, unitLabel, unitKind, vendor),
 // AFTER computing `numericUnitPrice` and BEFORE the productVariantsBulkUpdate call:
 
-const netCost = await resolveNetCost(vendor, sku);        // number | null (fail-closed)
+const netCost = await resolveNetCost(vendor, sku);        // number | null → cost-unverified WARN when null
 // priceSource: 'defaulted' when numericPrice was empty and we fell back to '0.00'
 // (or when the DTO price was the 4.25 default) — else 'scraped'.
 const sellableSource = numericPrice ? 'scraped' : 'defaulted';
-try {
-  enforcePriceIntegrity({
-    dwSku: sku,
-    netCost,
-    variants: [
-      { role: 'sellable', price: Number(numericUnitPrice), orderable: true,
-        sku: `${sku}-${unitKind}`, priceSource: sellableSource },
-      { role: 'sample', price: 4.25, orderable: false, sku: `${sku}-Sample` },
-    ],
-  });
-} catch (err) {
-  const violations = (err as any)?.violations ?? [];
-  console.error(JSON.stringify({ event: 'price_integrity_block', dwSku: sku, vendor, violations }));
+const gate = assertPriceIntegrity({
+  dwSku: sku,
+  netCost,                       // absoluteFloor defaults to 5.00; pass to tune
+  variants: [
+    { role: 'sellable', price: Number(numericUnitPrice), orderable: true,
+      sku: `${sku}-${unitKind}`, priceSource: sellableSource },
+    { role: 'sample', price: 4.25, orderable: false, sku: `${sku}-Sample` },
+  ],
+});
+// ALWAYS surface warnings to the monitored channel (NOT a swallowed console.log):
+if (gate.warnings.length) {
+  await recordOutcome({ event: 'price_integrity_warn', dwSku: sku, vendor, warnings: gate.warnings });
+}
+if (!gate.ok) {
+  console.error(JSON.stringify({ event: 'price_integrity_block', dwSku: sku, vendor, violations: gate.violations }));
+  await recordOutcome({ event: 'price_integrity_block', dwSku: sku, vendor, violations: gate.violations });
   return; // DO NOT WRITE — block publish
 }
 
 // ... existing productVariantsBulkUpdate + productVariantsBulkCreate calls unchanged ...
 ```
 
-## Behavior on block
+(Equivalently, keep `enforcePriceIntegrity` for the throw and call `assertPriceIntegrity`
+first only to read `warnings` — but the single-call form above avoids running the
+gate twice.)
+
+## Behavior on block vs warn
 
-- Structured log: `{event:'price_integrity_block', dwSku, vendor, violations}`.
-- `return` WITHOUT calling either `productVariantsBulk*` mutation — nothing
+- **Block** (Class A / C, `below-markup-floor`, `below-absolute-floor`): structured
+  log `{event:'price_integrity_block', …, violations}` + `recordOutcome`, then
+  `return` WITHOUT calling either `productVariantsBulk*` mutation — nothing
   orderable is written; the product stays whatever status it was.
+- **Warn** (`cost-unverified`): the import PROCEEDS (product writes normally), but
+  the warning is recorded via `recordOutcome` so the cost-unknown count is visible
+  on the fleet-health panel. It is counted, never swallowed.
 
 ## Why each guarded value maps this way
 
 | Gate field | Source in `addSampleVariant` | Note |
 |---|---|---|
-| sellable `price` | `Number(numericUnitPrice)` | `numericUnitPrice = numericPrice \|\| '0.00'` — missing scrape → 0 → Class C catches it |
+| sellable `price` | `Number(numericUnitPrice)` | `numericUnitPrice = numericPrice \|\| '0.00'` — missing scrape → 0 → Class C block; a sub-$5 orderable → `below-absolute-floor` block |
 | sellable `orderable` | `true` | update sets `inventoryPolicy:'CONTINUE'` + `setInventoryQuantity(iid,2025)` |
-| sellable `priceSource` | `numericPrice ? 'scraped' : 'defaulted'` | defaulted → Class A `sellable-defaulted-price` |
+| sellable `priceSource` | `numericPrice ? 'scraped' : 'defaulted'` | defaulted → Class A `sellable-defaulted-price` block |
 | sample `price` | `4.25` | fixed literal → Class A `sample-not-expected` is a no-op at THIS site |
 | sample `orderable` | `false` | sample is not a stocked orderable unit |
-| `netCost` | `resolveNetCost(vendor, sku)` | null → Class B `cost-unknown` (fail-closed) |
+| `netCost` | `resolveNetCost(vendor, sku)` | null → Class B `cost-unverified` **WARN** (non-blocking; recorded) |
+| `absoluteFloor` | default `5.00` | tunable cost-free floor; blocks a sub-$5 orderable even when cost is unknown |
 
 ## Verification after wire-in
 
diff --git a/shopify/scripts/cadence/data/cadence-cursor.json b/shopify/scripts/cadence/data/cadence-cursor.json
index f8ff0210..8e6f78b0 100644
--- a/shopify/scripts/cadence/data/cadence-cursor.json
+++ b/shopify/scripts/cadence/data/cadence-cursor.json
@@ -1,5 +1,5 @@
 {
- "idx": 6,
+ "idx": 2,
  "lastSlot": "am",
  "lastRun": "2026-09-11"
 }
\ No newline at end of file
diff --git a/shopify/scripts/cadence/data/cadence-plan-am-2026-09-11.json b/shopify/scripts/cadence/data/cadence-plan-am-2026-09-11.json
index 9c4662c7..4aa6295e 100644
--- a/shopify/scripts/cadence/data/cadence-plan-am-2026-09-11.json
+++ b/shopify/scripts/cadence/data/cadence-plan-am-2026-09-11.json
@@ -1,184 +1,182 @@
 [
  {
-  "vendor": "Romo",
-  "dw_sku": "DWRM-240167",
-  "cost": 1302,
-  "retail": 2356.56,
+  "vendor": "Schumacher",
+  "dw_sku": "DWLK-810070",
+  "cost": 28,
+  "retail": 50.68,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Bakbak, Indigo Wallcoverings | Romo",
+  "title": "Topiary, Bluebell Wallcoverings | Schumacher",
   "willActivate": false
  },
  {
-  "vendor": "Romo",
-  "dw_sku": "DWRM-240187",
-  "cost": 490.6,
-  "retail": 887.96,
+  "vendor": "Schumacher",
+  "dw_sku": "DWLK-810080",
+  "cost": 28,
+  "retail": 50.68,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Suru, Typhoon Wallcoverings | Romo",
+  "title": "Reaching Out, Spectrum Multi Wallcoverings | Schumacher",
   "willActivate": false
  },
  {
-  "vendor": "Romo",
-  "dw_sku": "DWRM-240194",
-  "cost": 451,
-  "retail": 816.29,
+  "vendor": "Schumacher",
+  "dw_sku": "DWLK-810090",
+  "cost": 28,
+  "retail": 50.68,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Palm, Harvest Wallcoverings | Romo",
+  "title": "Reaching Out, Lemonade Wallcoverings | Schumacher",
   "willActivate": false
  },
  {
-  "vendor": "Osborne & Little",
-  "dw_sku": "DWOL-290041",
-  "cost": 130,
-  "retail": 235.29,
+  "vendor": "Quadrille",
+  "dw_sku": "DWQC-600478",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Wilde Chrysanthemum, Colorway 03 Wallcoverings | Osborne & Little",
+  "sampleOnly": true,
+  "title": "Victoria, Mojave on Tint Fabric | Quadrille",
   "willActivate": false
  },
  {
-  "vendor": "Osborne & Little",
-  "dw_sku": "DWOL-290043",
-  "cost": 113,
-  "retail": 204.52,
+  "vendor": "Quadrille",
+  "dw_sku": "DWQC-600479",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Salome, Colorway 02 Wallcoverings | Osborne & Little",
+  "sampleOnly": true,
+  "title": "Victoria, Mocha on Tint Fabric | Quadrille",
   "willActivate": false
  },
  {
-  "vendor": "Osborne & Little",
-  "dw_sku": "DWOL-290044",
-  "cost": 113,
-  "retail": 204.52,
+  "vendor": "Quadrille",
+  "dw_sku": "DWQC-600480",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Salome, Colorway 04 Wallcoverings | Osborne & Little",
+  "sampleOnly": true,
+  "title": "Victoria, French Green on Tint Fabric | Quadrille",
   "willActivate": false
  },
  {
-  "vendor": "Designtex",
-  "dw_sku": "DWDX-220516",
-  "cost": 58,
-  "retail": 104.98,
+  "vendor": "Phillip Jeffries",
+  "dw_sku": "DWPJ-14611",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Fragments, New York Wallcoverings | Designtex",
-  "willActivate": false,
-  "held": true,
-  "heldReason": "\"York Wallcoverings\" is a banned front-facing trade-parent name"
+  "sampleOnly": true,
+  "title": "Marfa Weave, Nomadic Blue Wallcoverings | Phillip Jeffries",
+  "willActivate": false
  },
  {
-  "vendor": "Designtex",
-  "dw_sku": "DWDX-220705",
-  "cost": 56,
-  "retail": 101.36,
+  "vendor": "Phillip Jeffries",
+  "dw_sku": "DWPJ-14612",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Color Bars, Snow Wallcoverings | Designtex",
+  "sampleOnly": true,
+  "title": "Marfa Weave, Purple Horizon Wallcoverings | Phillip Jeffries",
   "willActivate": false
  },
  {
-  "vendor": "Designtex",
-  "dw_sku": "DWDX-220706",
-  "cost": 56,
-  "retail": 101.36,
+  "vendor": "Phillip Jeffries",
+  "dw_sku": "DWPJ-14613",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Color Bars, Light Gray Wallcoverings | Designtex",
+  "sampleOnly": true,
+  "title": "Marfa Weave, Titanium Trek Wallcoverings | Phillip Jeffries",
   "willActivate": false
  },
  {
-  "vendor": "Newwall",
-  "dw_sku": "DWXW-1006147",
-  "cost": 216,
-  "retail": 390.95,
+  "vendor": "Pierre Frey",
+  "dw_sku": "FQ030001",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Zanjan Ecru, Sample Wallcoverings | Newwall",
+  "sampleOnly": true,
+  "title": "Aloe Vera Wallcoverings | Pierre Frey",
   "willActivate": false
  },
  {
-  "vendor": "Newwall",
-  "dw_sku": "DWXW-1006168",
-  "cost": 88,
-  "retail": 159.28,
+  "vendor": "Pierre Frey",
+  "dw_sku": "",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Garzas Rose, Sample Type II Vinyl Wallcoverings | Newwall",
+  "sampleOnly": true,
+  "title": "Glais, Amande Wallcoverings | Pierre Frey",
   "willActivate": false
  },
  {
-  "vendor": "Newwall",
-  "dw_sku": "DWXW-1006169",
-  "cost": 88,
-  "retail": 159.28,
+  "vendor": "Pierre Frey",
+  "dw_sku": "",
+  "cost": 0,
+  "retail": 0,
   "sample": "4.25",
-  "sampleOnly": false,
-  "title": "Garzas Coal, Sample Type II Vinyl Wallcoverings | Newwall",
+  "sampleOnly": true,
+  "title": "Tralee, Anis Wallcoverings | Pierre Frey",
   "willActivate": false
  },
  {
-  "vendor": "Brewster & York",
-  "dw_sku": "DWBR-171159",
-  "cost": 90,
-  "retail": 162.9,
+  "vendor": "Romo",
+  "dw_sku": "DWRM-240167",
+  "cost": 1302,
+  "retail": 2356.56,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Morningtide, Grey Wallcoverings | Malibu Wallcovering",
+  "title": "Bakbak, Indigo Wallcoverings | Romo",
   "willActivate": false
  },
  {
-  "vendor": "Brewster & York",
-  "dw_sku": "DWBR-171160",
-  "cost": 90,
-  "retail": 162.9,
+  "vendor": "Romo",
+  "dw_sku": "DWRM-240187",
+  "cost": 490.6,
+  "retail": 887.96,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Massar, Black Wallcoverings | Malibu Wallcovering",
+  "title": "Suru, Typhoon Wallcoverings | Romo",
   "willActivate": false
  },
  {
-  "vendor": "Brewster & York",
-  "dw_sku": "DWBR-171161",
-  "cost": 90,
-  "retail": 162.9,
+  "vendor": "Romo",
+  "dw_sku": "DWRM-240194",
+  "cost": 451,
+  "retail": 816.29,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Massar, Silver Wallcoverings | Malibu Wallcovering",
+  "title": "Palm, Harvest Wallcoverings | Romo",
   "willActivate": false
  },
  {
-  "vendor": "Kravet",
-  "dw_sku": "DWKK-103197",
-  "cost": 57.5,
-  "retail": 86.25,
+  "vendor": "Osborne & Little",
+  "dw_sku": "DWOL-290045",
+  "cost": 138,
+  "retail": 249.77,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Kravet Smart, Beige Wallcoverings | Kravet",
+  "title": "Mandara, Colorway 01 Wallcoverings | Osborne & Little",
   "willActivate": false
  },
  {
-  "vendor": "Kravet",
-  "dw_sku": "DWKK-103198",
-  "cost": 57.5,
-  "retail": 86.25,
+  "vendor": "Osborne & Little",
+  "dw_sku": "DWOL-290046",
+  "cost": 138,
+  "retail": 249.77,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Kravet Smart, Beige Wallcoverings | Kravet",
+  "title": "Mandara, Colorway 03 Wallcoverings | Osborne & Little",
   "willActivate": false
  },
  {
-  "vendor": "Kravet",
-  "dw_sku": "DWKK-103199",
-  "cost": 57.5,
-  "retail": 86.25,
+  "vendor": "Osborne & Little",
+  "dw_sku": "DWOL-290047",
+  "cost": 138,
+  "retail": 249.77,
   "sample": "4.25",
   "sampleOnly": false,
-  "title": "Kravet Smart, Gray Wallcoverings | Kravet",
+  "title": "Mandara, Colorway 04 Wallcoverings | Osborne & Little",
   "willActivate": false
  }
 ]
\ No newline at end of file
diff --git a/shopify/scripts/cadence/data/upload-restore-2026-09-11.jsonl b/shopify/scripts/cadence/data/upload-restore-2026-09-11.jsonl
index aab1721f..6e32da87 100644
--- a/shopify/scripts/cadence/data/upload-restore-2026-09-11.jsonl
+++ b/shopify/scripts/cadence/data/upload-restore-2026-09-11.jsonl
@@ -13,3 +13,18 @@
 {"table":"kravet_catalog","mfr_sku":"37017.16.0","dw_sku":"DWKK-103197","shopify_product_id":"7953160437811","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-28-11-140Z","ts":"2026-09-11T16:28:50.079Z"}
 {"table":"kravet_catalog","mfr_sku":"37017.166.0","dw_sku":"DWKK-103198","shopify_product_id":"7953160536115","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-28-11-140Z","ts":"2026-09-11T16:28:52.586Z"}
 {"table":"kravet_catalog","mfr_sku":"37017.21.0","dw_sku":"DWKK-103199","shopify_product_id":"7953160634419","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-28-11-140Z","ts":"2026-09-11T16:28:55.230Z"}
+{"table":"schumacher_catalog","mfr_sku":"5012701","dw_sku":"DWLK-810070","shopify_product_id":"7953188552755","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:10.055Z"}
+{"table":"schumacher_catalog","mfr_sku":"5012710","dw_sku":"DWLK-810080","shopify_product_id":"7953188847667","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:12.529Z"}
+{"table":"schumacher_catalog","mfr_sku":"5012711","dw_sku":"DWLK-810090","shopify_product_id":"7953189077043","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:14.834Z"}
+{"table":"quadrille_house_catalog","mfr_sku":"302312F-CU","dw_sku":"DWQC-600478","shopify_product_id":"7952699719731","action":"linked-existing","activated":false,"batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:15.692Z"}
+{"table":"quadrille_house_catalog","mfr_sku":"302319F-CU","dw_sku":"DWQC-600479","shopify_product_id":"7952699752499","action":"linked-existing","activated":false,"batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:16.412Z"}
+{"table":"quadrille_house_catalog","mfr_sku":"302310F-CU","dw_sku":"DWQC-600480","shopify_product_id":"7952903209011","action":"linked-existing","activated":false,"batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:17.148Z"}
+{"table":"pj_draft_catalog","mfr_sku":"2944","dw_sku":"DWPJ-14611","shopify_product_id":"7953189371955","action":"created","activated":false,"published":false,"sampleOnly":true,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:19.523Z"}
+{"table":"pj_draft_catalog","mfr_sku":"2945","dw_sku":"DWPJ-14612","shopify_product_id":"7953189568563","action":"created","activated":false,"published":false,"sampleOnly":true,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:21.823Z"}
+{"table":"pj_draft_catalog","mfr_sku":"2946","dw_sku":"DWPJ-14613","shopify_product_id":"7953189765171","action":"created","activated":false,"published":false,"sampleOnly":true,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:24.024Z"}
+{"table":"pierre_frey_catalog","mfr_sku":"Nova","dw_sku":"FQ030001","shopify_product_id":"7953189929011","action":"created","activated":false,"published":false,"sampleOnly":true,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:26.160Z"}
+{"table":"pierre_frey_catalog","mfr_sku":"FQ026002","dw_sku":"","shopify_product_id":"7953190256691","action":"created","activated":false,"published":false,"sampleOnly":true,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:31.990Z"}
+{"table":"pierre_frey_catalog","mfr_sku":"FP299001","dw_sku":"","shopify_product_id":"7953190453299","action":"created","activated":false,"published":false,"sampleOnly":true,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:34.258Z"}
+{"table":"osborne_catalog","mfr_sku":"W5511-01","dw_sku":"DWOL-290045","shopify_product_id":"7953190813747","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:41.318Z"}
+{"table":"osborne_catalog","mfr_sku":"W5511-03","dw_sku":"DWOL-290046","shopify_product_id":"7953191010355","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:43.524Z"}
+{"table":"osborne_catalog","mfr_sku":"W5511-04","dw_sku":"DWOL-290047","shopify_product_id":"7953191206963","action":"created","activated":false,"published":false,"sampleOnly":false,"status":"DRAFT","batch_id":"upload-am-2026-09-11T16-40-05-312Z","ts":"2026-09-11T16:40:45.889Z"}

← ca0a4ab8 auto-data-snapshot: 2026-09-11T09:31:49 (6 data files) — DW-  ·  back to Designer Wallcoverings  ·  auto-data-snapshot: 2026-09-11T10:49:53 (3 data files) — sho e23cb5c5 →