← back to Gmc Titlefix
TK-11847 Option B script: fold in Kimi review (front-load wallcovering/material in description, productTypes list sent as exact sibling value, post-insert merge readback, 72h-then-appeal rule). Still dry-run only.
c2e8ed11c2ca6f322180792ca57cc549107f8a60 · 2026-09-23 12:00:07 -0700 · Steve
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PP5PN6yC4vLgDAvFqpS1qJ
Files touched
A data/tk11847-colorway-override-dryrun-2026-09-23T19-00-07.jsonM tk11847-colorway-override.mjs
Diff
commit c2e8ed11c2ca6f322180792ca57cc549107f8a60
Author: Steve <steve@designerwallcoverings.com>
Date: Wed Sep 23 12:00:07 2026 -0700
TK-11847 Option B script: fold in Kimi review (front-load wallcovering/material in description, productTypes list sent as exact sibling value, post-insert merge readback, 72h-then-appeal rule). Still dry-run only.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PP5PN6yC4vLgDAvFqpS1qJ
---
...lorway-override-dryrun-2026-09-23T19-00-07.json | 126 +++++++++++++++++++++
tk11847-colorway-override.mjs | 20 +++-
2 files changed, 143 insertions(+), 3 deletions(-)
diff --git a/data/tk11847-colorway-override-dryrun-2026-09-23T19-00-07.json b/data/tk11847-colorway-override-dryrun-2026-09-23T19-00-07.json
new file mode 100644
index 0000000..804fc2a
--- /dev/null
+++ b/data/tk11847-colorway-override-dryrun-2026-09-23T19-00-07.json
@@ -0,0 +1,126 @@
+{
+ "ticket": "TK-11847",
+ "mode": "DRY-RUN",
+ "at": "2026-09-23T19:00:07.711Z",
+ "dataSource": "accounts/146735262/dataSources/10677010255",
+ "hold": [
+ "44736900464691"
+ ],
+ "rows": [
+ {
+ "offerId": "44724797538355",
+ "title": "Apollo Chardonnay",
+ "color": "Chardonnay",
+ "material": "Faux Leather",
+ "stillLR": true,
+ "liveDescription": "Apollo Chardonnay",
+ "liveColor": null,
+ "liveMaterial": null,
+ "lastUpdateDate": "2026-09-11T22:54:48.097974Z",
+ "productAttributes": {
+ "color": "Chardonnay",
+ "material": "Faux Leather",
+ "productTypes": [
+ "Wallcovering"
+ ],
+ "description": "Apollo Chardonnay — faux leather wallcovering (wallpaper) in the Chardonnay colorway. Not a beverage. Apollo — Chardonnay . Majilite Nytek® faux leather from the Metallic Specialties I collection — a specially engineered Nylon Fiber Matrix, luxurious, breathable and durable, ideal for wall coverings, seating, flat surfaces and displays. Width: 54 in / 137 cm Weight: 8.8 oz/sq yd / 300 g/m² Thickness: 28 mils / 0.7 mm Durability: 300,000+ double rubs (Wyzenbeek wire screen, ASTM D-4157-82) Flammability: UFAC/NFPA 260 (Class 1) & CAL Technical Bulletin 117-2013 Section 1 — Pass Cleanability: S/W · Crocking Wet 5 / Dry 5 PFAS-, PVC- and plasticizer-free · no off-gassing Available by the yard (54\" wide) at $117.25/yd, or order a $4.25 sample swatch."
+ }
+ },
+ {
+ "offerId": "44724798226483",
+ "title": "Brushed Finesse Champagne",
+ "color": "Champagne",
+ "material": "Faux Leather",
+ "stillLR": true,
+ "liveDescription": "Brushed Finesse Champagne",
+ "liveColor": null,
+ "liveMaterial": null,
+ "lastUpdateDate": "2026-08-26T15:15:58.136016Z",
+ "productAttributes": {
+ "color": "Champagne",
+ "material": "Faux Leather",
+ "productTypes": [
+ "Wallcovering"
+ ],
+ "description": "Brushed Finesse Champagne — faux leather wallcovering (wallpaper) in the Champagne colorway. Not a beverage. Brushed Finesse — Champagne . Majilite Nytek® faux leather from the Metallic Specialties I collection — a specially engineered Nylon Fiber Matrix, luxurious, breathable and durable, ideal for wall coverings, seating, flat surfaces and displays. Width: 54 in / 137 cm Weight: 8.8 oz/sq yd / 300 g/m² Thickness: 28 mils / 0.7 mm Durability: 300,000+ double rubs (Wyzenbeek wire screen, ASTM D-4157-82) Flammability: UFAC/NFPA 260 (Class 1) & CAL Technical Bulletin 117-2013 Section 1 — Pass Cleanability: S/W · Crocking Wet 5 / Dry 5 PFAS-, PVC- and plasticizer-free · no off-gassing Available by the yard (54\" wide) at $92.75/yd, or order a $4.25 sample swatch."
+ }
+ },
+ {
+ "offerId": "44724798193715",
+ "title": "Infinity White Zinfandel",
+ "color": "White Zinfandel",
+ "material": "Faux Leather",
+ "stillLR": true,
+ "liveDescription": "Infinity White Zinfandel",
+ "liveColor": null,
+ "liveMaterial": null,
+ "lastUpdateDate": "2026-09-11T23:19:26.742824Z",
+ "productAttributes": {
+ "color": "White Zinfandel",
+ "material": "Faux Leather",
+ "productTypes": [
+ "Wallcovering"
+ ],
+ "description": "Infinity White Zinfandel — faux leather wallcovering (wallpaper) in the White Zinfandel colorway. Not a beverage. Infinity — White Zinfandel . Majilite Nytek® faux leather from the Metallic Specialties I collection — a specially engineered Nylon Fiber Matrix, luxurious, breathable and durable, ideal for wall coverings, seating, flat surfaces and displays. Width: 54 in / 137 cm Weight: 8.8 oz/sq yd / 300 g/m² Thickness: 28 mils / 0.7 mm Durability: 300,000+ double rubs (Wyzenbeek wire screen, ASTM D-4157-82) Flammability: UFAC/NFPA 260 (Class 1) & CAL Technical Bulletin 117-2013 Section 1 — Pass Cleanability: S/W · Crocking Wet 5 / Dry 5 PFAS-, PVC- and plasticizer-free · no off-gassing Available by the yard (54\" wide) at $92.75/yd, or order a $4.25 sample swatch."
+ }
+ },
+ {
+ "offerId": "40977437818931",
+ "title": "McKinley Park Type 2 | Phillipe Romano",
+ "color": "Gray",
+ "material": "Vinyl",
+ "stillLR": true,
+ "liveDescription": "A soft, organic quality suggests a landscape obscured by fog… or a memory by time. The Type II vinyl wallcovering’s a gentle visual texture for the wall.",
+ "liveColor": null,
+ "liveMaterial": null,
+ "lastUpdateDate": "2026-09-11T22:20:16.886293Z",
+ "productAttributes": {
+ "color": "Gray",
+ "material": "Vinyl",
+ "productTypes": [
+ "Wallcovering"
+ ],
+ "description": "McKinley Park Type 2 | Phillipe Romano — vinyl wallcovering (wallpaper) in the Gray colorway. Not a beverage. A soft, organic quality suggests a landscape obscured by fog... or a memory by time. The Type II vinyl wallcovering’s a gentle visual texture for the wall."
+ }
+ },
+ {
+ "offerId": "44508742418483",
+ "title": "Colonne Une Véritable Affinité | Elitis",
+ "color": "Silver",
+ "material": "Textile",
+ "stillLR": true,
+ "liveDescription": "Colonne Une Véritable Affinité | Elitis",
+ "liveColor": null,
+ "liveMaterial": null,
+ "lastUpdateDate": "2026-09-11T22:47:07.706689Z",
+ "productAttributes": {
+ "color": "Silver",
+ "material": "Textile",
+ "productTypes": [
+ "Wallcovering"
+ ],
+ "description": "Colonne Une Véritable Affinité | Elitis — textile wallcovering (wallpaper) in the Silver colorway. Not a beverage. A traditional striped wallcovering with a textured effect, suitable for residential use. Colonne in Une Véritable Affinité, from the Elitis Wall Rayures Jumelles collection. 60% PES 40% PU, 50\" wide."
+ }
+ },
+ {
+ "offerId": "44508735209523",
+ "title": "Volutes Le Goût De L'étrange | Elitis",
+ "color": "Cream",
+ "material": "Vinyl",
+ "stillLR": true,
+ "liveDescription": "Volutes Le Goût De L'étrange | Elitis",
+ "liveColor": null,
+ "liveMaterial": null,
+ "lastUpdateDate": "2026-09-11T23:04:14.129658Z",
+ "productAttributes": {
+ "color": "Cream",
+ "material": "Vinyl",
+ "productTypes": [
+ "Wallcovering"
+ ],
+ "description": "Volutes Le Goût De L'étrange | Elitis — vinyl wallcovering (wallpaper) in the Cream colorway. Not a beverage. Traditional vinyl wallcovering featuring bronze abstract swirls on a charcoal gray textured background, suitable for residential interiors. Volutes in Le Goût De L'étrange, from the Elitis Wall Domino collection. Paper on non woven backing, 39\" wide."
+ }
+ }
+ ],
+ "results": []
+}
\ No newline at end of file
diff --git a/tk11847-colorway-override.mjs b/tk11847-colorway-override.mjs
index 0d79e04..1d10a70 100644
--- a/tk11847-colorway-override.mjs
+++ b/tk11847-colorway-override.mjs
@@ -74,8 +74,12 @@ for (const p of PLAN) {
const u = new URL(a.link); const j = await (await fetch(u.origin + u.pathname.replace(/\/$/, '') + '.json', { headers: { 'User-Agent': 'Mozilla/5.0' } })).json();
desc = (j.product?.body_html || '').replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim().slice(0, 900);
} catch (e) { console.log(' (description fetch failed, will omit description)', p.offerId, e.message); }
- const productAttributes = { color: p.color, material: p.material };
- if (desc) productAttributes.description = `${p.title} — ${p.color} colorway. ${desc}`;
+ // Kimi review 09-23: front-load the wallcovering/material tokens in the first ~160 chars; 'colorway'
+ // names the drink word as a color; productTypes is a LIST attribute (wholesale replace) so it is sent
+ // as exactly the sibling value ['Wallcovering'] (also fills the McKinley Park gap from the 09-18 pass).
+ const productAttributes = { color: p.color, material: p.material, productTypes: ['Wallcovering'] };
+ const lead = `${p.title} — ${p.material.toLowerCase()} wallcovering (wallpaper) in the ${p.color} colorway. Not a beverage.`;
+ productAttributes.description = desc ? `${lead} ${desc}`.slice(0, 4900) : lead;
rows.push({ ...p, stillLR, liveDescription: a.description, liveColor: a.color || null, liveMaterial: a.material || null, lastUpdateDate: live._v1.productStatus?.lastUpdateDate, productAttributes });
console.log(`${stillLR ? 'LR ' : 'ok '} ${p.offerId} ${p.title}\n live: color=${a.color || '-'} material=${a.material || '-'} desc="${(a.description || '').slice(0, 50)}"\n push: color=${p.color} material=${p.material} desc="${(productAttributes.description || '').slice(0, 90)}…"`);
await new Promise(z => setTimeout(z, 300));
@@ -105,4 +109,14 @@ for (const r of rows) {
}
fs.writeFileSync(art, JSON.stringify(record, null, 1));
console.log('\nartifact:', art);
-console.log('Verify ONLY via itemLevelIssues/destinationStatuses after a lag (node tk11847-fresh-state-20260923.mjs); lastUpdateDate is not the test.');
+if (!ROLLBACK) {
+ // post-insert readback: the supplemental MUST merge into the same processed product (same offerId/en/US), never spawn a standalone item
+ console.log('\nREADBACK (merge check — supplemental must land on the same processed product):');
+ await new Promise(z => setTimeout(z, 3000));
+ for (const r of record.results.filter(x => x.ok)) {
+ const live = await mc.getProduct('online:en:US:' + r.offerId).catch(e => ({ err: e.message }));
+ const a = live?._v1?.productAttributes || {};
+ console.log(' ', r.offerId, 'color=', a.color || '-', 'material=', a.material || '-', 'desc=', (a.description || '').slice(0, 60), live?.err ? 'ERR ' + live.err : '(merge may lag minutes)');
+ }
+}
+console.log('Verify ONLY via itemLevelIssues/destinationStatuses after a lag (node tk11847-fresh-state-20260923.mjs); lastUpdateDate is not the test. If still disapproved ~72h after re-processing, fall back to the console appeal for that offer.');
← fa224f8 TK-11847 09-23 re-measure (7/29 still LR, parity 28/1 unchan
·
back to Gmc Titlefix
·
auto-data-snapshot: 2026-09-24T12:49:23 (1 data files) — tk1 b01c159 →