[object Object]

← back to Dw Yolo Loop

chore: TK-10451 scope doc + version bump v0.1.1 (session close)

05f0068d013d9aada13da3aaaa0d87dbf6d8949e · 2026-08-11 07:28:10 -0700 · Steve Abrams

Files touched

Diff

commit 05f0068d013d9aada13da3aaaa0d87dbf6d8949e
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Aug 11 07:28:10 2026 -0700

    chore: TK-10451 scope doc + version bump v0.1.1 (session close)
---
 TK-10451-bucketB-feed-fix-scope.md | 56 ++++++++++++++++++++++++++++++++++++++
 package-lock.json                  |  4 +--
 package.json                       |  6 ++--
 3 files changed, 62 insertions(+), 4 deletions(-)

diff --git a/TK-10451-bucketB-feed-fix-scope.md b/TK-10451-bucketB-feed-fix-scope.md
new file mode 100644
index 0000000..95b474e
--- /dev/null
+++ b/TK-10451-bucketB-feed-fix-scope.md
@@ -0,0 +1,56 @@
+# TK-10451 — GMC $4.25 leak: primary Google feed submits the sample variant, not the roll
+
+**Opened:** 2026-08-10 (from TK-10446) · **Owner:** vp-dw-commerce / google-merchant-agent · **Store:** designer-laboratory-sandbox (LIVE)
+
+## The problem (live-verified 2026-08-10)
+A live scan of all 86,065 ACTIVE products found **48,931 products currently on the "Google & YouTube" channel
+whose feed price is $4.25** — i.e. Google Shopping is advertising them at the $4.25 memo-sample price.
+
+Split (live variant prices, NOT the mirror flag):
+- **Bucket A = 11** — TRUE orphans (only a $4.25 sample variant exists, no sellable roll). Handled separately
+  under TK-10446 (complete their roll variant, or exclude). Negligible.
+- **Bucket B = 48,920** — **real, sellable products** (they DO have a roll variant, $100–$300+), but the feed
+  still shows $4.25 because the channel submits the **minimum-price variant** (the sample) as the product's price.
+
+This is the real GMC disapproval/trust risk: ~49k legitimate products mispriced at $4.25 to Google.
+
+## Root cause (already established by the `gmc-425-supplemental-feed` project, 2026-08-10)
+Shopify's "Google & YouTube" sales channel submits **one variant per product** to the primary feed and, for
+these products, picks the **$4.25 Sample** variant. Reorder-of-variants does NOT fix it; a supplemental feed
+CANNOT inject the missing roll price when the roll variant isn't the submitted one. Conclusion from that project:
+> "The durable fix is in the primary Shopify→Google feed (make it submit the Roll / all variants)."
+
+## Why the obvious "quick fix" is WRONG
+`gmc-feed-exclude.js` (unpublish min=$4.25 from Google) would delist **~49k real sellable products** from Google
+Shopping. That's not a fix — it removes the catalog from Google. Delisting is ONLY correct for the 11 Bucket-A
+orphans.
+
+## Investigation update (2026-08-11, read-only)
+Probed real Bucket-B products live (Knoll Ultrasuede colorways): **Roll = position 1, `forSale=true`,
+inventory 2026, $416.04**; Sample = position 2, $4.25. Everything on the Shopify side is correct.
+Ruled OUT as the cause: variant inventory, availability, and variant ORDER (roll is already first).
+⇒ Confirms the leak is in the **channel→Google submission**, not the Shopify product data.
+
+**Count correction:** the "48,920 Bucket B" figure is an **UPPER BOUND** = products that merely *have* a $4.25
+sample variant. It is NOT the confirmed-leaker count (the 425 project already found some such products feed
+CLEAN). The true leaker count requires reading **Merchant Center's actual feed** per product, not the Shopify
+min-price. → Next step: run `gmc-425-supplemental-feed/classify-leakers.mjs` over the full set (needs the
+wallsandfabrics@gmail.com Merchant Center login — vp-dw-commerce / Steve-gated).
+
+## The actual work (to scope/build)
+Make the primary feed advertise the **roll price** for Bucket-B products. Candidate approaches to evaluate:
+1. **Variant selection at the channel/feed level** — ensure the roll (sellable) variant is the one submitted as
+   the product's offer, not the $4.25 sample. (Investigate whether the Google channel's variant-submission rule
+   is configurable, or whether product-level "default variant" / variant ordering drives it.)
+2. **Split samples out of the offered variant set** — e.g. sample as a separate non-fed product/variant so the
+   min-price the feed sees is the roll, not $4.25. (Coordinate with the sample-product model — see TK-10446.)
+3. **Supplemental feed price override** — only viable for products where the roll IS in the feed; per the 425
+   project, most leakers have the roll ABSENT, so this alone is insufficient.
+
+## Assets
+- Live scanner + buckets: `~/Projects/dw-yolo-loop/gmc-feed-exclude.js` (dry-run reports A/B split).
+- Worklist snapshot: `~/.claude/yolo-queue/gmc-feed-exclude-worklist.json`.
+- Prior investigation: `~/Projects/gmc-425-supplemental-feed/` (classify-leakers, README root-cause).
+
+## Gate
+Any feed/channel change is customer-facing → Steve-gated. This ticket is SCOPING; no live feed writes yet.
diff --git a/package-lock.json b/package-lock.json
index ecc596b..cfa6776 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "designerwallcoverings-ai",
-  "version": "0.1.0",
+  "version": "0.1.1",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "designerwallcoverings-ai",
-      "version": "0.1.0",
+      "version": "0.1.1",
       "dependencies": {
         "express": "^4.19.2",
         "multer": "^2.0.1"
diff --git a/package.json b/package.json
index 533ed9e..64c9e07 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,15 @@
 {
   "name": "designerwallcoverings-ai",
-  "version": "0.1.0",
+  "version": "0.1.1",
   "private": true,
   "description": "designerwallcoverings.ai — AI room-render landing. Upload a room photo, get matching wallcoverings.",
   "main": "server.js",
   "scripts": {
     "start": "node server.js"
   },
-  "engines": { "node": ">=20" },
+  "engines": {
+    "node": ">=20"
+  },
   "dependencies": {
     "express": "^4.19.2",
     "multer": "^2.0.1"

← 5795600 gmc-feed-exclude: add --orphans-only (Bucket A / live-verifi  ·  back to Dw Yolo Loop  ·  carnegie: add DW vendor-landing config block + line snapshot ab7991d →