[object Object]

← back to Dw Signup Fulfillment

TK-11366: DTD verdict - A-prime (close the $45 gap first, then pull carriers); flip is store-wide

52e57ab296daf3895a6e735a4ed3c1dac88c501e · 2026-09-10 09:31:47 -0700 · Steve Abrams

Panel A=5 / B=1 / C=1, reviewer Cody non-voting.

Pure A rejected on measured evidence: Free Shipping caps at $45, Priority Sample Only
at $20, so a live 12-sample $51 cart returns ONLY carrier rates. Deactivating UPS+FedEx
would leave that cohort with zero rates and a dead checkout. Every A-voter assumed a
fallback to the $24.95 flat; the risk lens named it as the fatal precondition and voted
yes without checking it.

Pure B rejected too: open-ended 'diagnose first, change nothing' is not the right
principle; verify-before-touching is, and that is minutes.

Scope test added: the flip is STORE-WIDE, not sample-specific. Non-sample full-price
abandoned carts went 22%% -> 0%% recording $0.00, median default shipping $41.93 ->
$60.08 (+43%%). So A-prime is mitigation covering ~2.6%% of the surface, not the fix.

All steps are live Shopify shipping-config writes: drafted to pending-approval, not run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Files touched

Diff

commit 52e57ab296daf3895a6e735a4ed3c1dac88c501e
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Sep 10 09:31:47 2026 -0700

    TK-11366: DTD verdict - A-prime (close the $45 gap first, then pull carriers); flip is store-wide
    
    Panel A=5 / B=1 / C=1, reviewer Cody non-voting.
    
    Pure A rejected on measured evidence: Free Shipping caps at $45, Priority Sample Only
    at $20, so a live 12-sample $51 cart returns ONLY carrier rates. Deactivating UPS+FedEx
    would leave that cohort with zero rates and a dead checkout. Every A-voter assumed a
    fallback to the $24.95 flat; the risk lens named it as the fatal precondition and voted
    yes without checking it.
    
    Pure B rejected too: open-ended 'diagnose first, change nothing' is not the right
    principle; verify-before-touching is, and that is minutes.
    
    Scope test added: the flip is STORE-WIDE, not sample-specific. Non-sample full-price
    abandoned carts went 22%% -> 0%% recording $0.00, median default shipping $41.93 ->
    $60.08 (+43%%). So A-prime is mitigation covering ~2.6%% of the surface, not the fix.
    
    All steps are live Shopify shipping-config writes: drafted to pending-approval, not run.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---
 verification/tk10836/verify-nonsample-scope.js | 45 ++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/verification/tk10836/verify-nonsample-scope.js b/verification/tk10836/verify-nonsample-scope.js
new file mode 100644
index 0000000..c8c8050
--- /dev/null
+++ b/verification/tk10836/verify-nonsample-scope.js
@@ -0,0 +1,45 @@
+#!/usr/bin/env node
+// TK-11366 SCOPE TEST: is the checkout default-flip sample-specific, or store-wide?
+// Same proxy that worked: abandoned checkouts record what the shopper was HANDED.
+// Here: NON-sample (full-price) carts, before vs after 2026-08-18.
+const fs=require('fs'),os=require('os');
+for (const line of fs.readFileSync(os.homedir()+'/Projects/secrets-manager/.env','utf8').split('\n')) {
+  const m=line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*)$/); if(!m) continue;
+  let v=m[2].trim().replace(/^['"]|['"]$/g,''); if(!process.env[m[1]]) process.env[m[1]]=v;
+}
+const STORE=process.env.SHOPIFY_STORE_DOMAIN, TOKEN=process.env.SHOPIFY_FULL_ACCESS_TOKEN, API='2024-10';
+async function gql(q,v={}){const r=await fetch(`https://${STORE}/admin/api/${API}/graphql.json`,{method:'POST',
+  headers:{'X-Shopify-Access-Token':TOKEN,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});
+  const j=await r.json(); if(j.errors)console.error('ERR',JSON.stringify(j.errors).slice(0,300)); return j.data;}
+const Q=`query($c:String){ abandonedCheckouts(first:40, after:$c, query:"created_at:>2026-06-01", sortKey:CREATED_AT){
+  pageInfo{hasNextPage endCursor}
+  nodes{ createdAt subtotalPriceSet{shopMoney{amount}} totalPriceSet{shopMoney{amount}} totalTaxSet{shopMoney{amount}}
+    shippingAddress{countryCodeV2}
+    lineItems(first:20){ nodes{ title quantity variant{ sku } } } } } }`;
+(async()=>{
+  let c=null, samp=[], full=[];
+  do{ const d=await gql(Q,{c}); if(!d) break;
+    for(const a of d.abandonedCheckouts.nodes){
+      const lis=a.lineItems.nodes; if(!lis.length) continue;
+      if(a.shippingAddress?.countryCodeV2!=='US') continue;
+      const isSample=li=>/(^|-)sample/i.test(li.variant?.sku||'')||/sample|memo|swatch/i.test(li.title||'');
+      const allSample=lis.every(isSample), noSample=lis.every(li=>!isSample(li));
+      const items=Number(a.subtotalPriceSet?.shopMoney?.amount||0);
+      const total=Number(a.totalPriceSet?.shopMoney?.amount||0);
+      const tax=Number(a.totalTaxSet?.shopMoney?.amount||0);
+      const rec={date:a.createdAt.slice(0,10), items, ship:+(total-items-tax).toFixed(2)};
+      if(allSample) samp.push(rec); else if(noSample) full.push(rec);
+    } c=d.abandonedCheckouts.pageInfo.hasNextPage?d.abandonedCheckouts.pageInfo.endCursor:null; }while(c);
+  const tab=(rows,lab)=>{
+    console.log(`\n### ${lab} (US abandoned checkouts) ###`);
+    for(const [w,lo,hi] of [['Jun 1 - Aug 17','2026-06-01','2026-08-17'],['Aug 18 - Sep 10','2026-08-18','2026-09-30']]){
+      const s=rows.filter(r=>r.date>=lo&&r.date<=hi);
+      const z=s.filter(r=>r.ship<=0.001).length;
+      console.log(`  ${w}: n=${String(s.length).padStart(3)}  ship\$0.00=${String(z).padStart(3)} (${s.length?(100*z/s.length).toFixed(0):'-'}%)  medianShip=$${s.length?[...s.map(r=>r.ship)].sort((a,b)=>a-b)[Math.floor(s.length/2)].toFixed(2):'-'}`);
+    }
+  };
+  tab(samp,'SAMPLE-ONLY carts  (control - known affected)');
+  tab(full,'NON-SAMPLE / full-price carts  (the scope question)');
+  console.log('\nNOTE: full-price carts legitimately pay shipping, so a low $0.00 rate is EXPECTED there.');
+  console.log('The signal is whether the BEFORE/AFTER ratio shifts the way the sample cohort did.');
+})();

← 07e8ba5 TK-11366: ROOT CAUSE FOUND - checkout's default shipping opt  ·  back to Dw Signup Fulfillment  ·  TK: guarded auto-approve trade signups on submit (email-vali 3c7bad1 →