[object Object]

← back to Dw Catalog 404 Audit

FIX 3(a): record confirmed mechanism (10/10) + exact 1,743 unpublished count in audit-result.json

5e1163128a0e5f61ae75d6fca386879c6b8e7a85 · 2026-06-26 11:25:41 -0700 · Steve Studio

Files touched

Diff

commit 5e1163128a0e5f61ae75d6fca386879c6b8e7a85
Author: Steve Studio <steve@designerwallcoverings.com>
Date:   Fri Jun 26 11:25:41 2026 -0700

    FIX 3(a): record confirmed mechanism (10/10) + exact 1,743 unpublished count in audit-result.json
---
 audit-result.json | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 50 insertions(+), 3 deletions(-)

diff --git a/audit-result.json b/audit-result.json
index 8b11876..eaf3212 100644
--- a/audit-result.json
+++ b/audit-result.json
@@ -22,9 +22,15 @@
     "http_404": 8,
     "http_429_self_throttled_indeterminate": 220,
     "point_404_rate": 0.0444,
-    "wilson_95ci": [0.023, 0.084],
+    "wilson_95ci": [
+      0.023,
+      0.084
+    ],
     "estimated_active_rows_with_404ing_handle": 3300,
-    "estimated_range": [1700, 6300],
+    "estimated_range": [
+      1700,
+      6300
+    ],
     "note": "Shopify/Cloudflare bot protection 429'd 220/400 on 8-way burst and stayed throttled on serial retry; 429 = self-inflicted, NOT a catalog 404. Estimate rests on the 180 determinate responses + structural DB evidence."
   },
   "sample_404_breakdown": {
@@ -56,5 +62,46 @@
   "root_cause_summary": {
     "problem_A_panel_bug": "3D catalog panel builds /products/<dw_sku> instead of /products/<handle>. Only 13715/74927 (18.3%) of ACTIVE products have handle==lower(dw_sku), so a dw_sku-derived URL 404s for the other 81.7%. Explains both known 404s. Read-side, catalog NOT at fault.",
     "problem_B_catalog_handle_integrity": "Independent ~4.4% (~3300 ACTIVE rows) whose STORED handle itself 404s. Sub-buckets: (B1) malformed handle suffixes -handle/-sample ~3176 rows (import-template defect, Malibu/PS Removable/Fentucci); (B2) descriptive-slug PDPs that 404 despite mirror status=ACTIVE because the mirror's status column mirrors Shopify product.status, which does NOT reflect Online-Store sales-channel publication (bucket a staleness + c unpublished)."
+  },
+  "fix_3a_executed": {
+    "date": "2026-06-26",
+    "method": "DTD verdict A (unanimous 3/3): full-scan Admin API over all ACTIVE",
+    "admin_api_full_scan": {
+      "endpoint": "GET /admin/api/2024-10/products.json?status=active&limit=250&fields=id,handle,status,published_at,published_scope",
+      "active_fetched": 76192,
+      "throttling": "none (call-limit steady 1/80)",
+      "published_at_not_null": 74449,
+      "published_at_null_UNPUBLISHED": 1743,
+      "scope_global": 74740,
+      "scope_web": 1452,
+      "scope_other": 0
+    },
+    "mechanism_confirmation": {
+      "test": "rate-polite storefront check 10 unpublished + 10 published",
+      "unpublished_404": "10/10",
+      "published_200": "10/10",
+      "predicate": "published_at IS NULL <=> storefront 404 (holds across descriptive-slug AND malformed -handle rows; scope is NOT the predicate, 265 unpublished are scope=web)"
+    },
+    "true_unpublished_active_count": 1743,
+    "concentration": {
+      "Surface Stick": 742,
+      "PS Removable Wallpaper": 735,
+      "Schumacher": 265,
+      "DW Home": 1
+    },
+    "handle_shape": {
+      "descriptive_slug": 1008,
+      "malformed_-handle": 735
+    },
+    "corrects_prior_estimate": "prior ~3300 conflated 1743 unpublished-to-channel + the Problem-A panel URL bug; FIX 3(a) isolates the publication bucket = 1743",
+    "mirror_column": {
+      "added": "online_store_published boolean (nullable, additive, reversible, LOCAL dw_unified only)",
+      "rows_populated": 75610,
+      "active_false": 1743,
+      "active_true": 73013,
+      "active_null": 171
+    },
+    "candidate_csv": "unpublished-active-candidates.csv (1743 rows)",
+    "cost_usd": 0
   }
-}
+}
\ No newline at end of file

← fa1f6c5 FIX 3(a): full-scan publication diagnostic — confirm publish  ·  back to Dw Catalog 404 Audit  ·  Schumacher-265 triage: read-only live-Shopify completeness c 0c374b0 →