← back to Designer Wallcoverings
audit: readiness re-run post-enrichment-complete (Lilycolor enriched 806→2634)
0dadf14966cc34a907b11989f3bcbc58e36d8de7 · 2026-07-02 06:22:47 -0700 · Steve Abrams
Files touched
M onboarding/sangetsu-lilycolor/READINESS-063026A.mdM onboarding/sangetsu-lilycolor/readiness-063026A.json
Diff
commit 0dadf14966cc34a907b11989f3bcbc58e36d8de7
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jul 2 06:22:47 2026 -0700
audit: readiness re-run post-enrichment-complete (Lilycolor enriched 806→2634)
---
onboarding/sangetsu-lilycolor/READINESS-063026A.md | 207 +++++++++------------
.../sangetsu-lilycolor/readiness-063026A.json | 103 +++++-----
2 files changed, 141 insertions(+), 169 deletions(-)
diff --git a/onboarding/sangetsu-lilycolor/READINESS-063026A.md b/onboarding/sangetsu-lilycolor/READINESS-063026A.md
index 246038ea..5dd51ab5 100644
--- a/onboarding/sangetsu-lilycolor/READINESS-063026A.md
+++ b/onboarding/sangetsu-lilycolor/READINESS-063026A.md
@@ -1,169 +1,134 @@
-# Sangetsu + Lilycolor — Activation-Gate Readiness Audit (063026A)
+# Sangetsu + Lilycolor — Activation-Gate Readiness Audit (063026A) — RE-RUN post-enrichment-complete
-**Type:** READ-ONLY audit. No writes to dw_unified, Shopify, or any canonical store. No LLM/ollama calls.
-**Generated:** 2026-07-01 (Mac2). Snapshot of a still-running enrichment + title-translation sweep.
-**Inputs (staging/):** `sangetsu-staging.jsonl`, `lilycolor-merged-063026A.jsonl`, `lilycolor-titles-en-063026A.jsonl`, `enrichment-full-063026A.jsonl` (+ `.seed/.shard0/.shard1/.sweep/.pilot`).
+**Type:** READ-ONLY audit. No writes to dw_unified, Shopify, or any canonical store. No LLM/ollama/vision calls — pure file/JSON analysis.
+**Generated:** 2026-07-02 (Mac2). RE-RUN of the 2026-07-01 snapshot now that Lilycolor design-enrichment is COMPLETE.
+**Inputs (staging/):** `lilycolor-merged-063026A.jsonl` (2,543), `enrichment-full-063026A.final.jsonl` (2,634 rows, 0 error — the now-COMPLETE enrichment), `lilycolor-titles-en-063026A.jsonl` (963), `lilycolor-titles-fallback-063026A.jsonl` (1,580), `sangetsu-staging.jsonl` (622 patterns).
---
-## Executive Summary
+## Executive Summary — HEADLINE MOVED
-**Gate-ready EXCEPT cost = 320 SKUs** (all Lilycolor). These 320 have images + specs + a description + an EN title, and are blocked on ONE thing only: a confirmed DW net cost. The staged `¥` is Japan **LIST** price, not cost — so **cost is KNOWN-MISSING for 100% of all 12,806 staged SKUs** and is the sole Steve/purchasing blocker. That 320 is a floor that will rise as the enrichment + title sweep (running right now) fills descriptions and EN titles: 2,543 Lilycolor SKUs already have 100% images / 100% specs / 100% list-price, so as description coverage (currently 701/2,543 = 28%) and EN-title coverage (689/2,543 = 27%) climb toward complete, the gate-ready-except-cost count converges toward the full 2,543. **Sangetsu contributes 0 gate-ready SKUs** — its schema has no price, no description field, and specs are populated on only ~9% of SKUs; it needs a spec + description + cost build-out before any of its 10,263 SKUs can approach the gate.
+**Gate-ready EXCEPT cost = 2,543 SKUs (was 320).** The entire Lilycolor line is now gate-ready on every content dimension and is blocked on ONE thing only: a confirmed DW net cost.
-**Bottom line for Steve:** the cost ask is precisely scoped to **all 12,806 SKUs** (every one is cost-blocked), but the *nearest-term* activatable tranche is the Lilycolor 2,543 — of which **320 are ready TODAY** except cost, growing toward 2,543 as the local sweep completes. Sangetsu's 10,263 need enrichment work regardless of cost.
+The prior audit's 320 was gated by two INCOMPLETE dimensions — description (28%) and EN-title (27%) — because enrichment coverage was only 806/2,634. **Both dimensions are now 100%:**
+- **Enrichment is COMPLETE** — `enrichment-full-063026A.final.jsonl` = **2,634 rows, all clean (styles[] + hex[] + material + description), 0 error**. Joining by `sku` to the 2,543 Lilycolor SKUs covers **2,543 / 2,543 = 100%** (the extra 91 enriched rows are SKU-range expansions within LV/LL/LMT/LW and are harmless overflow).
+- **EN titles are COMPLETE** — `titles-en` (963) ∪ `titles-fallback` (1,580) = **exactly 2,543 = 100%**, every SKU has an English title (with the banned word normalized to "Wallcovering").
----
-
-## 1. Total staged SKU count — reconciled
-
-| Vendor | Proposed prefix | Unique SKUs | Notes |
-|---|---|---|---|
-| Lilycolor | `DWLC` | **2,543** | SKU-level rows in `lilycolor-merged-063026A.jsonl`, 1 row = 1 mfr_sku, no dupes |
-| Sangetsu/Goodrich | `DWGO` | **10,263** | 622 patterns → 10,532 colorway-SKU entries − 269 cross-pattern dup entries = 10,263 unique |
-| **TOTAL** | | **12,806** | |
+With images (100%), specs (100%), and list price present (100%) already true, and description + EN-title now also 100%, **the intersection is the full 2,543.**
-**"12,806" claim = CONFIRMED, no discrepancy.** It equals 2,543 + 10,263 exactly. The raw Sangetsu colorway count (10,532) includes 269 SKUs that appear in more than one pattern; on a unique basis it is 10,263, which is the number `PUBLISH-PREP-063026A.md` uses. (`staging-summary.json` reports 3,107 for the *older* `lilycolor-staging.jsonl` and is stale relative to the freshest merge — the audit uses the freshest `lilycolor-merged-063026A.jsonl` per instruction, hence 2,543.)
+**Bottom line for Steve:** The ONLY remaining Lilycolor publish blocker is **confirmed net cost** (`cost_confirmed = 0/2,543`, `activation_ready = 0/2,543` on the merged file) — already drafted in pending-approval. Sangetsu is **unchanged** and contributes **0 gate-ready SKUs** — its 10,263 still need a specs + description + cost build-out before it is gateable at all. **No NEW gated item surfaced.**
---
-## 2. Images
+## 1. Total staged SKU count — reconciled (unchanged)
-| Vendor | Basis | ≥1 image | Zero image | % |
-|---|---|---|---|---|
-| Lilycolor | per SKU (`has_image` / `image_manifest`) | **2,543** | 0 | 100% |
-| Sangetsu | per unique SKU (`sku_images[sku]`) | **9,492** | 771 | 92.5% |
-| **TOTAL** | | **12,035** | 771 | 94.0% |
-
-Lilycolor images come from catalog ZIP manifests (C/P/R kinds) — bytes not yet fetched (`image_bytes_fetched:false`) but URLs/paths are present for 100%. Sangetsu images are direct `wp-content` JPG URLs at the colorway-SKU level; 771 unique SKUs have no image URL.
+| Vendor | Proposed prefix | Unique SKUs | Notes |
+|---|---|---|---|
+| Lilycolor | `DWLC` | **2,543** | 1 row = 1 mfr_sku in `lilycolor-merged-063026A.jsonl`, no dupes |
+| Sangetsu/Goodrich | `DWGO` | **10,263** | 622 patterns → 10,532 colorway entries − 269 cross-pattern dups = 10,263 unique |
+| **TOTAL** | | **12,806** | 2,543 + 10,263 = 12,806, confirmed |
---
-## 3. Specs (material / dimensions / type)
+## 2. Per-vendor coverage table (RE-RUN)
-| Vendor | Field basis | Populated | Missing | % |
+| Dimension | Lilycolor | Δ vs prior | Sangetsu | Δ |
|---|---|---|---|---|
-| Lilycolor | `width` + `unit` per SKU (repeat on 1,246) | **2,543** | 0 | 100% |
-| Sangetsu | pattern-level `spec.{width,type,weight,backing}` propagated to SKUs | **906** | 9,357 | 8.8% |
-
-Lilycolor carries `width` (100%), `unit` (100%), and `repeat_tate/yoko` (49%) per SKU — spec-complete. Sangetsu's `spec` block is pattern-level and almost entirely null: only 78 of 622 patterns have any spec field (28 width, 64 type), covering 906 SKUs. **Sangetsu specs are the single biggest content gap.**
+| Unique SKUs | 2,543 | — | 10,263 | — |
+| Images (≥1) | **2,543 (100%)** | — | 9,492 (92.5%) | — |
+| Specs (width+unit / pattern spec) | **2,543 (100%)** | — | 906 (8.8%) | — |
+| **Enrichment (styles+hex+material+desc, join to final.jsonl)** | **2,543 (100%)** | **806 → 2,543** | 0 (0%) | — |
+| Description | **2,543 (100%)** | 701 → 2,543 | 0 (0%) | — |
+| EN title (en ∪ fallback) | **2,543 (100%)** | 689 → 2,543 | n/a (already English) | — |
+| List price present (¥ — LIST, **NOT cost**) | **2,543 (100%)** | — | 0 (0%) | — |
+| Confirmed net cost | **0 (0%)** | — | 0 (0%) | — |
+| **GATE-READY EXCEPT COST** | **2,543 (100%)** | **320 → 2,543** | **0** | — |
---
-## 4. Description (non-empty body)
+## 3. Join logic (reproducible, read-only)
-| Vendor | Source | Non-empty | Missing | % |
-|---|---|---|---|---|
-| Lilycolor | `design.description` (local-hybrid enrichment) | **701** | 1,842 | 27.6% |
-| Sangetsu | — no description field in schema — | **0** | 10,263 | 0% |
-
-Lilycolor descriptions are produced by the running enrichment sweep (`_provider: local-hybrid`, `$0 (local)`). **PARTIAL — sweep still writing** (`enrichment-full-063026A.jsonl` + `.sweep.jsonl` mtimes seconds old at snapshot; PIDs 30405/52728/95458/2412 live). Sangetsu has no `overview`/`description` populated (4/622 patterns have any `overview`) and no per-SKU body at all.
+All counts produced with `python3` reading raw JSONL. Working dir: `onboarding/sangetsu-lilycolor/staging/`.
----
+**Enrichment coverage — JOIN by `sku` to the COMPLETE final file:**
+```python
+enrich_clean = set()
+for line in open('enrichment-full-063026A.final.jsonl'):
+ d = json.loads(line)
+ if d.get('error'): continue # 0 error rows
+ if d.get('styles') and d.get('hex') and d.get('material') \
+ and (d.get('description') or '').strip():
+ enrich_clean.add(d['sku'])
+# len(enrich_clean) == 2634 ; all 2543 Lilycolor mfr_sku ∈ enrich_clean → 100%
+```
-## 5. Title — Lilycolor EN vs JA-only
+**EN-title coverage — union of the two title files:**
+```python
+any_title = {d['sku'] for d in map(json.loads, open('lilycolor-titles-en-063026A.jsonl'))
+ if (d.get('title_en') or '').strip()} \
+ | {d['sku'] for d in map(json.loads, open('lilycolor-titles-fallback-063026A.jsonl'))
+ if (d.get('title_en') or '').strip()}
+# 963 ∪ 1580 == 2543 (exactly the full Lilycolor set)
+```
-| Metric | Count | % |
-|---|---|---|
-| Lilycolor SKUs with an EN title (join to `lilycolor-titles-en-063026A.jsonl`, 687 title rows) | **689** | 27.1% |
-| Lilycolor SKUs still JA-only / untitled | 1,854 | 72.9% |
+**Gate-ready-except-cost per Lilycolor row:**
+```python
+for r in map(json.loads, open('lilycolor-merged-063026A.jsonl')):
+ sku = r['mfr_sku']
+ has_img = bool(r.get('has_image')) or (r.get('image_count') or 0) >= 1
+ has_spec = bool(r.get('width')) and bool(r.get('unit'))
+ has_desc = (sku in enrich_clean) or bool((r.get('design') or {}).get('description','').strip())
+ has_en = (sku in any_title) or bool((r.get('title_en') or '').strip())
+ ready = has_img and has_spec and has_desc and has_en # missing ONLY cost
+# sum(ready) == 2543
+```
-**PARTIAL — `translate-titles` running** (PID 2412 live, file growing). Titles join by `sku`; the titles file already carries de-JA'd pattern names (e.g. `ブークレ` → `Bouclé`) with the banned word normalized to "Wallcovering" in the suffix. Sangetsu pattern names are already English (`Acappella`, etc.) so no JA→EN title step applies to Sangetsu.
+Every one of images / specs / enrichment / description / EN-title / list-price evaluates to 2,543 → the intersection is 2,543, with **zero** blocking reasons among non-ready (there are none).
---
-## 6. Enrichment coverage (style/color tags + hex) — CLEAN rows only
+## 4. What still blocks the remainder — Lilycolor
-Consolidated + deduped across all 6 enrichment jsonls (`full/seed/shard0/shard1/sweep/pilot`), last-write-wins, excluding rows with an `error` field or `usable:false`:
+**Nothing on the content side.** The blocking-reason tally over the 2,543 is empty: 0 missing image, 0 missing spec, 0 missing description, 0 missing EN title. The single gate that remains open for all 2,543 is:
-| Metric | Count |
-|---|---|
-| Raw enrichment rows read (all files) | 1,559 |
-| Rows with `error` field (dropped) | 175 |
-| Rows `usable:false` (dropped) | 0 |
-| **Unique SKUs with a CLEAN enrichment row** (styles + hex + description) | **706** |
+- **Confirmed DW net cost** — `cost_confirmed = 0/2,543`, `activation_ready = 0/2,543`. The staged `list_price_yen` / `m2_price_yen` is Japan **LIST** price, explicitly **NOT** a confirmed DW net cost, and cannot be used to derive retail under the gate. This is the sole Steve/purchasing blocker and is **already drafted in pending-approval**.
-By prefix the clean-enriched set is 645 `LL`, 24 `LIS`, plus small `LW/LV/LMT/LWT/LWA/LLA` — **all Lilycolor; 0 Sangetsu SKUs enriched.** **PARTIAL** — the sweep is mid-run; this number is a snapshot and will grow.
+No settlement or banned-word blocker exists: a scan of all 2,543 titles + descriptions found **0 occurrences of the banned word "Wallpaper"** (all normalized to "Wallcovering"). `settlement_required` flags are carried per SKU for the pre-publish gate but are not a content-coverage gap.
---
-## 7. List price present (¥) — LIST, NOT COST
+## 5. What still blocks Sangetsu (unchanged from prior audit)
-| Vendor | With `list_price_yen` or `m2_price_yen` | % |
-|---|---|---|
-| Lilycolor | **2,543** | 100% |
-| Sangetsu | **0** | 0% |
-
-**⚠ This is Japan LIST price, NOT confirmed DW net cost.** It cannot be used to derive retail (no foreign-list→retail derivation per the gate). It is reported only to show the price *field* is present for Lilycolor; the Activation Gate still fails on cost for 100% of SKUs. Sangetsu has no price field whatsoever.
-
----
-
-## 8. Gate-ready EXCEPT cost — the headline
+Sangetsu is **not gateable** independent of cost. Its 10,263 unique SKUs still need a full content build:
-Definition: has image **AND** specs **AND** description **AND** (EN title for Lilycolor), missing **ONLY** confirmed net cost.
-
-| Vendor | Gate-ready-except-cost | Ceiling (once sweep completes) |
+| Missing dimension | Count | Notes |
|---|---|---|
-| Lilycolor | **320** | up to 2,543 (image/spec/price already 100%; gated on desc + EN-title fill) |
-| Sangetsu | **0** | needs specs (8.8%→) + descriptions (0→) + cost build-out first |
-| **TOTAL** | **320** | |
+| Description | 10,263 | no description field in schema; overview on only 4/622 patterns |
+| Specs (width/type/weight/backing) | 9,357 | pattern-level spec null on 544/622 patterns (only 906 SKUs covered) |
+| Enrichment | 10,263 | 0 Sangetsu SKUs in the enrichment final |
+| List price field | 10,263 | no price field at all (LIST unavailable, unlike Lilycolor) |
+| Image URL | 771 | unique SKUs with no `sku_images` entry (9,492 have one) |
+| Confirmed net cost | 10,263 | same cost blocker as Lilycolor |
-The 320 are the intersection of {2,543 image} ∩ {2,543 spec} ∩ {701 desc} ∩ {689 EN-title}. Because image/spec/price are already at 100% for Lilycolor, the binding constraints today are description (28%) and EN title (27%) — both being filled by the live sweep. Expect this number to climb materially on the next snapshot.
+**Sangetsu gate-ready-except-cost = 0**, unchanged.
---
-## 9. Gap table (actionable)
+## 6. Gate-ready EXCEPT cost — the headline (RE-RUN)
-| Missing dimension | Vendor | Count | Top example SKUs |
-|---|---|---|---|
-| Description | Sangetsu | 10,263 | AZ52935, AZ52936, AZ52937 (no desc field in schema) |
-| Specs (width/type/weight/backing) | Sangetsu | 9,357 | AZ52935… (pattern spec block null on 544/622 patterns) |
-| Description | Lilycolor | 1,842 | LLA6050, LLA6051, LLA6052, LLA6053 |
-| EN title | Lilycolor | 1,854 | LIS42001, LIS42002, LIS42003, LIS42004 |
-| Image URL | Sangetsu | 771 | (unique SKUs with no `sku_images` entry) |
-| **Confirmed DW net cost** | **BOTH** | **12,806 (100%)** | ALL — the Steve/purchasing blocker |
-| List price field | Sangetsu | 10,263 | (no price field at all — LIST unavailable, unlike Lilycolor) |
+| Vendor | Prior (063026A snapshot) | **NOW (post-enrichment-complete)** |
+|---|---|---|
+| Lilycolor | 320 | **2,543** |
+| Sangetsu | 0 | **0** |
+| **TOTAL** | **320** | **2,543** |
-**Remediation priority:** (1) Steve/purchasing — confirm DW net cost for Lilycolor (2,543) first, since everything else is nearly done there; (2) let the local enrichment + title sweep finish to lift Lilycolor gate-ready 320→~2,543; (3) Sangetsu needs a spec + description build before it's gateable at all, independent of cost.
+The prior number was a live-sweep floor. With enrichment + titles both complete, the Lilycolor line has converged to its ceiling: **the entire 2,543 is ready to publish the moment net cost is confirmed.**
---
-## Appendix — reproducible one-liners
-
-All counts produced with `python3` reading the raw JSONL (no LLM, no ollama, read-only). Working directory: `onboarding/sangetsu-lilycolor/staging/`.
-
-**Totals / dedup (Sangetsu unique SKUs):**
-```python
-uniq=set()
-for line in open('sangetsu-staging.jsonl'):
- d=json.loads(line)
- for s in d.get('colorway_skus') or []: uniq.add(s)
-# len(uniq) == 10263 ; total entries 10532 ; dup entries 269
-```
-
-**Lilycolor coverage (per SKU):**
-```python
-for line in open('lilycolor-merged-063026A.jsonl'):
- d=json.loads(line)
- has_img = bool(d.get('has_image')) or (d.get('image_count') or 0)>=1
- has_spec = bool(d.get('width')) and bool(d.get('unit'))
- des=d.get('design') or {}
- has_desc = bool((des.get('description') or '').strip()) or sku in clean_enrich
- has_en = bool(d.get('title_en')) or sku in en_titles # en_titles from lilycolor-titles-en-063026A.jsonl
- has_price= bool(d.get('list_price_yen') or d.get('m2_price_yen'))
- gate_ex_cost = has_img and has_spec and has_desc and has_en # sum == 320
-```
+## 7. Followups for Steve (gated)
-**Enrichment consolidation (clean rows, deduped):**
-```python
-files=['enrichment-full-063026A.jsonl','...seed','...shard0','...shard1','...sweep','enrichment-pilot-063026A.jsonl']
-# drop rows with d.get('error') or d.get('usable') is False; clean = styles and hex and description
-# unique clean SKUs == 706 (all Lilycolor prefixes)
-```
-
-**Sangetsu per-unique-SKU image/spec:**
-```python
-# image: any sku in sku_images with truthy url -> 9492 / 10263
-# spec : pattern spec has any of width/type/weight/backing -> 906 / 10263
-```
+1. **Confirm DW net cost for the Lilycolor 2,543** — the SOLE remaining activation blocker for the whole line; already drafted in pending-approval. On confirmation, all 2,543 flip gate-clear.
+2. Sangetsu (10,263) needs a specs + description + enrichment + cost build before it is gateable at all — separate track, independent of the Lilycolor cost ask.
-**Caveat:** Sections 4, 5, 6, 8 are a live snapshot — enrichment (`enrich-full` PID 30405, `enrich-finish` 52728, `enrich-retry` 95458) and `translate-titles` (PID 2412) were actively writing at generation time. Re-run for a fresher count; the gate-ready-except-cost number only goes up.
+**No NEW gated item surfaced by this re-run** (expected: none — confirmed).
diff --git a/onboarding/sangetsu-lilycolor/readiness-063026A.json b/onboarding/sangetsu-lilycolor/readiness-063026A.json
index b530e3f1..cd0d8de2 100644
--- a/onboarding/sangetsu-lilycolor/readiness-063026A.json
+++ b/onboarding/sangetsu-lilycolor/readiness-063026A.json
@@ -1,16 +1,20 @@
{
"audit": "sangetsu-lilycolor-activation-gate-readiness",
"tag": "063026A",
- "generated_at": "2026-07-01",
+ "run": "re-run-post-enrichment-complete",
+ "generated_at": "2026-07-02",
"machine": "Mac2",
"read_only": true,
- "snapshot_partial": true,
- "partial_note": "enrichment + translate-titles sweep actively writing at generation (PIDs enrich-full 30405, enrich-finish 52728, enrich-retry 95458, translate-titles 2412); description/EN-title/enrichment counts are a floor and will rise.",
+ "snapshot_partial": false,
+ "complete_note": "Lilycolor enrichment COMPLETE (enrichment-full-063026A.final.jsonl = 2634 rows, 0 error, all clean). Description + EN-title dimensions now 100%; no live sweep running.",
"headline": {
- "gate_ready_except_cost_total": 320,
- "gate_ready_except_cost_by_vendor": { "lilycolor": 320, "sangetsu": 0 },
+ "gate_ready_except_cost_total": 2543,
+ "gate_ready_except_cost_prior": 320,
+ "gate_ready_except_cost_by_vendor": { "lilycolor": 2543, "sangetsu": 0 },
"cost_missing_all_skus": 12806,
- "cost_note": "staged yen is Japan LIST price, NOT confirmed DW net cost; cost missing for 100%"
+ "cost_note": "staged yen is Japan LIST price, NOT confirmed DW net cost; cost missing for 100% (cost_confirmed=0/2543, activation_ready=0/2543)",
+ "sole_remaining_lilycolor_blocker": "confirmed DW net cost (drafted in pending-approval)",
+ "new_gated_item": null
},
"totals": {
"claim_12806": "CONFIRMED",
@@ -18,65 +22,68 @@
"lilycolor_unique_skus": 2543,
"sangetsu_unique_skus": 10263,
"sangetsu_colorway_entries_raw": 10532,
- "sangetsu_cross_pattern_dup_entries": 269,
- "staging_summary_json_note": "reports 3107 for older lilycolor-staging.jsonl; stale vs freshest merge (2543)"
+ "sangetsu_cross_pattern_dup_entries": 269
+ },
+ "enrichment_final": {
+ "file": "enrichment-full-063026A.final.jsonl",
+ "rows_total": 2634,
+ "error_rows": 0,
+ "clean_rows_styles_hex_material_desc": 2634,
+ "unique_sku_keys": 2634,
+ "lilycolor_skus_covered": 2543,
+ "lilycolor_coverage_pct": 100.0,
+ "extra_enrich_rows_not_in_merged": 91,
+ "extra_enrich_prefixes": { "LV": 41, "LL": 30, "LMT": 7, "LW": 13 },
+ "extra_note": "SKU-range expansions within existing patterns; harmless overflow, do not reduce Lilycolor coverage"
+ },
+ "titles": {
+ "en_file_rows": 963,
+ "fallback_file_rows": 1580,
+ "union_with_title_en": 2543,
+ "en_title_coverage_pct": 100.0,
+ "banned_word_wallpaper_in_titles_or_desc": 0
},
"vendors": {
"lilycolor": {
"prefix_proposed": "DWLC",
"unique_skus": 2543,
- "images_ge1": 2543,
- "images_pct": 100.0,
- "specs_populated": 2543,
- "specs_pct": 100.0,
- "description_nonempty": 701,
- "description_pct": 27.6,
- "en_title": 689,
- "en_title_pct": 27.1,
- "en_title_missing": 1854,
- "enrichment_clean": 706,
- "list_price_present": 2543,
- "list_price_is_cost": false,
- "gate_ready_except_cost": 320
+ "prefix_breakdown": { "LL": 867, "LW": 673, "LV": 642, "LMT": 224, "LWT": 41, "LWA": 41, "LIS": 24, "LLA": 24, "LLT": 7 },
+ "images_ge1": 2543, "images_pct": 100.0,
+ "specs_populated": 2543, "specs_pct": 100.0,
+ "enrichment_join_clean": 2543, "enrichment_pct": 100.0,
+ "description_nonempty": 2543, "description_pct": 100.0,
+ "en_title": 2543, "en_title_pct": 100.0,
+ "list_price_present": 2543, "list_price_pct": 100.0, "list_price_is_cost": false,
+ "cost_confirmed": 0, "activation_ready": 0,
+ "gate_ready_except_cost": 2543,
+ "gate_ready_except_cost_prior": 320,
+ "blocking_reasons_among_non_ready": {}
},
"sangetsu": {
"prefix_proposed": "DWGO",
"unique_skus": 10263,
"colorway_entries_raw": 10532,
- "images_ge1": 9492,
- "images_missing": 771,
- "images_pct": 92.5,
- "specs_populated": 906,
- "specs_pct": 8.8,
+ "images_ge1": 9492, "images_missing": 771, "images_pct": 92.5,
+ "specs_populated": 906, "specs_pct": 8.8,
+ "patterns_with_any_spec": 78, "patterns_with_overview": 4,
"description_nonempty": 0,
- "description_note": "no description field in schema; overview populated on 4/622 patterns",
- "en_title": "n/a",
- "en_title_note": "pattern names already English (e.g. Acappella)",
"enrichment_clean": 0,
- "list_price_present": 0,
- "list_price_note": "no price field at all",
- "gate_ready_except_cost": 0
+ "list_price_present": 0, "list_price_note": "no price field at all",
+ "gate_ready_except_cost": 0,
+ "status": "unchanged vs prior audit"
}
},
- "enrichment_consolidation": {
- "files": ["enrichment-full-063026A.jsonl", "enrichment-full-063026A.seed.jsonl", "enrichment-full-063026A.shard0.jsonl", "enrichment-full-063026A.shard1.jsonl", "enrichment-full-063026A.sweep.jsonl", "enrichment-pilot-063026A.jsonl"],
- "raw_rows_read": 1559,
- "dropped_error_field": 175,
- "dropped_usable_false": 0,
- "unique_clean_skus": 706,
- "all_lilycolor": true,
- "sangetsu_enriched": 0
- },
"gap_table": [
- { "dimension": "description", "vendor": "sangetsu", "count": 10263, "examples": ["AZ52935", "AZ52936", "AZ52937"] },
- { "dimension": "specs", "vendor": "sangetsu", "count": 9357, "examples": ["AZ52935"] },
- { "dimension": "description", "vendor": "lilycolor", "count": 1842, "examples": ["LLA6050", "LLA6051", "LLA6052"] },
- { "dimension": "en_title", "vendor": "lilycolor", "count": 1854, "examples": ["LIS42001", "LIS42002", "LIS42003"] },
+ { "dimension": "description", "vendor": "sangetsu", "count": 10263 },
+ { "dimension": "specs", "vendor": "sangetsu", "count": 9357 },
+ { "dimension": "enrichment", "vendor": "sangetsu", "count": 10263 },
+ { "dimension": "list_price_field", "vendor": "sangetsu", "count": 10263 },
{ "dimension": "image", "vendor": "sangetsu", "count": 771 },
- { "dimension": "net_cost", "vendor": "both", "count": 12806 },
- { "dimension": "list_price_field", "vendor": "sangetsu", "count": 10263 }
+ { "dimension": "net_cost", "vendor": "lilycolor", "count": 2543, "note": "SOLE remaining Lilycolor blocker; drafted in pending-approval" },
+ { "dimension": "net_cost", "vendor": "sangetsu", "count": 10263 }
],
"gated_followups_for_steve": [
- "Confirm DW net cost (all 12806; Lilycolor 2543 nearest-term). Sole activation blocker."
+ "Confirm DW net cost for Lilycolor 2,543 — sole remaining activation blocker, already drafted in pending-approval. On confirmation all 2,543 flip gate-clear.",
+ "Sangetsu 10,263 needs specs + description + enrichment + cost build before gateable (separate track)."
]
}
← a406aeb8 mirror repair-justindavid-relative-urls.js (98 relative-path
·
back to Designer Wallcoverings
·
snapshot before restart: Lilycolor enrichment complete (2634 46bfc170 →