← back to Gmc Titlefix
TK-11449: measure survivor Google-offer coverage — bounds the orphan-unpublish carve-out to 1 product
231b7505eb63ec6737e7be2ca3a6c7d896af3f52 · 2026-09-12 06:35:10 -0700 · Steve
Closes the hole in the orphan-unpublish recommendation: unpublishing an orphan whose
survivor has no offer removes that product from Google permanently, since creates are
dead (maxCreationDate 2026-08-26, TK-11397).
Complete enumeration of 62,362 offers (refuses to report on an incomplete walk).
70 survivors probed: 66 HAVE an offer, 4 do NOT, 0 NOT_MEASURED. 3 of the 4 are the
reverted pairs with no orphan to unpublish, leaving exactly one genuine carve-out:
pano-stripe-peck-drive-plum.
Read-only. No Shopify, Merchant Center, dw_unified or feed writes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QzRJQxiT3DKZRRfzWsRTVM
Files touched
A data/tk11449-survivor-coverage.jsonA tk11449-survivor-coverage.cjs
Diff
commit 231b7505eb63ec6737e7be2ca3a6c7d896af3f52
Author: Steve <steve@designerwallcoverings.com>
Date: Sat Sep 12 06:35:10 2026 -0700
TK-11449: measure survivor Google-offer coverage — bounds the orphan-unpublish carve-out to 1 product
Closes the hole in the orphan-unpublish recommendation: unpublishing an orphan whose
survivor has no offer removes that product from Google permanently, since creates are
dead (maxCreationDate 2026-08-26, TK-11397).
Complete enumeration of 62,362 offers (refuses to report on an incomplete walk).
70 survivors probed: 66 HAVE an offer, 4 do NOT, 0 NOT_MEASURED. 3 of the 4 are the
reverted pairs with no orphan to unpublish, leaving exactly one genuine carve-out:
pano-stripe-peck-drive-plum.
Read-only. No Shopify, Merchant Center, dw_unified or feed writes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QzRJQxiT3DKZRRfzWsRTVM
---
data/tk11449-survivor-coverage.json | 837 ++++++++++++++++++++++++++++++++++++
tk11449-survivor-coverage.cjs | 94 ++++
2 files changed, 931 insertions(+)
diff --git a/data/tk11449-survivor-coverage.json b/data/tk11449-survivor-coverage.json
new file mode 100644
index 0000000..5c32e3e
--- /dev/null
+++ b/data/tk11449-survivor-coverage.json
@@ -0,0 +1,837 @@
+{
+ "ticket": "TK-11449",
+ "measured_at": "2026-09-12T13:34:16.714Z",
+ "rail": "READ-ONLY, zero writes",
+ "merchant": "146735262",
+ "offers_enumerated": 62362,
+ "enumeration_complete": true,
+ "survivors_total": 70,
+ "SURVIVOR_HAS_OWN_OFFER": 66,
+ "SURVIVOR_NO_OFFER": 4,
+ "NOT_MEASURED": 0,
+ "interpretation": "SURVIVOR_NO_OFFER = products that would end at ZERO Google presence if their orphan offer is unpublished, with no route back while creates are dead (maxCreationDate 2026-08-26).",
+ "rows": [
+ {
+ "surv": "gid://shopify/Product/7664498081843",
+ "s_handle": "pipa-stripe-classic-green",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-classic-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664498049075",
+ "s_handle": "pano-stripe-classic-green-copia",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-classic-green-copia",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 558.77,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664498016307",
+ "s_handle": "piza-stripe-classic-green",
+ "s_status": "ACTIVE",
+ "clean": "piza-stripe-classic-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497983539",
+ "s_handle": "pico-stripe-lexington-black",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-lexington-black",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497950771",
+ "s_handle": "pipa-stripe-lexington-black",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-lexington-black",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497918003",
+ "s_handle": "pano-stripe-lexington-black",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-lexington-black",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497885235",
+ "s_handle": "pano-stripe-margot-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-margot-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 5,
+ "offer_prices": [
+ 195.34,
+ 59.06,
+ 422.48,
+ 4.25,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497852467",
+ "s_handle": "pipa-stripe-margot-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-margot-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497786931",
+ "s_handle": "pipa-stripe-viva-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-viva-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497721395",
+ "s_handle": "pano-stripe-viva-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-viva-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497688627",
+ "s_handle": "pico-stripe-marilyn-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-marilyn-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497655859",
+ "s_handle": "pipa-stripe-marilyn-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-marilyn-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497623091",
+ "s_handle": "pano-stripe-marilyn-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-marilyn-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497590323",
+ "s_handle": "pico-stripe-sultry-sunset-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-sultry-sunset-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497492019",
+ "s_handle": "pipa-stripe-sultry-sunset-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-sultry-sunset-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497459251",
+ "s_handle": "pano-stripe-sultry-sunset-magenta",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-sultry-sunset-magenta",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497426483",
+ "s_handle": "pico-stripe-sunset-spring-green",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-sunset-spring-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 43.95
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497393715",
+ "s_handle": "pipa-stripe-sunset-spring-green",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-sunset-spring-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 43.95
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497360947",
+ "s_handle": "pano-stripe-sunset-spring-green",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-sunset-spring-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497328179",
+ "s_handle": "pico-stripe-midnight-green",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-midnight-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497229875",
+ "s_handle": "pipa-stripe-midnight-green",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-midnight-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497197107",
+ "s_handle": "pano-stripe-midnight-green",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-midnight-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497098803",
+ "s_handle": "pico-stripe-oxford-olive-green",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-oxford-olive-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497066035",
+ "s_handle": "pipa-stripe-oxford-olive-green",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-oxford-olive-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497033267",
+ "s_handle": "pano-stripe-oxford-olive-green",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-oxford-olive-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664497000499",
+ "s_handle": "pico-stripe-portola-pacific-blue",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-portola-pacific-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496934963",
+ "s_handle": "pipa-stripe-portola-pacific-blue",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-portola-pacific-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496902195",
+ "s_handle": "pano-stripe-portola-pacific-blue",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-portola-pacific-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496836659",
+ "s_handle": "pico-stripe-beverly-beach-house-blue",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-beverly-beach-house-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496803891",
+ "s_handle": "pipa-stripe-beverly-beach-house-blue",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-beverly-beach-house-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496738355",
+ "s_handle": "pano-stripe-beverly-beach-house-blue",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-beverly-beach-house-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 558.77,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496705587",
+ "s_handle": "pico-stripe-sultry-sunset-blue",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-sultry-sunset-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496672819",
+ "s_handle": "pipa-stripe-sultry-sunset-blue",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-sultry-sunset-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496640051",
+ "s_handle": "pano-stripe-sultry-sunset-blue",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-sultry-sunset-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 43.95
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496607283",
+ "s_handle": "pico-stripe-oscar-ocean-sunset-blue",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-oscar-ocean-sunset-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496574515",
+ "s_handle": "pipa-stripe-oscar-ocean-sunset-blue",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-oscar-ocean-sunset-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496541747",
+ "s_handle": "pano-stripe-oscar-ocean-sunset-blue",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-oscar-ocean-sunset-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496476211",
+ "s_handle": "pico-stripe-benedict-canyon-coffee",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-benedict-canyon-coffee",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496443443",
+ "s_handle": "pipa-stripe-benedict-canyon-coffee",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-benedict-canyon-coffee",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496410675",
+ "s_handle": "pano-stripe-benedict-canyon-coffee",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-benedict-canyon-coffee",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 558.77,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496345139",
+ "s_handle": "pico-stripe-peck-drive-plum",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-peck-drive-plum",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496312371",
+ "s_handle": "pipa-stripe-peck-drive-plum",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-peck-drive-plum",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664496214067",
+ "s_handle": "pano-stripe-peck-drive-plum",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-peck-drive-plum",
+ "coverage": "NO_OFFER",
+ "offer_count": 0,
+ "offer_prices": []
+ },
+ {
+ "surv": "gid://shopify/Product/7664496082995",
+ "s_handle": "pico-stripe-i-love-la",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-i-love-la",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664495394867",
+ "s_handle": "pipa-stripe-i-love-la",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-i-love-la",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664495067187",
+ "s_handle": "pano-stripe-i-love-la",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-i-love-la",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 558.77,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664494673971",
+ "s_handle": "pico-stripe-flamingo-pink",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-flamingo-pink",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664494116915",
+ "s_handle": "pipa-stripe-flamingo-pink",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-flamingo-pink",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493953075",
+ "s_handle": "pano-stripe-flamingo-pink",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-flamingo-pink",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493920307",
+ "s_handle": "pico-stripe-foothill-forest-green",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-foothill-forest-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493887539",
+ "s_handle": "pipa-stripe-foothill-forest-green",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-foothill-forest-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493854771",
+ "s_handle": "pano-stripe-foothill-forest-green",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-foothill-forest-green",
+ "coverage": "HAS_OFFER",
+ "offer_count": 6,
+ "offer_prices": [
+ 558.77,
+ 74.2,
+ 149.91,
+ 89.34,
+ 210.48,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493822003",
+ "s_handle": "pico-stripe-canon-drive-cappuccino",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-canon-drive-cappuccino",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493789235",
+ "s_handle": "pipa-stripe-canon-drive-cappuccino",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-canon-drive-cappuccino",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493756467",
+ "s_handle": "pano-stripe-canon-drive-cappuccino",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-canon-drive-cappuccino",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493723699",
+ "s_handle": "pico-stripe-classic-camden-blue",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-classic-camden-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493690931",
+ "s_handle": "pipa-stripe-classic-camden-blue",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-classic-camden-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 558.77,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493658163",
+ "s_handle": "pano-stripe-classic-camden-blue",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-classic-camden-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 558.77,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493625395",
+ "s_handle": "pico-stripe-doheny-dark-blue",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-doheny-dark-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493592627",
+ "s_handle": "pipa-stripe-doheny-dark-blue",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-doheny-dark-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493559859",
+ "s_handle": "pano-stripe-doheny-dark-blue",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-doheny-dark-blue",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 558.77
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493527091",
+ "s_handle": "pico-stripe-peach-pit",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-peach-pit",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493494323",
+ "s_handle": "pipa-stripe-peach-pit",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-peach-pit",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493461555",
+ "s_handle": "pano-stripe-peach-pit",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-peach-pit",
+ "coverage": "HAS_OFFER",
+ "offer_count": 3,
+ "offer_prices": [
+ 59.06,
+ 558.77,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493428787",
+ "s_handle": "pico-stripe-burton-way",
+ "s_status": "ACTIVE",
+ "clean": "pico-stripe-burton-way",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493396019",
+ "s_handle": "pipa-stripe-burton-way",
+ "s_status": "ACTIVE",
+ "clean": "pipa-stripe-burton-way",
+ "coverage": "HAS_OFFER",
+ "offer_count": 2,
+ "offer_prices": [
+ 43.95,
+ 195
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7664493363251",
+ "s_handle": "pano-stripe-burton-way",
+ "s_status": "ACTIVE",
+ "clean": "pano-stripe-burton-way",
+ "coverage": "HAS_OFFER",
+ "offer_count": 1,
+ "offer_prices": [
+ 43.95
+ ]
+ },
+ {
+ "surv": "gid://shopify/Product/7950896529459",
+ "s_handle": "venezia-grasscloth-wallcovering-fentucci-1",
+ "s_status": "ACTIVE",
+ "clean": "venezia-grasscloth-wallcovering-fentucci",
+ "coverage": "NO_OFFER",
+ "offer_count": 0,
+ "offer_prices": []
+ },
+ {
+ "surv": "gid://shopify/Product/7950896627763",
+ "s_handle": "vercelli-grasscloth-wallcovering-fentucci-1",
+ "s_status": "ACTIVE",
+ "clean": "vercelli-grasscloth-wallcovering-fentucci",
+ "coverage": "NO_OFFER",
+ "offer_count": 0,
+ "offer_prices": []
+ },
+ {
+ "surv": "gid://shopify/Product/7950896693299",
+ "s_handle": "viterbo-grasscloth-wallcovering-fentucci-1",
+ "s_status": "ACTIVE",
+ "clean": "viterbo-grasscloth-wallcovering-fentucci",
+ "coverage": "NO_OFFER",
+ "offer_count": 0,
+ "offer_prices": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tk11449-survivor-coverage.cjs b/tk11449-survivor-coverage.cjs
new file mode 100644
index 0000000..cc1ad86
--- /dev/null
+++ b/tk11449-survivor-coverage.cjs
@@ -0,0 +1,94 @@
+// TK-11449 — READ-ONLY: does each dedup SURVIVOR carry its own live Google offer?
+// Closes the hole in the orphan-unpublish recommendation. FAIL CLOSED: an unresolvable
+// survivor is NOT_MEASURED, never assumed covered.
+const fs=require('fs'),path=require('path');
+const {token,MERCHANT}=require('/Users/macstudio3/Projects/gmc-titlefix/_auth.js');
+const D='/Users/macstudio3/Projects/gmc-titlefix/data';
+const SHOP='designer-laboratory-sandbox.myshopify.com';
+const ADMIN=(fs.readFileSync('/Users/macstudio3/Projects/secrets-manager/.env','utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)||[])[1];
+if(!ADMIN) throw new Error('no SHOPIFY_ADMIN_TOKEN');
+
+const seen=new Map();
+for(const f of fs.readdirSync(D).filter(x=>x.startsWith('tk11449-dedup-RESTOREMAP-')))
+ for(const l of fs.readFileSync(path.join(D,f),'utf8').split('\n').filter(Boolean)){
+ const r=JSON.parse(l); if(r.surv_id) seen.set(r.surv_id,r);
+ }
+const rows=[...seen.values()];
+console.log('survivor products from restore maps:',rows.length);
+(async()=>{
+
+async function gql(q,v){
+ for(let a=0;a<5;a++){
+ try{
+ const r=await fetch(`https://${SHOP}/admin/api/2024-10/graphql.json`,{method:'POST',
+ headers:{'X-Shopify-Access-Token':ADMIN,'Content-Type':'application/json'},
+ body:JSON.stringify({query:q,variables:v})});
+ const t=await r.text(); const j=JSON.parse(t);
+ if(j.errors) throw new Error(JSON.stringify(j.errors).slice(0,200));
+ return j.data;
+ }catch(e){ if(a===4) throw e; await new Promise(s=>setTimeout(s,1200*(a+1))); }
+ }
+}
+const Q=`query($id:ID!){product(id:$id){id handle status title variants(first:100){nodes{id price}}}}`;
+const surv=[];
+for(const r of rows){
+ try{
+ const d=await gql(Q,{id:r.surv_id});
+ if(!d||!d.product){ surv.push({...r,state:'NOT_MEASURED',why:'product not returned'}); continue; }
+ surv.push({...r,state:'ok',s_handle:d.product.handle,s_status:d.product.status,s_title:d.product.title,
+ vids:d.product.variants.nodes.map(v=>v.id.split('/').pop()),
+ prices:d.product.variants.nodes.map(v=>v.price)});
+ }catch(e){ surv.push({...r,state:'NOT_MEASURED',why:String(e.message).slice(0,140)}); }
+}
+console.log('shopify resolved:',surv.filter(s=>s.state==='ok').length,'NOT_MEASURED:',surv.filter(s=>s.state!=='ok').length);
+
+// enumerate ALL offers once
+const tok=await token(); const H={Authorization:'Bearer '+tok};
+const offers=new Map(); let page='',n=0,complete=false;
+for(let i=0;i<200;i++){
+ const u=`https://merchantapi.googleapis.com/products/v1/accounts/${MERCHANT}/products?pageSize=1000`+(page?`&pageToken=${page}`:'');
+ const r=await fetch(u,{headers:H}); if(!r.ok) throw new Error('offers '+r.status+' '+(await r.text()).slice(0,200));
+ const j=await r.json();
+ for(const p of (j.products||[])){
+ n++;
+ const link=p.productAttributes&&p.productAttributes.link||'';
+ const price=p.productAttributes&&p.productAttributes.price&&p.productAttributes.price.amountMicros;
+ const id=(p.offerId||'');
+ offers.set(id,{link,price:price?Number(price)/1e6:null,name:p.name||''});
+ }
+ page=j.nextPageToken||''; if(!page){complete=true;break;}
+}
+console.log('offers enumerated:',n,'complete:',complete);
+if(!complete) throw new Error('offer enumeration INCOMPLETE — refusing to report coverage');
+
+// index offers by any variant id appearing in offerId, and by handle in link
+const byVid=new Map(), byHandle=new Map();
+for(const [oid,o] of offers){
+ for(const m of oid.matchAll(/\d{8,}/g)) { if(!byVid.has(m[0]))byVid.set(m[0],[]); byVid.get(m[0]).push({oid,...o}); }
+ const hm=(o.link||'').match(/\/products\/([a-z0-9\-_]+)/i);
+ if(hm){ const h=hm[1].toLowerCase(); if(!byHandle.has(h))byHandle.set(h,[]); byHandle.get(h).push({oid,...o}); }
+}
+
+let cov=0,nocov=0,nm=0; const out=[];
+for(const s of surv){
+ if(s.state!=='ok'){ nm++; out.push({surv:s.surv_id,coverage:'NOT_MEASURED',why:s.why}); continue; }
+ const hits=[];
+ for(const v of s.vids) if(byVid.has(v)) hits.push(...byVid.get(v));
+ const hh=byHandle.get((s.s_handle||'').toLowerCase())||[];
+ for(const h of hh) hits.push(h);
+ const uniq=[...new Map(hits.map(h=>[h.oid,h])).values()];
+ if(uniq.length){cov++;} else {nocov++;}
+ out.push({surv:s.surv_id,s_handle:s.s_handle,s_status:s.s_status,clean:s.clean,
+ coverage:uniq.length?'HAS_OFFER':'NO_OFFER',offer_count:uniq.length,
+ offer_prices:uniq.map(u=>u.price).slice(0,6)});
+}
+const res={ticket:'TK-11449',measured_at:new Date().toISOString(),rail:'READ-ONLY, zero writes',
+ merchant:MERCHANT,offers_enumerated:n,enumeration_complete:complete,
+ survivors_total:surv.length,
+ SURVIVOR_HAS_OWN_OFFER:cov, SURVIVOR_NO_OFFER:nocov, NOT_MEASURED:nm,
+ interpretation:'SURVIVOR_NO_OFFER = products that would end at ZERO Google presence if their orphan offer is unpublished, with no route back while creates are dead (maxCreationDate 2026-08-26).',
+ rows:out};
+fs.writeFileSync(D+'/tk11449-survivor-coverage.json',JSON.stringify(res,null,1));
+console.log(JSON.stringify({SURVIVOR_HAS_OWN_OFFER:cov,SURVIVOR_NO_OFFER:nocov,NOT_MEASURED:nm,offers:n},null,1));
+
+})().catch(e=>{console.error('FATAL',e.message);process.exit(1)});
← 8f75855 auto-data-snapshot: 2026-09-11T15:49:18 (1 data files) — dat
·
back to Gmc Titlefix
·
auto-data-snapshot: 2026-09-12T07:18:58 (2 data files) — dat b831bb3 →