← 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 →