← back to Dw Yolo Loop
scripts/osborne-little-basis/FINDING.md
51 lines
# Osborne & Little 90 — current-live RRP-basis MISLABEL (not disco, not Kravet-MAP) — completes the c68 scope — cycle 81
**DTD verdict A (unanimous 3/3).** READ-ONLY (Admin GraphQL + psql; no mutation), **$0**. Decodes the last sizable deferred c68 abnormal-sample set, lifecycle-first per the c74 lesson, + fills the c75 canary's "O&L: RRP (TBD)" branch.
## 🎯 Lifecycle FIRST (c74): O&L is CURRENT-LIVE, not discontinued
- **O&L status: 955 active / 5 draft / 79 archived** → a mostly-ACTIVE current line (8% archived), NOT a mostly-archived discontinued line (contrast Thibaut: 742/788 DWTT-71xx archived). So the c74 "is it disco-stragglers?" check → **NO, these are current products.**
- The 90 abnormal-samples: all created **2020-04** (a 2020 import, still active), prices **$76.02–$962.90, median $322.17, 21 distinct values** → **varied per-pattern pricing, NOT a flat placeholder** (contrast Thibaut's flat $125.43/$3.50 = disco-placeholder signal). Varied + active ⇒ maintained current products.
## 🔑 Basis decode (producer-elimination): RRP, NOT Kravet-MAP
- **barcode = 0/90** (no mfr barcode) → the c72/c73 barcode→`kravet_authoritative_pricing` join doesn't apply.
- **0 O&L rows in `kravet_authoritative_pricing`; 0 in `product_map`** → O&L is NOT Kravet-family / NOT MAP-priced. (Osborne & Little is a standalone brand; not on the Kravet-umbrella list.)
- **2,149 O&L products in dw_unified, 0 costed** → O&L is ~0% costed; its price basis is public RRP (per `osborne-trade-api-broken`: the scraper falls back to public RRP, only ~25–34 of 1,012 reconcile). So there is **no authoritative O&L price source to MAP-verify against** — unlike Cole&Son (exact-at-MAP) I cannot confirm each of the 90 is "correctly priced."
## 📋 Verdict: variant-MISLABEL (same family as Cole&Son/Kravet), RRP basis, current-live
- These are single-variant products whose only variant is titled **"Sample"** but priced at a per-unit RRP-scale value ($76–$962). The **label is the confirmed defect** (a shopper buying the "Sample" pays $76–$962 = the same consumer-harm as Cole&Son).
- The **price-correctness is UNVERIFIABLE** (no authoritative O&L RRP/cost in dw_unified; the ~25–34/1,012 reconcile gap) — but the 21-distinct per-pattern values indicate real RRP-derived prices, not placeholders/garbage.
- So O&L joins the **mislabel/SPLIT-fix bucket** (Cole&Son 352 + Kravet 13), NOT the disco bucket (Thibaut), NOT a below-MAP compliance case (no MAP basis).
## ✅ This COMPLETES the c68 abnormal-sample scope (4 of 5 vendors decoded)
| Vendor | Set | Basis | Lifecycle | Disposition |
|---|---|---|---|---|
| Cole & Son | 352 | Kravet MAP (exact) | current | SPLIT-fix (c72) |
| Kravet | 13 | Kravet MAP (per-roll) | current | SPLIT-fix + per-SKU unit gate (c73) |
| Thibaut | 56 | retail×0.45 (flat placeholder) | **discontinued** | unpublish→archive (c74) |
| **Osborne & Little** | **90** | **RRP (public retail), barcode=None, ~0% costed** | **current** | **SPLIT-fix (relabel); price unverifiable, do NOT reprice** |
| Fentucci | 21 | unknown | TBD | **only remnant — tiny, future cycle** |
## 🔬 Skeptical decode
- **Lifecycle verified before disposition (c74):** status counts (955 active) + varied-not-flat prices rule out the Thibaut-style disco-straggler reading. The 2020 createdAt is import-age, not a disco signal (the products are active).
- **Basis by elimination (c72/c73 discipline):** 0 in kravet_authoritative_pricing + 0 in product_map + 0% costed = definitively not Kravet-MAP; RRP is the residual basis (corroborated by the memory). Named assumption: "prices are real RRP" rests on the 21-distinct-per-pattern spread (not a flat placeholder) — I could NOT verify against an authoritative RRP source because DW doesn't reliably have one.
## Recommendation (GATED — Steve's call)
1. **SPLIT-fix (same as Cole&Son, c72):** relabel the 90 "Sample" variant → "Sold Per Roll"/per-unit (the title is the confirmed defect) AND add the real $4.25 Sample variant; self-heal the `productVariantsBulkCreate` default-variant landmine. **Do NOT reprice** — there's no authoritative O&L target to reprice to, and the displayed per-pattern RRP stands until an O&L price source exists.
2. **Separate gap — UNRECOVERED trade-cost, not "no obligation" (officer):** "don't reprice" ≠ "no price duty exists." Per `osborne-trade-api-broken` the O&L **trade portal migrated** (tradenew.osborneandlittle.com, acct 1433803, reset fired 2026-06-17) → a real trade-cost basis is *in-flight, not yet landed*. Frame it as an **unrecovered trade-cost** (cost-recovery stays flagged against the pending portal reset), NOT "no MAP so nothing owed." The relabel is independent of cost-recovery.
3. **Relabel guardrails (officer, Steve-gated):** (a) the self-heal must add the $4.25 Sample via the path that does NOT consume the default variant (`shopify-default-variant-consumes-sample` — productVariantsBulkCreate destroyed 32 Schumacher samples); (b) **confirm O&L unit-of-measure (roll vs per-yard) before writing the relabel term** — don't assume "Sold Per Roll" on a fabric SKU.
4. **Priority (officer): O&L is LOWER priority than the at-MAP-verified Cole&Son 352 / Kravet 13** — those have an authoritative target (exact MAP), O&L does not. Sequence: ship the verified-price SPLITs first; O&L relabel is label-correctness-only (no verified price), done after.
5. **c75 canary O&L branch (now decoded):** the basis-aware abnormal-sample guard's O&L arm = single-variant "Sample" at varied per-pattern price + barcode=None = a **mislabel candidate** (NOT below-MAP, since no MAP); do not apply a Kravet-MAP frame.
6. **Last remnant: Fentucci 21** — the only undecoded c68 cluster (tiny); a future cycle decodes its basis + lifecycle the same way.
_Cycle 81. DTD-picked A (unanimous 3/3). Decoded the last sizable deferred c68 set: Osborne & Little 90 = CURRENT-live (955 active, 2020 import, 21-distinct per-pattern prices $76–$962) single-variant "Sample" = variant-MISLABEL on the RRP basis (NOT Kravet-MAP — 0 in kravet_authoritative_pricing/product_map, 0% costed, barcode=None; NOT disco — unlike Thibaut). Lifecycle-checked first (c74); basis by elimination (c72/c73). Joins the SPLIT-fix bucket (relabel; price unverifiable so don't reprice). Completes the c68 scope for 4/5 vendors (only Fentucci 21, tiny, remains). Fills the c75 canary O&L branch. PJ excluded. Gated._
---
## 🏛️ OFFICER SIGN-OFF — vp-dw-commerce: CONFIRMED (lifecycle + basis + disposition sound; 4 refinements)
- **Lifecycle call SOUND:** the c81 method correctly inverts the Thibaut lesson — 955 active + 21-distinct per-pattern prices ($76–$962, median $322) = live mislabel, not a disco straggler (Thibaut's flat $125.43/$3.50 placeholder collapse). A stale-2020-should-be-disco subset would show vendor-side 404/redirect or a flat fallback — neither present. 2020 import-age alone isn't a disco signal when rows are active + price-varied.
- **"RRP not MAP, don't reprice" RIGHT — but NOT "no obligation":** O&L is not Kravet-family (0 in kravet_authoritative_pricing/product_map, barcode=None, 0% costed), so no MAP to enforce / no below-MAP breach. BUT the O&L trade portal migrated (reset fired 2026-06-17) → a real trade-cost basis is in-flight. Framing = no MAP obligation + an **unrecovered trade-cost** (keep cost-recovery flagged). Folded into rec #2.
- **Relabel does NOT legitimize the price:** the per-unit RRP was ALREADY live + customer-facing on these 90 active products; the relabel changes the LABEL so the live $322 stops masquerading as a $4.25-class sample (+ adds the real $4.25 Sample). It doesn't move the number — it makes the existing price honestly presented. Leaving it a single-variant "Sample" at $322 is the actively-WORSE state (the inverted sample-trap).
- **Guardrails (folded into rec #3):** self-heal via the non-default-consuming path (`shopify-default-variant-consumes-sample`); confirm O&L unit-of-measure (roll vs per-yard) before writing the relabel term — don't assume "Sold Per Roll" on a fabric SKU.
- **Priority + remnant (folded into rec #4):** O&L is LOWER priority than the at-MAP-verified Cole&Son/Kravet (they have an authoritative target; O&L doesn't) — ship those SPLITs first, O&L relabel after as label-correctness-only. Fentucci 21 correctly the sole remaining c68 remnant — decode it on its own, don't fold into O&L's RRP basis sight-unseen.
CONFIRMED. The c68 abnormal-sample scope is now decoded for 4/5 vendors (Cole&Son/Kravet = at-MAP SPLIT; Thibaut = disco unpublish; O&L = RRP-mislabel SPLIT label-only); only Fentucci 21 remains. All fixes Steve-gated.