[object Object]

← back to Kravet Wrongjoin Reprice 2026 07

auto-save: 2026-07-15T16:08:29 (2 files) — apply-reprice.js run-log-2026-07-15T23-07-18-885Z.jsonl

17d8e270654f9a3c30e792faa7edc5db71489022 · 2026-07-15 16:08:33 -0700 · Steve Abrams

Files touched

Diff

commit 17d8e270654f9a3c30e792faa7edc5db71489022
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 15 16:08:33 2026 -0700

    auto-save: 2026-07-15T16:08:29 (2 files) — apply-reprice.js run-log-2026-07-15T23-07-18-885Z.jsonl
---
 apply-reprice.js                       | 128 ++++++++++++++++
 run-log-2026-07-15T23-07-18-885Z.jsonl | 257 +++++++++++++++++++++++++++++++++
 2 files changed, 385 insertions(+)

diff --git a/apply-reprice.js b/apply-reprice.js
new file mode 100644
index 0000000..97b2e82
--- /dev/null
+++ b/apply-reprice.js
@@ -0,0 +1,128 @@
+#!/usr/bin/env node
+/**
+ * apply-reprice.js — approved 2026-07-15 ("approve all", full 425)
+ * Repricing the wrong-join DWKK rows to true MAP per
+ * 2026-07-15-dwkk-wrongjoin-map-reprice.md.
+ *
+ * Guards (all from the approved memo):
+ *  - product must be ACTIVE and its global.Item must equal the CSV true_mfr_sku
+ *  - main (non-Sample) variant live price must equal CSV wrong_map_likely_live (±1¢)
+ *    → drifted rows logged + skipped, never blind-written
+ *  - rows already at correct_price skip (idempotent)
+ *  - Sample variants and product status never touched
+ *  - also refreshes global.MAP metafield to correct_price (contrarian addendum #2)
+ *  - 50 products/batch, ≥90s gap between batches, throttle-aware retry
+ *
+ * Log: run-log-<ts>.jsonl in this repo. DRY_RUN=1 for a no-write pass.
+ */
+const https = require('https');
+const fs = require('fs');
+const os = require('os');
+const path = require('path');
+
+const env = fs.readFileSync(os.homedir() + '/Projects/secrets-manager/.env', 'utf8');
+const TOKEN = (env.match(/^SHOPIFY_ADMIN_TOKEN=(.*)$/m) || [])[1].replace(/['"]/g, '').trim();
+const STORE = 'designer-laboratory-sandbox.myshopify.com', API = '2024-10';
+const DRY = process.env.DRY_RUN === '1';
+const sleep = ms => new Promise(r => setTimeout(r, ms));
+
+function gql(query, variables = {}) {
+  return new Promise((resolve, reject) => {
+    const body = JSON.stringify({ query, variables });
+    const req = https.request({ host: STORE, path: `/admin/api/${API}/graphql.json`, method: 'POST',
+      headers: { 'Content-Type': 'application/json', 'X-Shopify-Access-Token': TOKEN, 'Content-Length': Buffer.byteLength(body) } },
+      r => { let d = ''; r.on('data', c => d += c); r.on('end', () => { try { resolve(JSON.parse(d)); } catch (e) { reject(new Error('bad json: ' + d.slice(0, 200))); } }); });
+    req.on('error', reject); req.write(body); req.end();
+  });
+}
+async function gqlR(q, v, tries = 5) {
+  for (let i = 0; i < tries; i++) {
+    let r; try { r = await gql(q, v); } catch (e) { r = { errors: [{ message: String(e).slice(0, 200) }] }; }
+    if (r && !r.errors) return r;
+    const throttled = JSON.stringify(r.errors || []).match(/throttl/i);
+    if (!throttled && i >= 1) return r;
+    await sleep(2000 * (i + 1));
+  }
+  return gql(q, v);
+}
+
+function splitCsvLine(line) {
+  const out = []; let cur = ''; let inQ = false;
+  for (let i = 0; i < line.length; i++) {
+    const ch = line[i];
+    if (inQ) { if (ch === '"') { if (line[i + 1] === '"') { cur += '"'; i++; } else inQ = false; } else cur += ch; }
+    else if (ch === '"') inQ = true;
+    else if (ch === ',') { out.push(cur); cur = ''; }
+    else cur += ch;
+  }
+  out.push(cur); return out;
+}
+
+const Q_PRODUCT = `query($id:ID!){product(id:$id){id status
+  variants(first:30){nodes{id title sku price}}
+  metafield(namespace:"global",key:"Item"){value}}}`;
+const M_PRICE = `mutation($pid:ID!,$variants:[ProductVariantsBulkInput!]!){
+  productVariantsBulkUpdate(productId:$pid,variants:$variants){
+    productVariants{id price} userErrors{field message}}}`;
+const M_MAP_NOTYPE = `mutation($mf:[MetafieldsSetInput!]!){metafieldsSet(metafields:$mf){userErrors{field message}}}`;
+
+(async () => {
+  const csv = fs.readFileSync(path.join(__dirname, 'affected-dwkk-wrongjoin.csv'), 'utf8').trim().split('\n');
+  const rows = csv.slice(1).map(splitCsvLine).map(v => ({
+    handle: v[0], gid: v[1], dw_sku: v[2], title: v[3],
+    wrong_sku: v[4], true_sku: v[5],
+    wrong_price: parseFloat(v[6]), correct_price: parseFloat(v[8]),
+  }));
+  const ts = new Date().toISOString().replace(/[:.]/g, '-');
+  const logPath = path.join(__dirname, `run-log-${ts}.jsonl`);
+  const log = o => fs.appendFileSync(logPath, JSON.stringify(o) + '\n');
+  const near = (a, b) => Math.abs(a - b) <= 0.011;
+
+  let updated = 0, skipAlready = 0, skipDrift = 0, skipGuard = 0, errors = 0, mfOk = 0, mfErr = 0;
+  console.log(`${DRY ? 'DRY RUN' : 'LIVE'} — ${rows.length} rows → ${logPath}`);
+
+  for (let i = 0; i < rows.length; i++) {
+    const r = rows[i];
+    if (!DRY && i > 0 && i % 50 === 0) { console.log(`batch gap after ${i} (updated ${updated})…`); await sleep(90000); }
+
+    const res = await gqlR(Q_PRODUCT, { id: r.gid });
+    const p = res && res.data && res.data.product;
+    if (!p) { errors++; log({ ...r, action: 'error', note: 'product fetch failed', raw: JSON.stringify(res && res.errors).slice(0, 200) }); continue; }
+    if (p.status !== 'ACTIVE') { skipGuard++; log({ dw_sku: r.dw_sku, action: 'skip_guard', note: `status ${p.status}` }); continue; }
+    const item = p.metafield && p.metafield.value;
+    if (item !== r.true_sku) { skipGuard++; log({ dw_sku: r.dw_sku, action: 'skip_guard', note: `global.Item "${item}" != CSV true_sku "${r.true_sku}"` }); continue; }
+
+    const main = p.variants.nodes.find(v => !/sample/i.test(v.title || '') && !/sample/i.test(v.sku || ''));
+    if (!main) { skipGuard++; log({ dw_sku: r.dw_sku, action: 'skip_guard', note: 'no main variant' }); continue; }
+    const live = parseFloat(main.price);
+    if (near(live, r.correct_price)) { skipAlready++; log({ dw_sku: r.dw_sku, action: 'skip_already', live }); continue; }
+    if (!near(live, r.wrong_price)) { skipDrift++; log({ dw_sku: r.dw_sku, action: 'skip_drift', live, expected_wrong: r.wrong_price, correct: r.correct_price }); continue; }
+
+    if (DRY) { updated++; log({ dw_sku: r.dw_sku, action: 'would_update', from: live, to: r.correct_price }); await sleep(150); continue; }
+
+    const w = await gqlR(M_PRICE, { pid: p.id, variants: [{ id: main.id, price: r.correct_price.toFixed(2) }] });
+    const ue = w && w.data && w.data.productVariantsBulkUpdate && w.data.productVariantsBulkUpdate.userErrors;
+    const got = w && w.data && w.data.productVariantsBulkUpdate && w.data.productVariantsBulkUpdate.productVariants;
+    if ((ue && ue.length) || !got || !got.length) {
+      errors++; log({ dw_sku: r.dw_sku, action: 'error', note: 'price write failed', ue: JSON.stringify(ue).slice(0, 200) }); continue;
+    }
+    updated++;
+    log({ dw_sku: r.dw_sku, handle: r.handle, action: 'updated', from: live, to: parseFloat(got[0].price), variant: main.id });
+
+    // metafield refresh — existing metafields keep their type when omitted; fall back to explicit type
+    let m = await gqlR(M_MAP_NOTYPE, { mf: [{ ownerId: p.id, namespace: 'global', key: 'MAP', value: String(r.correct_price) }] });
+    let mue = m && m.data && m.data.metafieldsSet && m.data.metafieldsSet.userErrors;
+    if (mue && mue.length) {
+      m = await gqlR(M_MAP_NOTYPE, { mf: [{ ownerId: p.id, namespace: 'global', key: 'MAP', value: String(r.correct_price), type: 'single_line_text_field' }] });
+      mue = m && m.data && m.data.metafieldsSet && m.data.metafieldsSet.userErrors;
+    }
+    if (mue && mue.length) { mfErr++; log({ dw_sku: r.dw_sku, action: 'map_metafield_error', ue: JSON.stringify(mue).slice(0, 200) }); }
+    else mfOk++;
+
+    await sleep(350);
+  }
+
+  const summary = { total: rows.length, updated, skipAlready, skipDrift, skipGuard, errors, mapMetafieldOk: mfOk, mapMetafieldErr: mfErr, dry: DRY, log: logPath };
+  log({ action: 'SUMMARY', ...summary });
+  console.log('SUMMARY ' + JSON.stringify(summary));
+})();
diff --git a/run-log-2026-07-15T23-07-18-885Z.jsonl b/run-log-2026-07-15T23-07-18-885Z.jsonl
new file mode 100644
index 0000000..cb269bc
--- /dev/null
+++ b/run-log-2026-07-15T23-07-18-885Z.jsonl
@@ -0,0 +1,257 @@
+{"dw_sku":"DWKK-102058","action":"would_update","from":89.93,"to":5906.25}
+{"dw_sku":"DWKK-102060","action":"would_update","from":89.93,"to":5906.25}
+{"dw_sku":"DWKK-102056","action":"would_update","from":89.93,"to":5347.13}
+{"dw_sku":"DWKK-102057","action":"would_update","from":89.93,"to":5347.13}
+{"dw_sku":"DWKK-102062","action":"would_update","from":89.93,"to":3142.13}
+{"dw_sku":"DWKK-102061","action":"would_update","from":89.93,"to":2433.38}
+{"dw_sku":"DWKK-102356","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":1335.6}
+{"dw_sku":"DWKK-102354","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":1335.6}
+{"dw_sku":"DWKK-102357","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":1335.6}
+{"dw_sku":"DWKK-102355","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":1335.6}
+{"dw_sku":"DWKK-102358","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":1036.35}
+{"dw_sku":"DWKK-102359","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":1036.35}
+{"dw_sku":"DWKK-102316","action":"would_update","from":140.96,"to":1087.5}
+{"dw_sku":"DWKK-102315","action":"would_update","from":140.96,"to":1087.5}
+{"dw_sku":"DWKK-102317","action":"would_update","from":140.96,"to":1087.5}
+{"dw_sku":"DWKK-102319","action":"would_update","from":140.96,"to":1087.5}
+{"dw_sku":"DWKK-102318","action":"would_update","from":140.96,"to":1087.5}
+{"dw_sku":"DWKK-102064","action":"skip_already","live":968.63}
+{"dw_sku":"DWKK-102468","action":"skip_drift","live":65.92,"expected_wrong":79.12,"correct":941.85}
+{"dw_sku":"DWKK-102467","action":"skip_drift","live":65.92,"expected_wrong":79.12,"correct":941.85}
+{"dw_sku":"DWKK-102466","action":"skip_drift","live":65.92,"expected_wrong":79.12,"correct":941.85}
+{"dw_sku":"DWKK-102465","action":"skip_drift","live":65.92,"expected_wrong":79.12,"correct":941.85}
+{"dw_sku":"DWKK-102066","action":"skip_already","live":937.13}
+{"dw_sku":"DWKK-102325","action":"would_update","from":140.96,"to":972}
+{"dw_sku":"DWKK-102328","action":"would_update","from":140.96,"to":972}
+{"dw_sku":"DWKK-102326","action":"would_update","from":140.96,"to":972}
+{"dw_sku":"DWKK-102065","action":"skip_already","live":889.88}
+{"dw_sku":"DWKK-102278","action":"would_update","from":111.75,"to":910.35}
+{"dw_sku":"DWKK-102299","action":"would_update","from":140.96,"to":937.5}
+{"dw_sku":"DWKK-102296","action":"would_update","from":140.96,"to":937.5}
+{"dw_sku":"DWKK-100357","action":"would_update","from":154.27,"to":905.63}
+{"dw_sku":"DWKK-100088","action":"would_update","from":941.85,"to":207.9}
+{"dw_sku":"DWKK-102386","action":"skip_drift","live":82.34,"expected_wrong":86.62,"correct":817.5}
+{"dw_sku":"DWKK-102383","action":"skip_drift","live":82.34,"expected_wrong":86.62,"correct":817.5}
+{"dw_sku":"DWKK-102382","action":"skip_drift","live":82.34,"expected_wrong":86.62,"correct":817.5}
+{"dw_sku":"DWKK-102384","action":"skip_drift","live":82.34,"expected_wrong":86.62,"correct":817.5}
+{"dw_sku":"DWKK-102392","action":"skip_drift","live":156.67,"expected_wrong":164.92,"correct":861.53}
+{"dw_sku":"DWKK-102305","action":"would_update","from":140.96,"to":826.88}
+{"dw_sku":"DWKK-102307","action":"would_update","from":140.96,"to":826.88}
+{"dw_sku":"DWKK-102309","action":"would_update","from":140.96,"to":826.88}
+{"dw_sku":"DWKK-102304","action":"would_update","from":140.96,"to":826.88}
+{"dw_sku":"DWKK-102401","action":"would_update","from":234.68,"to":916.65}
+{"dw_sku":"DWKK-102399","action":"would_update","from":234.68,"to":916.65}
+{"dw_sku":"DWKK-102437","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":747}
+{"dw_sku":"DWKK-102435","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":747}
+{"dw_sku":"DWKK-102434","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":747}
+{"dw_sku":"DWKK-102436","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":747}
+{"dw_sku":"DWKK-102415","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":784.35}
+{"dw_sku":"DWKK-102413","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":784.35}
+{"dw_sku":"DWKK-102414","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":784.35}
+{"dw_sku":"DWKK-102416","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":784.35}
+{"dw_sku":"DWKK-102423","action":"skip_drift","live":89.93,"expected_wrong":94.88,"correct":722.93}
+{"dw_sku":"DWKK-102421","action":"skip_drift","live":89.93,"expected_wrong":94.88,"correct":722.93}
+{"dw_sku":"DWKK-102422","action":"skip_drift","live":89.93,"expected_wrong":94.88,"correct":722.93}
+{"dw_sku":"DWKK-101520","action":"would_update","from":134.25,"to":747}
+{"dw_sku":"DWKK-101519","action":"would_update","from":134.25,"to":747}
+{"dw_sku":"DWKK-101521","action":"would_update","from":134.25,"to":747}
+{"dw_sku":"DWKK-102432","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":688.28}
+{"dw_sku":"DWKK-102429","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":688.28}
+{"dw_sku":"DWKK-102290","action":"would_update","from":140.96,"to":748.13}
+{"dw_sku":"DWKK-102027","action":"would_update","from":186,"to":787.5}
+{"dw_sku":"DWKK-102343","action":"would_update","from":140.96,"to":741.83}
+{"dw_sku":"DWKK-102345","action":"would_update","from":140.96,"to":741.83}
+{"dw_sku":"DWKK-102342","action":"would_update","from":140.96,"to":741.83}
+{"dw_sku":"DWKK-102341","action":"would_update","from":140.96,"to":741.83}
+{"dw_sku":"DWKK-102420","action":"skip_drift","live":89.93,"expected_wrong":94.88,"correct":688.28}
+{"dw_sku":"DWKK-102419","action":"skip_drift","live":89.93,"expected_wrong":94.88,"correct":688.28}
+{"dw_sku":"DWKK-102418","action":"skip_drift","live":89.93,"expected_wrong":94.88,"correct":688.28}
+{"dw_sku":"DWKK-102464","action":"skip_drift","live":65.92,"expected_wrong":79.12,"correct":669.38}
+{"dw_sku":"DWKK-102353","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":637.5}
+{"dw_sku":"DWKK-102352","action":"skip_drift","live":60.14,"expected_wrong":63.53,"correct":637.5}
+{"dw_sku":"DWKK-102478","action":"skip_drift","live":90.67,"expected_wrong":95.62,"correct":669.38}
+{"dw_sku":"DWKK-102100","action":"skip_already","live":784.35}
+{"dw_sku":"DWKK-102098","action":"skip_already","live":784.35}
+{"dw_sku":"DWKK-102101","action":"skip_already","live":784.35}
+{"dw_sku":"DWKK-102104","action":"skip_already","live":784.35}
+{"dw_sku":"DWKK-102103","action":"skip_already","live":784.35}
+{"dw_sku":"DWKK-102102","action":"skip_already","live":784.35}
+{"dw_sku":"DWKK-102099","action":"skip_already","live":784.35}
+{"dw_sku":"DWKK-101522","action":"would_update","from":186,"to":747}
+{"dw_sku":"DWKK-102346","action":"would_update","from":228.38,"to":784.35}
+{"dw_sku":"DWKK-102412","action":"would_update","from":234.68,"to":784.35}
+{"dw_sku":"DWKK-102381","action":"would_update","from":274.05,"to":817.5}
+{"dw_sku":"DWKK-102262","action":"would_update","from":86.93,"to":626.85}
+{"dw_sku":"DWKK-102264","action":"would_update","from":86.93,"to":626.85}
+{"dw_sku":"DWKK-102263","action":"would_update","from":86.93,"to":626.85}
+{"dw_sku":"DWKK-102260","action":"would_update","from":86.93,"to":626.85}
+{"dw_sku":"DWKK-102259","action":"would_update","from":86.93,"to":626.85}
+{"dw_sku":"DWKK-102348","action":"would_update","from":248.85,"to":784.35}
+{"dw_sku":"DWKK-102479","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":669.38}
+{"dw_sku":"DWKK-102480","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":669.38}
+{"dw_sku":"DWKK-102117","action":"skip_already","live":748.13}
+{"dw_sku":"DWKK-102063","action":"skip_already","live":612.68}
+{"dw_sku":"DWKK-102249","action":"would_update","from":86.93,"to":604.8}
+{"dw_sku":"DWKK-102248","action":"would_update","from":86.93,"to":604.8}
+{"dw_sku":"DWKK-102247","action":"would_update","from":86.93,"to":604.8}
+{"dw_sku":"DWKK-102293","action":"would_update","from":140.96,"to":653.63}
+{"dw_sku":"DWKK-102292","action":"would_update","from":140.96,"to":653.63}
+{"dw_sku":"DWKK-102291","action":"would_update","from":140.96,"to":653.63}
+{"dw_sku":"DWKK-102295","action":"would_update","from":140.96,"to":653.63}
+{"dw_sku":"DWKK-102294","action":"would_update","from":140.96,"to":653.63}
+{"dw_sku":"DWKK-102107","action":"skip_already","live":721.35}
+{"dw_sku":"DWKK-102106","action":"skip_already","live":721.35}
+{"dw_sku":"DWKK-102105","action":"skip_already","live":721.35}
+{"dw_sku":"DWKK-102108","action":"skip_already","live":721.35}
+{"dw_sku":"DWKK-102427","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":578.03}
+{"dw_sku":"DWKK-102482","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":626.85}
+{"dw_sku":"DWKK-102483","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":626.85}
+{"dw_sku":"DWKK-102481","action":"skip_drift","live":131.84,"expected_wrong":137.77,"correct":626.85}
+{"dw_sku":"DWKK-102425","action":"skip_drift","live":89.93,"expected_wrong":94.88,"correct":578.03}
+{"dw_sku":"DWKK-102730","action":"would_update","from":516.45,"to":38.59}
+{"dw_sku":"DWKK-102731","action":"would_update","from":516.45,"to":38.59}
+{"dw_sku":"DWKK-102727","action":"would_update","from":483.45,"to":38.59}
+{"dw_sku":"DWKK-102728","action":"would_update","from":483.45,"to":38.59}
+{"dw_sku":"DWKK-102495","action":"would_update","from":281.93,"to":721.35}
+{"dw_sku":"DWKK-102494","action":"would_update","from":281.93,"to":721.35}
+{"dw_sku":"DWKK-102493","action":"would_update","from":281.93,"to":721.35}
+{"dw_sku":"DWKK-102484","action":"skip_drift","live":181.5,"expected_wrong":191.4,"correct":626.85}
+{"dw_sku":"DWKK-102485","action":"skip_drift","live":181.5,"expected_wrong":191.4,"correct":626.85}
+{"dw_sku":"DWKK-102069","action":"skip_already","live":511.88}
+{"dw_sku":"DWKK-102068","action":"skip_already","live":511.88}
+{"dw_sku":"DWKK-102067","action":"skip_already","live":511.88}
+{"dw_sku":"DWKK-101538","action":"would_update","from":330.75,"to":747}
+{"dw_sku":"DWKK-101537","action":"would_update","from":330.75,"to":747}
+{"dw_sku":"DWKK-102458","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":491.4}
+{"dw_sku":"DWKK-102457","action":"skip_drift","live":70.87,"expected_wrong":75.82,"correct":491.4}
+{"dw_sku":"DWKK-102752","action":"would_update","from":453.6,"to":38.59}
+{"dw_sku":"DWKK-102750","action":"would_update","from":453.6,"to":38.59}
+{"dw_sku":"DWKK-102375","action":"skip_drift","live":115.34,"expected_wrong":121.27,"correct":523.5}
+{"dw_sku":"DWKK-102372","action":"skip_drift","live":115.34,"expected_wrong":121.27,"correct":523.5}
+{"dw_sku":"DWKK-102373","action":"skip_drift","live":115.34,"expected_wrong":121.27,"correct":523.5}
+{"dw_sku":"DWKK-102374","action":"skip_drift","live":115.34,"expected_wrong":121.27,"correct":523.5}
+{"dw_sku":"DWKK-102371","action":"skip_drift","live":115.34,"expected_wrong":121.27,"correct":523.5}
+{"dw_sku":"DWKK-102022","action":"would_update","from":198,"to":597}
+{"dw_sku":"DWKK-102366","action":"would_update","from":195.3,"to":589.05}
+{"dw_sku":"DWKK-102021","action":"would_update","from":208.5,"to":597}
+{"dw_sku":"DWKK-102018","action":"would_update","from":208.5,"to":597}
+{"dw_sku":"DWKK-102020","action":"would_update","from":208.5,"to":597}
+{"dw_sku":"DWKK-102019","action":"would_update","from":208.5,"to":597}
+{"dw_sku":"DWKK-102364","action":"would_update","from":207.9,"to":589.05}
+{"dw_sku":"DWKK-102362","action":"would_update","from":207.9,"to":589.05}
+{"dw_sku":"DWKK-102363","action":"would_update","from":207.9,"to":589.05}
+{"dw_sku":"DWKK-102365","action":"would_update","from":207.9,"to":589.05}
+{"dw_sku":"DWKK-102350","action":"would_update","from":264.6,"to":637.5}
+{"dw_sku":"DWKK-102461","action":"would_update","from":297.68,"to":669.38}
+{"dw_sku":"DWKK-102368","action":"would_update","from":195.3,"to":549.68}
+{"dw_sku":"DWKK-102369","action":"would_update","from":195.3,"to":549.68}
+{"dw_sku":"DWKK-102501","action":"would_update","from":281.93,"to":625.28}
+{"dw_sku":"DWKK-102503","action":"would_update","from":281.93,"to":625.28}
+{"dw_sku":"DWKK-102502","action":"would_update","from":281.93,"to":625.28}
+{"dw_sku":"DWKK-102500","action":"would_update","from":281.93,"to":625.28}
+{"dw_sku":"DWKK-102028","action":"would_update","from":208.5,"to":537}
+{"dw_sku":"DWKK-100305","action":"would_update","from":626.85,"to":299.25}
+{"dw_sku":"DWKK-100308","action":"would_update","from":626.85,"to":299.25}
+{"dw_sku":"DWKK-100306","action":"would_update","from":626.85,"to":299.25}
+{"dw_sku":"DWKK-100307","action":"would_update","from":626.85,"to":299.25}
+{"dw_sku":"DWKK-102155","action":"would_update","from":94.42,"to":417.38}
+{"dw_sku":"DWKK-102152","action":"would_update","from":94.42,"to":417.38}
+{"dw_sku":"DWKK-102154","action":"would_update","from":94.42,"to":417.38}
+{"dw_sku":"DWKK-101946","action":"would_update","from":95.62,"to":417.38}
+{"dw_sku":"DWKK-100481","action":"would_update","from":488.25,"to":186}
+{"dw_sku":"DWKK-100480","action":"would_update","from":488.25,"to":186}
+{"dw_sku":"DWKK-102733","action":"would_update","from":338.63,"to":38.59}
+{"dw_sku":"DWKK-102732","action":"would_update","from":338.63,"to":38.59}
+{"dw_sku":"DWKK-102486","action":"skip_drift","live":181.5,"expected_wrong":191.4,"correct":488.25}
+{"dw_sku":"DWKK-101943","action":"would_update","from":95.62,"to":392.18}
+{"dw_sku":"DWKK-101245","action":"would_update","from":64.27,"to":356.4}
+{"dw_sku":"DWKK-102023","action":"would_update","from":198,"to":487.5}
+{"dw_sku":"DWKK-102089","action":"skip_already","live":496.13}
+{"dw_sku":"DWKK-102086","action":"skip_already","live":496.13}
+{"dw_sku":"DWKK-102088","action":"skip_already","live":496.13}
+{"dw_sku":"DWKK-102087","action":"skip_already","live":496.13}
+{"dw_sku":"DWKK-102084","action":"skip_already","live":496.13}
+{"dw_sku":"DWKK-102085","action":"skip_already","live":496.13}
+{"dw_sku":"DWKK-101531","action":"skip_drift","live":303.6,"expected_wrong":318.45,"correct":597}
+{"dw_sku":"DWKK-102753","action":"would_update","from":308.55,"to":38.59}
+{"dw_sku":"DWKK-102496","action":"would_update","from":281.93,"to":543.38}
+{"dw_sku":"DWKK-102498","action":"would_update","from":281.93,"to":543.38}
+{"dw_sku":"DWKK-102497","action":"would_update","from":281.93,"to":543.38}
+{"dw_sku":"DWKK-102463","action":"skip_drift","live":394.35,"expected_wrong":414.15,"correct":669.38}
+{"dw_sku":"DWKK-102462","action":"skip_drift","live":394.35,"expected_wrong":414.15,"correct":669.38}
+{"dw_sku":"DWKK-101246","action":"would_update","from":64.27,"to":318.45}
+{"dw_sku":"DWKK-102271","action":"would_update","from":111.75,"to":359.1}
+{"dw_sku":"DWKK-102773","action":"would_update","from":370.13,"to":137.77}
+{"dw_sku":"DWKK-101156","action":"would_update","from":102.3,"to":331.65}
+{"dw_sku":"DWKK-102735","action":"would_update","from":266.18,"to":38.59}
+{"dw_sku":"DWKK-102470","action":"skip_drift","live":65.92,"expected_wrong":79.12,"correct":305.55}
+{"dw_sku":"DWKK-102469","action":"skip_drift","live":65.92,"expected_wrong":79.12,"correct":305.55}
+{"dw_sku":"DWKK-101562","action":"would_update","from":500.85,"to":276}
+{"dw_sku":"DWKK-101556","action":"would_update","from":488.25,"to":264.6}
+{"dw_sku":"DWKK-101557","action":"would_update","from":488.25,"to":264.6}
+{"dw_sku":"DWKK-102404","action":"skip_drift","live":326.7,"expected_wrong":343.2,"correct":565.43}
+{"dw_sku":"DWKK-102406","action":"skip_drift","live":326.7,"expected_wrong":343.2,"correct":565.43}
+{"dw_sku":"DWKK-102474","action":"skip_drift","live":79.12,"expected_wrong":84.07,"correct":305.55}
+{"dw_sku":"DWKK-101973","action":"would_update","from":95.62,"to":313.43}
+{"dw_sku":"DWKK-102459","action":"would_update","from":274.05,"to":491.4}
+{"dw_sku":"DWKK-100798","action":"would_update","from":422.1,"to":207}
+{"dw_sku":"DWKK-100801","action":"would_update","from":422.1,"to":207}
+{"dw_sku":"DWKK-102112","action":"skip_already","live":431.55}
+{"dw_sku":"DWKK-102109","action":"skip_already","live":431.55}
+{"dw_sku":"DWKK-102111","action":"skip_already","live":431.55}
+{"dw_sku":"DWKK-102110","action":"skip_already","live":431.55}
+{"dw_sku":"DWKK-102134","action":"skip_already","live":422.1}
+{"dw_sku":"DWKK-102131","action":"skip_already","live":422.1}
+{"dw_sku":"DWKK-102132","action":"skip_already","live":422.1}
+{"dw_sku":"DWKK-102130","action":"skip_already","live":422.1}
+{"dw_sku":"DWKK-102133","action":"skip_already","live":422.1}
+{"dw_sku":"DWKK-101373","action":"would_update","from":102.3,"to":305.55}
+{"dw_sku":"DWKK-100303","action":"would_update","from":264.6,"to":62.92}
+{"dw_sku":"DWKK-102135","action":"skip_already","live":417.38}
+{"dw_sku":"DWKK-102138","action":"skip_already","live":417.38}
+{"dw_sku":"DWKK-102137","action":"skip_already","live":417.38}
+{"dw_sku":"DWKK-102136","action":"skip_already","live":417.38}
+{"dw_sku":"DWKK-102490","action":"would_update","from":289.8,"to":488.25}
+{"dw_sku":"DWKK-102492","action":"would_update","from":289.8,"to":488.25}
+{"dw_sku":"DWKK-102488","action":"would_update","from":289.8,"to":488.25}
+{"dw_sku":"DWKK-102491","action":"would_update","from":289.8,"to":488.25}
+{"dw_sku":"DWKK-102487","action":"would_update","from":289.8,"to":488.25}
+{"dw_sku":"DWKK-102489","action":"would_update","from":289.8,"to":488.25}
+{"dw_sku":"DWKK-102144","action":"skip_already","live":289.8}
+{"dw_sku":"DWKK-100001","action":"would_update","from":469.35,"to":274.05}
+{"dw_sku":"DWKK-102473","action":"would_update","from":111.75,"to":305.55}
+{"dw_sku":"DWKK-102472","action":"would_update","from":111.75,"to":305.55}
+{"dw_sku":"DWKK-102460","action":"would_update","from":297.68,"to":491.4}
+{"dw_sku":"DWKK-102124","action":"skip_already","live":407.93}
+{"dw_sku":"DWKK-102123","action":"skip_already","live":407.93}
+{"dw_sku":"DWKK-100808","action":"would_update","from":422.1,"to":232.5}
+{"dw_sku":"DWKK-100807","action":"would_update","from":422.1,"to":232.5}
+{"dw_sku":"DWKK-102448","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102438","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102445","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102449","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102446","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102447","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102444","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102442","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102440","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102439","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102450","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102443","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102441","action":"would_update","from":75.82,"to":264.6}
+{"dw_sku":"DWKK-102140","action":"skip_already","live":118.05}
+{"dw_sku":"DWKK-102141","action":"skip_already","live":118.05}
+{"dw_sku":"DWKK-102407","action":"would_update","from":392.18,"to":565.43}
+{"dw_sku":"DWKK-102451","action":"would_update","from":75.82,"to":248.85}
+{"dw_sku":"DWKK-102453","action":"would_update","from":75.82,"to":248.85}
+{"dw_sku":"DWKK-102452","action":"would_update","from":75.82,"to":248.85}
+{"dw_sku":"DWKK-102233","action":"would_update","from":86.93,"to":250.43}
+{"dw_sku":"DWKK-102231","action":"would_update","from":86.93,"to":250.43}
+{"dw_sku":"DWKK-102232","action":"would_update","from":86.93,"to":250.43}
+{"dw_sku":"DWKK-102229","action":"would_update","from":86.93,"to":250.43}
+{"dw_sku":"DWKK-102230","action":"would_update","from":86.93,"to":250.43}
+{"dw_sku":"DWKK-102234","action":"would_update","from":86.93,"to":250.43}
+{"dw_sku":"DWKK-102042","action":"skip_already","live":291.38}
+{"dw_sku":"DWKK-102043","action":"skip_already","live":291.38}
+{"dw_sku":"DWKK-102044","action":"skip_already","live":291.38}
+{"dw_sku":"DWKK-101104","action":"would_update","from":102.3,"to":261}

← 6c245ab contrarian addendum: refute format-diff attack, disclose MAP  ·  back to Kravet Wrongjoin Reprice 2026 07  ·  APPLIED: 277 DWKK repriced to true MAP live (0 err, 277 MAP 42142ea →