[object Object]

← back to Dw Catalog 404 Audit

Add audit-result.json (scope + sample + known-SKU verdicts)

dd16d3dc7c8da7e5b8d26d2412611ae20dcd9090 · 2026-06-26 10:31:53 -0700 · steve@designerwallcoverings.com

Files touched

Diff

commit dd16d3dc7c8da7e5b8d26d2412611ae20dcd9090
Author: steve@designerwallcoverings.com <steve@designerwallcoverings.com>
Date:   Fri Jun 26 10:31:53 2026 -0700

    Add audit-result.json (scope + sample + known-SKU verdicts)
---
 audit-result.json | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/audit-result.json b/audit-result.json
new file mode 100644
index 0000000..8b11876
--- /dev/null
+++ b/audit-result.json
@@ -0,0 +1,60 @@
+{
+  "audit": "dw-catalog-404-integrity",
+  "date": "2026-06-26",
+  "owner": "vp-dw-commerce",
+  "mode": "READ-ONLY (psql SELECT + public storefront GET/HEAD only)",
+  "cost_usd": 0,
+  "scope": {
+    "active_rows": 74927,
+    "handle_null": 0,
+    "handle_empty": 0,
+    "handle_eq_lower_dwsku": 13715,
+    "handle_ne_lower_dwsku": 61212,
+    "dwsku_null_among_active": 12983,
+    "malformed_handle_suffix_-handle": 2649,
+    "malformed_handle_suffix_-sample": 527,
+    "handle_contains_banned_word_wallpaper": 6765
+  },
+  "http_sample_real_handle_column": {
+    "requested": 400,
+    "determinate_responses": 180,
+    "http_200": 172,
+    "http_404": 8,
+    "http_429_self_throttled_indeterminate": 220,
+    "point_404_rate": 0.0444,
+    "wilson_95ci": [0.023, 0.084],
+    "estimated_active_rows_with_404ing_handle": 3300,
+    "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": {
+    "malformed_-handle_garbage": 3,
+    "descriptive_slug_pdp_gone": 5,
+    "all_status_in_mirror": "ACTIVE",
+    "all_synced_at": "2026-06-24 (fresh sync, not generic lag)"
+  },
+  "known_skus": {
+    "DWCW-705546": {
+      "panel_url": "/products/dwcw-705546",
+      "panel_url_http": 404,
+      "real_mirror_handle": "dwcw-705521",
+      "real_handle_http": 200,
+      "vendor": "China Seas",
+      "mirror_status": "ACTIVE",
+      "bucket": "b_handle_drift_panel_builds_url_from_dw_sku_not_handle"
+    },
+    "DWCS-895148": {
+      "panel_url": "/products/dwcs-895148",
+      "panel_url_http": 404,
+      "real_mirror_handle": "dwcs-895122",
+      "real_handle_http": 200,
+      "vendor": "China Seas",
+      "mirror_status": "ACTIVE",
+      "bucket": "b_handle_drift_panel_builds_url_from_dw_sku_not_handle"
+    }
+  },
+  "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)."
+  }
+}

← 8c37b1d DW catalog 404 integrity audit (read-only scope + storefront  ·  back to Dw Catalog 404 Audit  ·  auto-save: 2026-06-26T11:15:12 (1 files) — fetch-publication 48a1070 →