← back to Dw Catalog 404 Audit
audit-result.json
107 lines
{
"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)."
},
"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
}
}