← back to Dw Yolo Loop
scripts/nav-link-reachability/FINDING.md
37 lines
# Nav-link reachability: NO dark-by-nav inventory among PUBLISHED products (reachable, not necessarily merchandised) — Boost "Shop All" + site search reach the full 72,453-product catalog regardless of per-collection nav links — cycle 87
> **Scope (officer):** this closes REACHABILITY among PUBLISHED products, verified via the live storefront + the public Boost API. The Admin `menus` field was ACCESS_DENIED (token lacks the nav scope), so the top-nav menu TREE was inferred from the rendered storefront, NOT read from the menu admin — the nav-scope corner is unmeasured, not cleared. "Reachable" does NOT imply "merchandised" — keep that qualifier attached wherever this is cited.
**DTD verdict A (unanimous 3/3 — Claude + Codex + Qwen).** READ-ONLY (live storefront HTML fetch + the public Boost filter/search API + Admin GraphQL; no mutation), **$0**. Resolves the surface the c86 officer formally queued: "membership ≠ discoverable — a collection can be published + URL-reachable yet linked nowhere a shopper traverses." Both Codex and Qwen required testing whether a global filter/search (Boost) compensates for nav.
## 🟢 Answer: discoverability does NOT depend on per-collection nav links — the storefront is a Boost Shop-All + search architecture that reaches the entire catalog
- **The storefront runs Boost Product Filter & Search** (`services.mybcapps.com/bc-sf-filter/...`) — confirmed in the page JS (filter, search, search/products, search/suggest endpoints).
- **`/collections/all` (Shop All) is Boost-powered with infinite scroll and contains the FULL catalog.** The public Boost filter API returns **`total_product: 72,453`** for the all-products scope (≈ the entire published catalog; cf. ~71,733 active scanned in c86). `/collections/all` is linked from the storefront.
- **Boost site search is functional and returns proper subsets** — a query `q=grasscloth` returns **7,715 products** (a real subset of 72,453, not the flat list), proving search reaches products by term, not just the homepage.
- **Top nav is HUB-based** (7 items): Brands → /pages/brands, Collections → /pages/collections, Color → /pages/shop-by-color, Material → /pages/shop-by-material, Styles → /pages/designer-wallpaper-styles, Commercial → /pages/commercial-wallcoverings, New Arrivals → /collections/new-arrivals — plus Shop All (/collections/all). Browse is organized as faceted hubs + a Boost-filtered Shop-All + search.
## 🔬 The skeptical decode — this is the negative control the panel demanded
- **The c86 caveat ("membership ≠ discoverable") was the right question; the answer is that the premise behind the dark-inventory worry doesn't hold here.** A product is "dark" only if NO shopper path reaches it. But every published product is in `/collections/all` (72,453), which is Boost-infinite-scroll + linked, AND reachable by Boost search. So per-collection nav-linking is NOT load-bearing for reachability.
- **The c86 Flag-A concern is defused for REACHABILITY:** the unlinked 127k catch-all `best-seller-internal-use` doesn't matter for discoverability — Shop All + search reach products regardless. (Its feed-mislabel issue from c86 stands separately; this cycle is about reachability, not feed hygiene.)
- **Negative control is a concrete external count, not a tautology:** the Boost API `total_product: 72,453` is measured from the same engine that powers the live storefront browse — it is the actual number a shopper can scroll/search, not an Admin-side membership count.
## ⚠️ Honest limits (named, not papered over)
1. **Faceted-filter subsetting not directly confirmed via the API:** my `filter_vendor=Thibaut` probe returned the full 72,453 (wrong Boost param name — Boost uses its own `pf_*`/`filter_*` schema), so I did NOT prove the on-page facet filters return subsets via the API. BUT Boost SEARCH returning 7,715 for "grasscloth" proves the same backend subsets correctly, and the storefront facet UI uses that engine — so faceted filtering is near-certain, just not API-confirmed this cycle.
2. **Reachable ≠ well-merchandised (the softer residual, = c86 Flag A territory):** a product reachable ONLY via Shop All + search (not surfaced in a curated Brands/Color/Material/Styles hub facet) is reachable but poorly merchandised. The hub pages (/pages/brands etc.) are JS/linklist-rendered; I confirmed the 7 top-level hubs but did NOT enumerate every collection linked beneath them, so per-product MERCHANDISING-DEPTH (is each product in a curated facet, not just Shop-All) is unmeasured. That is a merchandising-quality question, NOT dark-inventory — separate, softer, lower priority.
## 📋 Disposition: clean bill on dark-inventory reachability; no fix needed
1. **No dark-by-nav inventory.** Every published product is reachable via Shop All (Boost infinite-scroll, 72,453) + Boost site search (proven). The c86 dark-inventory hypothesis is resolved: reachability does not hinge on per-collection nav-linking. No fix.
2. **Together with c86 this closes the "dark inventory via collections/nav" thread:** c86 = 0 orphans (every product in ≥1 collection); c87 = every product reachable via Shop-All + search regardless of nav. The only genuine dark-inventory vector remains the April ARCHIVE (archived products, off-storefront) — a separate, already-tracked campaign.
3. **Residuals (named, queued):** (a) merchandising-DEPTH — are products in curated hub facets, not just Shop-All (softer, c86 Flag-A adjacent); (b) IMAGE integrity (Qwen's c86/c87 dissent — missing featured image / 404 CDN) still UNSWEPT; (c) inventory=2026 still un-audited.
_Cycle 87. DTD-picked A (unanimous 3/3). Resolved the c86-officer-queued nav-link reachability question: the storefront runs Boost Product Filter & Search; `/collections/all` (Shop All, linked, infinite-scroll) contains the full 72,453-product catalog per the public Boost API, and Boost site search returns proper subsets (grasscloth → 7,715). So discoverability does NOT depend on per-collection nav links → NO dark-by-nav inventory; the c86 "membership ≠ discoverable" concern is resolved and the unlinked 127k catch-all is moot for reachability. Honest limits named: API faceted-filter subsetting not directly confirmed (search proven instead); merchandising-DEPTH (curated-facet vs Shop-All-only) unmeasured = a separate softer residual. Together with c86 this closes the collections/nav dark-inventory thread; the April archive remains the only real dark-inventory vector (separate campaign). PJ excluded. Read-only, $0, no fix gated._
---
## 🏛️ OFFICER SIGN-OFF — vp-dw-marketing: CONFIRMED (scope correction, folded in)
- **Q1 — settles the literal dark-inventory question.** Shop-All at 72,453 ≈ the full active set (c86 ~71,733) and Boost search returns proper term-subsets (grasscloth 7,715) → every published SKU has ≥2 traversable paths independent of per-collection nav-linking. The "membership ≠ discoverable" worry was right to test; it came back clean. The 127k unlinked catch-all is correctly moot for REACHABILITY. **But "not dark" ≠ "not buried":** a 72k infinite-scroll nobody pages past ~row 200 + a search box requiring a known term = technically-reachable / practically-buried for the long tail. That is the merchandising-DEPTH residual the cycle already named, NOT a reachability failure — framing holds.
- **Q2 — merchandising-DEPTH is the highest-value open thread → its own cycle.** Right to stop at reachability rather than overreach into JS-rendered hub measurement it couldn't do read-only. Next cycle: for each hub facet (Brands/Color/Material/Styles/Commercial/New Arrivals), measure curated-facet coverage vs Shop-All/search-ONLY (curated traffic converts; row-9000 doesn't). **FIRST task: crack the correct Boost facet param and PROVE faceted subsetting** — do NOT inherit "search subsetting proven" as if it covers facets (honest-limit (a)).
- **Q3 — two tightenings (folded in):** (1) scope the closure to PUBLISHED + storefront-reachable — `menus` was ACCESS_DENIED so the nav tree was INFERRED from the storefront, not audited from the menu admin; write it as "no dark-by-nav inventory among published products, verified via storefront + Boost," not "nav fully audited." (2) keep the "reachable ≠ merchandised" qualifier attached to the one-line conclusion (the headline read stronger than the body supported).
- **Net:** honest finding, limits named correctly, nothing written to prod. Reachability thread legitimately closed (published scope). Merchandising-depth queued as the next cycle, gated on cracking the Boost facet param first. All dispositions Steve-gated.
CONFIRMED. Reachability among published products = clean (Boost Shop-All + search reach all 72,453); the nav-admin scope corner is unmeasured-not-cleared; merchandising-DEPTH is the queued successor. Read-only, $0.