[object Object]

← back to Dw Yolo Loop

cycle 81: officer CONFIRMED — lifecycle/basis/disposition sound + 4 refinements (unrecovered-trade-cost not no-obligation; relabel doesnt legitimize price; UoM+self-heal guardrails; O&L lower-priority than verified-MAP sets); c68 scope 4/5 done

dc3d62e7a9b0c09fa08f648d758115e196587156 · 2026-06-18 03:19:19 -0700 · Steve Abrams

Files touched

Diff

commit dc3d62e7a9b0c09fa08f648d758115e196587156
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Jun 18 03:19:19 2026 -0700

    cycle 81: officer CONFIRMED — lifecycle/basis/disposition sound + 4 refinements (unrecovered-trade-cost not no-obligation; relabel doesnt legitimize price; UoM+self-heal guardrails; O&L lower-priority than verified-MAP sets); c68 scope 4/5 done
---
 scripts/osborne-little-basis/FINDING.md | 50 +++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/scripts/osborne-little-basis/FINDING.md b/scripts/osborne-little-basis/FINDING.md
new file mode 100644
index 0000000..51aa78e
--- /dev/null
+++ b/scripts/osborne-little-basis/FINDING.md
@@ -0,0 +1,50 @@
+# 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.

← 46b7a60 cycle 81: O&L basis decode — 90 = CURRENT-live RRP-basis mis  ·  back to Dw Yolo Loop  ·  cycle 82: Fentucci 21 decode (reused c81 decoder) — benign f 0010198 →