[object Object]

← back to Dw Unbuyable Recovery Pilot

TK-11041: Innovations 51-cohort feed-first reconciliation — 0/51 locally recoverable + provenance guard

8085c232a5c81d2199cc60de51aeda6885814a70 · 2026-09-02 13:56:29 -0700 · Steve Abrams

Deterministic read-only recovery map for the 51 ACTIVE sample-only PR-Innovations
products. All local recovery keys yield 0 (sku/dw_sku/mfr_sku joins + feed-first
pattern-token match): the cohort carries only DW-internal collection codes with no
real Innovations item#/price, and innovations_catalog describes the Innovations USA
(DWIN-) line, not the PR private-label (236/341 no provenance URL, 81/341 fabricated
pattern-tail codes). Recovery correctly stays BLOCKED_ON_VENDOR_LINESHEET (gated email).

Ships lib/provenance.mjs guard (rejects no-URL / placeholder / lowercase-tail /
pattern-tail codes) encoding the TK-10981 fabrication caveat, with a 7/7 test incl. a
LIVE assertion that 0 fabricated catalog rows are wrongly trusted. No canonical/Shopify
writes; reads via BEGIN READ ONLY..ROLLBACK.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GUmvA1WvsNnWhXfhLgz7q2

Files touched

Diff

commit 8085c232a5c81d2199cc60de51aeda6885814a70
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Sep 2 13:56:29 2026 -0700

    TK-11041: Innovations 51-cohort feed-first reconciliation — 0/51 locally recoverable + provenance guard
    
    Deterministic read-only recovery map for the 51 ACTIVE sample-only PR-Innovations
    products. All local recovery keys yield 0 (sku/dw_sku/mfr_sku joins + feed-first
    pattern-token match): the cohort carries only DW-internal collection codes with no
    real Innovations item#/price, and innovations_catalog describes the Innovations USA
    (DWIN-) line, not the PR private-label (236/341 no provenance URL, 81/341 fabricated
    pattern-tail codes). Recovery correctly stays BLOCKED_ON_VENDOR_LINESHEET (gated email).
    
    Ships lib/provenance.mjs guard (rejects no-URL / placeholder / lowercase-tail /
    pattern-tail codes) encoding the TK-10981 fabrication caveat, with a 7/7 test incl. a
    LIVE assertion that 0 fabricated catalog rows are wrongly trusted. No canonical/Shopify
    writes; reads via BEGIN READ ONLY..ROLLBACK.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01GUmvA1WvsNnWhXfhLgz7q2
---
 tk11041-innovations-reconcile/README.md            |  67 ++
 .../data/innovations-recovery-map.csv              |  52 ++
 .../data/innovations-recovery-map.json             | 758 +++++++++++++++++++++
 .../data/reconcile-summary.json                    |  40 ++
 tk11041-innovations-reconcile/lib/provenance.mjs   |  60 ++
 tk11041-innovations-reconcile/reconcile.mjs        | 160 +++++
 .../test/provenance.test.mjs                       |  63 ++
 .../verification/e2e-proof.json                    |  31 +
 8 files changed, 1231 insertions(+)

diff --git a/tk11041-innovations-reconcile/README.md b/tk11041-innovations-reconcile/README.md
new file mode 100644
index 0000000..c18e980
--- /dev/null
+++ b/tk11041-innovations-reconcile/README.md
@@ -0,0 +1,67 @@
+# TK-11041 — Innovations missing-cohort reconciliation (feed-first / local)
+
+Child of **TK-10978** (unbuyable recovery). Agent `iterm-tk11041-innovations`, finalizer `/root`, chain depth 1.
+
+**READ-ONLY. No Shopify writes. No dw_unified writes. No catalog activation. No send/deploy.**
+
+## Objective
+Determine, deterministically, whether the **51** ACTIVE, sample-only Phillipe-Romano
+private-label Innovations products can be made buyable from any **local / feed-first**
+source before falling back to the gated Innovations vendor line-sheet request.
+
+## Cohort (deterministic — reproduces exactly 51)
+```
+vendor='Phillipe Romano' AND status='ACTIVE'
+AND NOT has_product_variant          -- unbuyable: only the $4.25 memo Sample
+AND supplier_name ~* 'innov'
+```
+8 collections: CSO, ENS, FLN, PRO, SKL, TTM, VCO, WHL.
+
+## Files
+| File | Role |
+|---|---|
+| `reconcile.mjs` | Read-only generator → `data/innovations-recovery-map.{json,csv}` + `data/reconcile-summary.json` |
+| `lib/provenance.mjs` | **Source-provenance guard** (the narrow hardening) — pure, unit-tested |
+| `test/provenance.test.mjs` | Proves the guard on positive/negative + LIVE corrupted rows |
+| `verification/e2e-proof.json` | R1 evidence bundle |
+
+Run: `node reconcile.mjs && node --test test/provenance.test.mjs`
+
+## Result — BLOCKED_ON_VENDOR_LINESHEET (0/51 locally recoverable)
+
+Every candidate local recovery path returns **zero** for the cohort:
+
+| Recovery key | Hits across 51 |
+|---|---|
+| `sp.sku = innovations_catalog.dw_sku` | 0 |
+| `sp.dw_sku = innovations_catalog.dw_sku` | 0 |
+| `sp.mfr_sku = innovations_catalog.mfr_sku` | 0 |
+| feed-first pattern-token word-match on `pattern_name` | 0 |
+
+### Why (provenance)
+- The 51 carry only **DW-internal collection codes** (`CSO-001`, `ENS-01`, …) in `mfr_sku`,
+  private-label `La <Pattern>` titles, an empty `dw_sku`, **no real Innovations item number,
+  and no price**. Their underlying pattern tokens (Turino, Renegado, Bologna, Youngstown,
+  Sieno, Udino, Orvito) **do not appear** anywhere in `innovations_catalog.pattern_name`.
+- `innovations_catalog` (341 rows) is a scrape of the **Innovations USA (`DWIN-`) line** — a
+  *different* product line (295 of its linked products are vendor `Innovations USA`), not the
+  Phillipe-Romano private-label. It is also **corrupted**: 236/341 rows have **no
+  `product_url`** and **81/341** carry a fabricated *pattern-name-tail* code
+  (`Sum`**`atra`** → `atra-1`, `Maz`**`arin`** → `arin-1`). Only **99/341** rows are
+  trustworthy sources.
+
+**Conclusion:** there is no honest local source; backfilling the 51 from `innovations_catalog`
+would fabricate customer-facing identity/price (same failure the TK-10981 HOLD flagged).
+Recovery genuinely requires the **gated vendor line-sheet** already drafted for Steve
+(`pending-approval/_done/2026-08-31-TK11041-innovations-pricing-request-letter.md`). On receipt,
+match the line-sheet on pattern+colorway and stage the proven add-yard variant
+(`net_trade/0.65/0.85` per yard via `scripts/innovations-reprice/stage-innov-reprice.mjs`) —
+that Shopify write stays gated.
+
+## Hardening shipped
+`lib/provenance.classifyCatalogSource(row)` gates any `*_catalog` row before it is trusted as a
+recovery source: rejects no-provenance rows, placeholder codes (`TRUE`/`NULL`), lowercase-tail
+truncations, and codes that are a tail of the pattern name. This turns the TK-10981 "plausible
+shape ≠ proof" caveat into an executable guard the reprice/backfill path can call, so a future
+re-scrape cannot silently reintroduce fabricated identity data. `test/` proves it (7/7),
+including a LIVE assertion that **0** of the catalog's fabricated rows are wrongly trusted.
diff --git a/tk11041-innovations-reconcile/data/innovations-recovery-map.csv b/tk11041-innovations-reconcile/data/innovations-recovery-map.csv
new file mode 100644
index 0000000..872362a
--- /dev/null
+++ b/tk11041-innovations-reconcile/data/innovations-recovery-map.csv
@@ -0,0 +1,52 @@
+sku,internal_code,collection,pattern_token,join_sku_hits,join_dwsku_hits,join_mfr_hits,pattern_match_hits,trustworthy_priced_sources,status
+"PRW-620145-Sample","CSO-001","CSO","Turino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620146-Sample","CSO-002","CSO","Turino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620147-Sample","CSO-003","CSO","Turino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620175-Sample","ENS-01","ENS","Renegado",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620176-Sample","ENS-02","ENS","Renegado",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620177-Sample","ENS-03","ENS","Renegado",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620178-Sample","ENS-04","ENS","Renegado",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620179-Sample","ENS-05","ENS","Renegado",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620180-Sample","ENS-06","ENS","Renegado",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620193-Sample","FLN-01","FLN","Bologna",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620194-Sample","FLN-02","FLN","Bologna",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620195-Sample","FLN-03","FLN","Bologna",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620196-Sample","FLN-04","FLN","Bologna",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620197-Sample","FLN-05","FLN","Bologna",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-920688-Sample","PRO-012","PRO","Youngstown",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620422-Sample","SKL-001","SKL","Sieno",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620423-Sample","SKL-002","SKL","Sieno",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620424-Sample","SKL-003","SKL","Sieno",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620425-Sample","SKL-004","SKL","Sieno",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620435-Sample","TTM-01","TTM","Udino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620436-Sample","TTM-02","TTM","Udino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620437-Sample","TTM-03","TTM","Udino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620438-Sample","TTM-04","TTM","Udino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620439-Sample","TTM-05","TTM","Udino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620440-Sample","TTM-06","TTM","Udino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620441-Sample","TTM-07","TTM","Udino",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620467-Sample","VCO-001","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620468-Sample","VCO-002","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620469-Sample","VCO-003","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620470-Sample","VCO-004","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620471-Sample","VCO-005","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620472-Sample","VCO-006","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620473-Sample","VCO-007","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620474-Sample","VCO-008","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620475-Sample","VCO-009","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620476-Sample","VCO-010","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620477-Sample","VCO-011","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620478-Sample","VCO-012","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620479-Sample","VCO-013","VCO","Le",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620480-Sample","WHL-01","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620481-Sample","WHL-02","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620482-Sample","WHL-03","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620483-Sample","WHL-04","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620484-Sample","WHL-05","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620485-Sample","WHL-06","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620486-Sample","WHL-07","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620487-Sample","WHL-08","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620488-Sample","WHL-09","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620489-Sample","WHL-10","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620490-Sample","WHL-11","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
+"PRW-620491-Sample","WHL-12","WHL","Orvito",0,0,0,0,0,"BLOCKED_ON_VENDOR_LINESHEET"
diff --git a/tk11041-innovations-reconcile/data/innovations-recovery-map.json b/tk11041-innovations-reconcile/data/innovations-recovery-map.json
new file mode 100644
index 0000000..601b5eb
--- /dev/null
+++ b/tk11041-innovations-reconcile/data/innovations-recovery-map.json
@@ -0,0 +1,758 @@
+{
+  "summary": {
+    "task": "TK-11041",
+    "generated_at": "2026-09-02T20:55:02.922Z",
+    "cohort_size": 51,
+    "recoverable_local": 0,
+    "blocked_on_vendor": 51,
+    "collections": [
+      "CSO",
+      "ENS",
+      "FLN",
+      "PRO",
+      "SKL",
+      "TTM",
+      "VCO",
+      "WHL"
+    ],
+    "join_coverage": {
+      "by_sku": 0,
+      "by_dwsku": 0,
+      "by_mfr": 0,
+      "by_pattern_token": 0
+    },
+    "catalog_provenance": {
+      "total_rows": 341,
+      "no_provenance_url": 236,
+      "fabricated_code_rows": 81,
+      "trustworthy_source_rows": 99,
+      "describes_vendor": [
+        {
+          "vendor": "Innovations USA",
+          "n": 295
+        },
+        {
+          "vendor": "Innovations",
+          "n": 9
+        }
+      ]
+    },
+    "conclusion": "BLOCKED_ON_VENDOR_LINESHEET — 0 trustworthy local recovery sources for the cohort; innovations_catalog describes the Innovations USA (DWIN-) line, not the PR private-label. Local backfill would fabricate identity/price. Recovery requires the gated vendor line-sheet."
+  },
+  "map": [
+    {
+      "sku": "PRW-620145-Sample",
+      "internal_code": "CSO-001",
+      "collection": "CSO",
+      "pattern_token": "Turino",
+      "title": "La Turino Radiant Type 2 RADIANT Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620146-Sample",
+      "internal_code": "CSO-002",
+      "collection": "CSO",
+      "pattern_token": "Turino",
+      "title": "La Turino Pearl Type 2 PEARL Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620147-Sample",
+      "internal_code": "CSO-003",
+      "collection": "CSO",
+      "pattern_token": "Turino",
+      "title": "La Turino Filigree Type 2 FILIGREE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620175-Sample",
+      "internal_code": "ENS-01",
+      "collection": "ENS",
+      "pattern_token": "Renegado",
+      "title": "La Renegado Bone Natural BONE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620176-Sample",
+      "internal_code": "ENS-02",
+      "collection": "ENS",
+      "pattern_token": "Renegado",
+      "title": "La Renegado Frost Natural FROST Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620177-Sample",
+      "internal_code": "ENS-03",
+      "collection": "ENS",
+      "pattern_token": "Renegado",
+      "title": "La Renegado Calcite Natural CALCITE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620178-Sample",
+      "internal_code": "ENS-04",
+      "collection": "ENS",
+      "pattern_token": "Renegado",
+      "title": "La Renegado Basalt Natural BASALT Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620179-Sample",
+      "internal_code": "ENS-05",
+      "collection": "ENS",
+      "pattern_token": "Renegado",
+      "title": "La Renegado Black Emerald Natural BLACK EMERALD Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620180-Sample",
+      "internal_code": "ENS-06",
+      "collection": "ENS",
+      "pattern_token": "Renegado",
+      "title": "La Renegado Sapphire Natural SAPPHIRE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620193-Sample",
+      "internal_code": "FLN-01",
+      "collection": "FLN",
+      "pattern_token": "Bologna",
+      "title": "La Bologna Heather Natural HEATHER Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620194-Sample",
+      "internal_code": "FLN-02",
+      "collection": "FLN",
+      "pattern_token": "Bologna",
+      "title": "La Bologna Bobbin Natural BOBBIN Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620195-Sample",
+      "internal_code": "FLN-03",
+      "collection": "FLN",
+      "pattern_token": "Bologna",
+      "title": "La Bologna Pepper Natural PEPPER Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620196-Sample",
+      "internal_code": "FLN-04",
+      "collection": "FLN",
+      "pattern_token": "Bologna",
+      "title": "La Bologna Cocoa Natural COCOA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620197-Sample",
+      "internal_code": "FLN-05",
+      "collection": "FLN",
+      "pattern_token": "Bologna",
+      "title": "La Bologna Jet Natural JET Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-920688-Sample",
+      "internal_code": "PRO-012",
+      "collection": "PRO",
+      "pattern_token": "Youngstown",
+      "title": "Youngstown Type 2 Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620422-Sample",
+      "internal_code": "SKL-001",
+      "collection": "SKL",
+      "pattern_token": "Sieno",
+      "title": "La Sieno Ash Type 2 ASH Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620423-Sample",
+      "internal_code": "SKL-002",
+      "collection": "SKL",
+      "pattern_token": "Sieno",
+      "title": "La Sieno Grove Type 2 GROVE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620424-Sample",
+      "internal_code": "SKL-003",
+      "collection": "SKL",
+      "pattern_token": "Sieno",
+      "title": "La Sieno Moss Type 2 MOSS Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620425-Sample",
+      "internal_code": "SKL-004",
+      "collection": "SKL",
+      "pattern_token": "Sieno",
+      "title": "La Sieno Azure Type 2 AZURE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620435-Sample",
+      "internal_code": "TTM-01",
+      "collection": "TTM",
+      "pattern_token": "Udino",
+      "title": "La Udino Fuji Natural FUJI Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620436-Sample",
+      "internal_code": "TTM-02",
+      "collection": "TTM",
+      "pattern_token": "Udino",
+      "title": "La Udino Hasu Natural HASU Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620437-Sample",
+      "internal_code": "TTM-03",
+      "collection": "TTM",
+      "pattern_token": "Udino",
+      "title": "La Udino Bara Natural BARA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620438-Sample",
+      "internal_code": "TTM-04",
+      "collection": "TTM",
+      "pattern_token": "Udino",
+      "title": "La Udino Poppi Natural POPPI Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620439-Sample",
+      "internal_code": "TTM-05",
+      "collection": "TTM",
+      "pattern_token": "Udino",
+      "title": "La Udino Ajisai Natural AJISAI Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620440-Sample",
+      "internal_code": "TTM-06",
+      "collection": "TTM",
+      "pattern_token": "Udino",
+      "title": "La Udino Daria Natural DARIA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620441-Sample",
+      "internal_code": "TTM-07",
+      "collection": "TTM",
+      "pattern_token": "Udino",
+      "title": "La Udino Rabenda Natural RABENDA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620467-Sample",
+      "internal_code": "VCO-001",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Platinum Type 2 PLATINUM Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620468-Sample",
+      "internal_code": "VCO-002",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Ivory Frost Type 2 IVORY FROST Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620469-Sample",
+      "internal_code": "VCO-003",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Moonlight Type 2 MOONLIGHT Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620470-Sample",
+      "internal_code": "VCO-004",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Champagne Type 2 CHAMPAGNE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620471-Sample",
+      "internal_code": "VCO-005",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Gilded Taupe Type 2 GILDED TAUPE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620472-Sample",
+      "internal_code": "VCO-006",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Argent Type 2 ARGENT Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620473-Sample",
+      "internal_code": "VCO-007",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Silver Type 2 SILVER Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620474-Sample",
+      "internal_code": "VCO-008",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Burnished Type 2 BURNISHED Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620475-Sample",
+      "internal_code": "VCO-009",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Bronze Type 2 BRONZE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620476-Sample",
+      "internal_code": "VCO-010",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Blue Type 2 BLUE Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620477-Sample",
+      "internal_code": "VCO-011",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Misty Type 2 MISTY Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620478-Sample",
+      "internal_code": "VCO-012",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Gold Type 2 GOLD Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620479-Sample",
+      "internal_code": "VCO-013",
+      "collection": "VCO",
+      "pattern_token": "Le",
+      "title": "Le Vierna Vinyl Cork Emerald Type 2 EMERALD Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620480-Sample",
+      "internal_code": "WHL-01",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Amadora Natural AMADORA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620481-Sample",
+      "internal_code": "WHL-02",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Santo Natural SANTO Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620482-Sample",
+      "internal_code": "WHL-03",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Braga Natural BRAGA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620483-Sample",
+      "internal_code": "WHL-04",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Evora Natural EVORA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620484-Sample",
+      "internal_code": "WHL-05",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Beja Natural BEJA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620485-Sample",
+      "internal_code": "WHL-06",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Faro Natural FARO Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620486-Sample",
+      "internal_code": "WHL-07",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Garda Natural GARDA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620487-Sample",
+      "internal_code": "WHL-08",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Lagos Natural LAGOS Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620488-Sample",
+      "internal_code": "WHL-09",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Lisbon Natural LISBON Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620489-Sample",
+      "internal_code": "WHL-10",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Porto Natural PORTO Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620490-Sample",
+      "internal_code": "WHL-11",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Sintra Natural SINTRA Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    },
+    {
+      "sku": "PRW-620491-Sample",
+      "internal_code": "WHL-12",
+      "collection": "WHL",
+      "pattern_token": "Orvito",
+      "title": "La Orvito Tomar Natural TOMAR Memo Sample | Phillipe Romano",
+      "join_sku_hits": 0,
+      "join_dwsku_hits": 0,
+      "join_mfr_hits": 0,
+      "pattern_match_hits": 0,
+      "trustworthy_priced_sources": 0,
+      "status": "BLOCKED_ON_VENDOR_LINESHEET",
+      "recovery_action": "no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/tk11041-innovations-reconcile/data/reconcile-summary.json b/tk11041-innovations-reconcile/data/reconcile-summary.json
new file mode 100644
index 0000000..07e09a7
--- /dev/null
+++ b/tk11041-innovations-reconcile/data/reconcile-summary.json
@@ -0,0 +1,40 @@
+{
+  "task": "TK-11041",
+  "generated_at": "2026-09-02T20:55:02.922Z",
+  "cohort_size": 51,
+  "recoverable_local": 0,
+  "blocked_on_vendor": 51,
+  "collections": [
+    "CSO",
+    "ENS",
+    "FLN",
+    "PRO",
+    "SKL",
+    "TTM",
+    "VCO",
+    "WHL"
+  ],
+  "join_coverage": {
+    "by_sku": 0,
+    "by_dwsku": 0,
+    "by_mfr": 0,
+    "by_pattern_token": 0
+  },
+  "catalog_provenance": {
+    "total_rows": 341,
+    "no_provenance_url": 236,
+    "fabricated_code_rows": 81,
+    "trustworthy_source_rows": 99,
+    "describes_vendor": [
+      {
+        "vendor": "Innovations USA",
+        "n": 295
+      },
+      {
+        "vendor": "Innovations",
+        "n": 9
+      }
+    ]
+  },
+  "conclusion": "BLOCKED_ON_VENDOR_LINESHEET — 0 trustworthy local recovery sources for the cohort; innovations_catalog describes the Innovations USA (DWIN-) line, not the PR private-label. Local backfill would fabricate identity/price. Recovery requires the gated vendor line-sheet."
+}
\ No newline at end of file
diff --git a/tk11041-innovations-reconcile/lib/provenance.mjs b/tk11041-innovations-reconcile/lib/provenance.mjs
new file mode 100644
index 0000000..40b1fae
--- /dev/null
+++ b/tk11041-innovations-reconcile/lib/provenance.mjs
@@ -0,0 +1,60 @@
+// TK-11041 — catalog-source provenance guard (the narrow scraper/test hardening).
+//
+// PURPOSE: encode the TK-10981 lesson as an executable gate. Before any *_catalog
+// staging row is TRUSTED as an authoritative recovery SOURCE (to backfill a real
+// mfr item# or a net price onto a customer-facing product), it must pass this
+// guard. A plausible code SHAPE is NOT proof of provenance — the innovations_catalog
+// scrape produced 81 rows whose mfr_sku is just the *tail of the pattern name*
+// (Sum`atra` -> `atra-1`, Maz`arin` -> `arin-1`) and 236 rows with no product_url
+// at all. Backfilling from those would fabricate identity/price data.
+//
+// Pure functions, no I/O — unit-testable in isolation (see ../test/provenance.test.mjs).
+
+// A real Innovations-style vendor code: 2–4 uppercase letters + digits (ZIO-88, SOA008).
+const CODE_SHAPE = /^[A-Z]{2,4}-?\d{1,5}$/;
+// The truncation signature: an all-lowercase letter run + digits (arin-1, atra-3).
+const LOWERCASE_TAIL = /^[a-z]{2,6}-\d+$/;
+// Bare placeholders that leaked in from boolean/null scrapes.
+const PLACEHOLDER = /^(TRUE|FALSE|NULL|N\/?A|-|\?)$/i;
+
+/** Does the code's letter run appear as the TAIL of any word of the pattern name? */
+function codeIsPatternTail(code, patternName) {
+  const letters = (code || '').replace(/[^a-z]/gi, '').toLowerCase();
+  if (letters.length < 3) return false;
+  const words = (patternName || '')
+    .toLowerCase()
+    .split(/[^a-z]+/)
+    .filter(w => w && w !== 'wallcovering' && w !== 'wallpaper');
+  // truncation match: a pattern word ENDS WITH the code letters but is not equal
+  // to them (i.e. the code is a suffix chopped off the real name).
+  return words.some(w => w.length > letters.length && w.endsWith(letters));
+}
+
+/**
+ * Classify a staging-catalog row as a recovery source.
+ * @param {{mfr_sku?:string, product_url?:string, pattern_name?:string, price_trade?:number|string}} row
+ * @returns {{code:string, trustworthy:boolean, reasons:string[]}}
+ *   trustworthy === true  => the row may be used to backfill identity/price.
+ *   reasons lists every disqualifier found (empty when trustworthy).
+ */
+export function classifyCatalogSource(row = {}) {
+  const code = (row.mfr_sku ?? '').trim();
+  const reasons = [];
+
+  if ((row.product_url ?? '').trim() === '') reasons.push('no_provenance_url');
+  if (PLACEHOLDER.test(code)) reasons.push('placeholder_code');
+  if (LOWERCASE_TAIL.test(code)) reasons.push('corrupted_lowercase_tail');
+  if (codeIsPatternTail(code, row.pattern_name)) reasons.push('code_is_pattern_tail');
+  if (!CODE_SHAPE.test(code) && !LOWERCASE_TAIL.test(code) && !PLACEHOLDER.test(code)) {
+    reasons.push('unexpected_shape');
+  }
+
+  // de-dupe while preserving order
+  const unique = [...new Set(reasons)];
+  return { code, trustworthy: unique.length === 0, reasons: unique };
+}
+
+/** Convenience boolean. */
+export function isTrustworthySource(row) {
+  return classifyCatalogSource(row).trustworthy;
+}
diff --git a/tk11041-innovations-reconcile/reconcile.mjs b/tk11041-innovations-reconcile/reconcile.mjs
new file mode 100644
index 0000000..7497d96
--- /dev/null
+++ b/tk11041-innovations-reconcile/reconcile.mjs
@@ -0,0 +1,160 @@
+#!/usr/bin/env node
+// TK-11041 — feed-first / local SKU reconciliation for the missing Innovations cohort.
+//
+// READ-ONLY. No Shopify writes. No dw_unified writes. No catalog activation.
+// Produces a DETERMINISTIC, dry-run recovery map for the 51 ACTIVE, sample-only
+// Phillipe-Romano-private-label Innovations products, proving whether any LOCAL
+// (feed-first) recovery path exists before falling back to the gated vendor line-sheet.
+//
+// Cohort definition (deterministic):
+//   vendor='Phillipe Romano' AND status='ACTIVE'
+//   AND NOT has_product_variant  (unbuyable: only the $4.25 memo Sample)
+//   AND supplier_name ~* 'innov'
+//
+// Recovery-source join keys tested (per the pilot README's proven join model):
+//   sp.sku    = innovations_catalog.dw_sku    (numeric DW-SKU form)
+//   sp.dw_sku = innovations_catalog.dw_sku
+//   sp.mfr_sku= innovations_catalog.mfr_sku
+//   + feed-first pattern-token word match against innovations_catalog.pattern_name
+//
+// Every candidate source is additionally run through lib/provenance.classifyCatalogSource
+// so a "match" made of fabricated (no-URL / truncated) catalog data is never counted
+// as a real recovery.
+
+import fs from 'node:fs';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+import { queryRows } from '../lib/db.mjs';
+import { classifyCatalogSource } from './lib/provenance.mjs';
+
+const HERE = path.dirname(fileURLToPath(import.meta.url));
+const DATA = path.join(HERE, 'data');
+fs.mkdirSync(DATA, { recursive: true });
+
+// ---------------------------------------------------------------------------
+// 1) The 51 cohort, with the identity fields + a derived pattern token.
+// ---------------------------------------------------------------------------
+const cohort = queryRows(`
+  select
+    sp.sku,
+    coalesce(sp.dw_sku,'')  as dw_sku,
+    coalesce(sp.mfr_sku,'') as mfr_sku,
+    split_part(coalesce(sp.mfr_sku,''),'-',1) as collection,
+    trim(regexp_replace(
+      regexp_replace(split_part(sp.title,' | ',1),'( Type ?2| Natural| Vinyl| Memo Sample).*$','','i'),
+      '^La ','')) as base,
+    sp.title
+  from shopify_products sp
+  where sp.vendor='Phillipe Romano' and sp.status='ACTIVE'
+    and not coalesce(sp.has_product_variant,false)
+    and sp.supplier_name ~* 'innov'
+  order by sp.mfr_sku
+`);
+
+const patToken = base => (base || '').split(' ').filter(Boolean)[0] || '';
+
+// ---------------------------------------------------------------------------
+// 2) Per-item local-recovery test (all read-only lookups against the catalog).
+// ---------------------------------------------------------------------------
+const map = cohort.map(r => {
+  const tok = patToken(r.base);
+
+  const bySku = r.sku ? queryRows(
+    `select mfr_sku, product_url, pattern_name, price_trade from innovations_catalog
+       where upper(dw_sku)=upper($$${r.sku}$$)`) : [];
+  const byDwSku = r.dw_sku ? queryRows(
+    `select mfr_sku, product_url, pattern_name, price_trade from innovations_catalog
+       where upper(dw_sku)=upper($$${r.dw_sku}$$)`) : [];
+  const byMfr = r.mfr_sku ? queryRows(
+    `select mfr_sku, product_url, pattern_name, price_trade from innovations_catalog
+       where upper(mfr_sku)=upper($$${r.mfr_sku}$$)`) : [];
+  const byPattern = tok.length >= 4 ? queryRows(
+    `select mfr_sku, product_url, pattern_name, price_trade from innovations_catalog
+       where pattern_name ~* ('\\m'||$$${tok}$$||'\\M')`) : [];
+
+  const candidates = [...bySku, ...byDwSku, ...byMfr, ...byPattern];
+  // A candidate only counts as a REAL recovery if it is a trustworthy source
+  // (has provenance + a non-fabricated code) AND carries a usable net price.
+  const trustworthy = candidates.filter(c =>
+    classifyCatalogSource(c).trustworthy && Number(c.price_trade) > 0);
+
+  const recoverable = trustworthy.length > 0;
+  return {
+    sku: r.sku,
+    internal_code: r.mfr_sku,
+    collection: r.collection,
+    pattern_token: tok,
+    title: r.title,
+    join_sku_hits: bySku.length,
+    join_dwsku_hits: byDwSku.length,
+    join_mfr_hits: byMfr.length,
+    pattern_match_hits: byPattern.length,
+    trustworthy_priced_sources: trustworthy.length,
+    status: recoverable ? 'RECOVERABLE_LOCAL' : 'BLOCKED_ON_VENDOR_LINESHEET',
+    recovery_action: recoverable
+      ? 'stage add-yard variant (net_trade/0.65/0.85 per YARD) via proven stage-innov-reprice — GATED (Shopify write)'
+      : 'no trustworthy local source; match returned Innovations line-sheet on pattern+colorway, then stage add-yard — email send GATED to Steve',
+  };
+});
+
+// ---------------------------------------------------------------------------
+// 3) Catalog provenance snapshot (grounds the "no local source" conclusion).
+// ---------------------------------------------------------------------------
+const catalog = queryRows(`select mfr_sku, product_url, pattern_name from innovations_catalog`);
+let noUrl = 0, corrupted = 0, trustworthy = 0;
+for (const row of catalog) {
+  const c = classifyCatalogSource(row);
+  if (c.reasons.includes('no_provenance_url')) noUrl++;
+  if (c.reasons.includes('corrupted_lowercase_tail') || c.reasons.includes('code_is_pattern_tail')) corrupted++;
+  if (c.trustworthy) trustworthy++;
+}
+
+// links: which vendor does innovations_catalog actually describe?
+const linkage = queryRows(`
+  select sp.vendor, count(*) n from innovations_catalog ic
+  join shopify_products sp on sp.shopify_id like '%'||ic.shopify_product_id
+  where coalesce(ic.shopify_product_id,'')<>'' group by 1 order by 2 desc`);
+
+const summary = {
+  task: 'TK-11041',
+  generated_at: new Date().toISOString(),
+  cohort_size: map.length,
+  recoverable_local: map.filter(m => m.status === 'RECOVERABLE_LOCAL').length,
+  blocked_on_vendor: map.filter(m => m.status === 'BLOCKED_ON_VENDOR_LINESHEET').length,
+  collections: [...new Set(map.map(m => m.collection))].sort(),
+  join_coverage: {
+    by_sku: map.reduce((a, m) => a + m.join_sku_hits, 0),
+    by_dwsku: map.reduce((a, m) => a + m.join_dwsku_hits, 0),
+    by_mfr: map.reduce((a, m) => a + m.join_mfr_hits, 0),
+    by_pattern_token: map.reduce((a, m) => a + m.pattern_match_hits, 0),
+  },
+  catalog_provenance: {
+    total_rows: catalog.length,
+    no_provenance_url: noUrl,
+    fabricated_code_rows: corrupted,
+    trustworthy_source_rows: trustworthy,
+    describes_vendor: linkage,
+  },
+  conclusion: 'BLOCKED_ON_VENDOR_LINESHEET — 0 trustworthy local recovery sources for the cohort; '
+    + 'innovations_catalog describes the Innovations USA (DWIN-) line, not the PR private-label. '
+    + 'Local backfill would fabricate identity/price. Recovery requires the gated vendor line-sheet.',
+};
+
+// ---------------------------------------------------------------------------
+// 4) Emit artifacts.
+// ---------------------------------------------------------------------------
+fs.writeFileSync(path.join(DATA, 'innovations-recovery-map.json'),
+  JSON.stringify({ summary, map }, null, 2));
+fs.writeFileSync(path.join(DATA, 'reconcile-summary.json'),
+  JSON.stringify(summary, null, 2));
+
+const csvCols = ['sku', 'internal_code', 'collection', 'pattern_token',
+  'join_sku_hits', 'join_dwsku_hits', 'join_mfr_hits', 'pattern_match_hits',
+  'trustworthy_priced_sources', 'status'];
+const csv = [csvCols.join(',')]
+  .concat(map.map(m => csvCols.map(k => JSON.stringify(m[k] ?? '')).join(',')))
+  .join('\n');
+fs.writeFileSync(path.join(DATA, 'innovations-recovery-map.csv'), csv + '\n');
+
+console.log(JSON.stringify(summary, null, 2));
+console.log(`\nWrote:\n  data/innovations-recovery-map.json (${map.length} items)\n  data/innovations-recovery-map.csv\n  data/reconcile-summary.json`);
diff --git a/tk11041-innovations-reconcile/test/provenance.test.mjs b/tk11041-innovations-reconcile/test/provenance.test.mjs
new file mode 100644
index 0000000..d238d1b
--- /dev/null
+++ b/tk11041-innovations-reconcile/test/provenance.test.mjs
@@ -0,0 +1,63 @@
+// TK-11041 — provenance-guard regression test.
+// Proves the source-of-truth hardening on synthetic positive/negative cases AND
+// against the LIVE corrupted rows in innovations_catalog (read-only).
+//
+// Run: node --test test/provenance.test.mjs
+import { test } from 'node:test';
+import assert from 'node:assert/strict';
+import { classifyCatalogSource, isTrustworthySource } from '../lib/provenance.mjs';
+import { queryRows } from '../../lib/db.mjs';
+
+// ---- POSITIVE: a real, corroborated Innovations code with provenance -------
+test('trustworthy: well-shaped code + product_url + price', () => {
+  const row = { mfr_sku: 'ZIO-088', product_url: 'https://innovationsusa.com/p/zio-088',
+                pattern_name: 'Alchemy Helio', price_trade: 42 };
+  const r = classifyCatalogSource(row);
+  assert.equal(r.trustworthy, true, JSON.stringify(r));
+  assert.deepEqual(r.reasons, []);
+});
+
+// ---- NEGATIVE 1: the truncated-tail fabrication signature -------------------
+test('rejects fabricated lowercase-tail code (Sumatra -> atra-1)', () => {
+  const r = classifyCatalogSource({ mfr_sku: 'atra-1', pattern_name: 'Sumatra Wallcovering', product_url: '' });
+  assert.equal(r.trustworthy, false);
+  assert.ok(r.reasons.includes('corrupted_lowercase_tail'));
+  assert.ok(r.reasons.includes('code_is_pattern_tail'));
+  assert.ok(r.reasons.includes('no_provenance_url'));
+});
+
+// ---- NEGATIVE 2: placeholder code leaked from a boolean scrape --------------
+test('rejects TRUE placeholder code', () => {
+  const r = classifyCatalogSource({ mfr_sku: 'TRUE', pattern_name: 'Whatever', product_url: 'https://x' });
+  assert.equal(r.trustworthy, false);
+  assert.ok(r.reasons.includes('placeholder_code'));
+});
+
+// ---- NEGATIVE 3: shape OK but NO provenance URL -> still untrusted ----------
+test('rejects well-shaped code that lacks provenance', () => {
+  const r = classifyCatalogSource({ mfr_sku: 'SOA-008', pattern_name: 'Agate', product_url: '' });
+  assert.equal(r.trustworthy, false);
+  assert.deepEqual(r.reasons, ['no_provenance_url']);
+});
+
+// ---- NEGATIVE 4: a pattern-tail code that HAPPENS to have a url still fails -
+test('code_is_pattern_tail fires even with a url (Mazarin -> arin-3)', () => {
+  const r = classifyCatalogSource({ mfr_sku: 'arin-3', pattern_name: 'Mazarin', product_url: 'https://x' });
+  assert.equal(r.trustworthy, false);
+  assert.ok(r.reasons.includes('code_is_pattern_tail'));
+});
+
+// ---- boolean convenience ----------------------------------------------------
+test('isTrustworthySource mirrors classify', () => {
+  assert.equal(isTrustworthySource({ mfr_sku: 'ZIO-1', product_url: 'https://x', pattern_name: 'Aerial' }), true);
+  assert.equal(isTrustworthySource({ mfr_sku: 'arin-1', product_url: '', pattern_name: 'Mazarin' }), false);
+});
+
+// ---- LIVE: every known-corrupted row in innovations_catalog is flagged ------
+test('LIVE: all lowercase-tail catalog rows are rejected (0 false-trust)', () => {
+  const rows = queryRows(
+    `select mfr_sku, product_url, pattern_name from innovations_catalog where mfr_sku ~ '^[a-z]+-[0-9]+$'`);
+  assert.ok(rows.length >= 1, 'expected at least one corrupted row to exist');
+  const leaked = rows.filter(isTrustworthySource);
+  assert.equal(leaked.length, 0, `fabricated rows wrongly trusted: ${JSON.stringify(leaked.slice(0,3))}`);
+});
diff --git a/tk11041-innovations-reconcile/verification/e2e-proof.json b/tk11041-innovations-reconcile/verification/e2e-proof.json
new file mode 100644
index 0000000..ac3c0d4
--- /dev/null
+++ b/tk11041-innovations-reconcile/verification/e2e-proof.json
@@ -0,0 +1,31 @@
+{
+  "intent": "TK-11041 feed-first/local SKU reconciliation for the 51 missing PR-Innovations; deterministic dry-run recovery map + provenance guard hardening",
+  "risk_tier": "R1",
+  "environment": "Mac2 local dw_unified MIRROR via /tmp socket (read-only, BEGIN READ ONLY..ROLLBACK); node v26; NO Shopify/canonical writes",
+  "build_commit_parent": "e88e5d3",
+  "timestamp": "2026-09-02T20:56:12Z",
+  "baseline": "51 ACTIVE PR-Innovations products (vendor=Phillipe Romano, supplier_name~innov, NOT has_product_variant) live as $4.25-sample-only; innovations_catalog=341 rows",
+  "commands": [
+    "node reconcile.mjs",
+    "node --test test/provenance.test.mjs"
+  ],
+  "assertions": [
+    {"boundary": "data/db", "check": "cohort size deterministic", "expected": 51, "actual": 51, "verdict": "PASS"},
+    {"boundary": "data/db", "check": "local join coverage (sku/dwsku/mfr/pattern) across 51", "expected": "0/0/0/0", "actual": "0/0/0/0", "verdict": "PASS"},
+    {"boundary": "data/provenance", "check": "innovations_catalog no_provenance_url", "actual": "236/341", "verdict": "PASS"},
+    {"boundary": "data/provenance", "check": "innovations_catalog fabricated-code rows", "actual": "81/341", "verdict": "PASS"},
+    {"boundary": "data/provenance", "check": "catalog describes vendor", "actual": "Innovations USA 295 / Innovations 9 (NOT PR private-label)", "verdict": "PASS"},
+    {"boundary": "code/unit", "check": "provenance guard positive/negative cases", "actual": "7/7 pass", "verdict": "PASS"},
+    {"boundary": "code/live", "check": "0 fabricated catalog rows wrongly trusted", "actual": "0 leaked", "verdict": "PASS"},
+    {"boundary": "artifact", "check": "recovery map emitted", "actual": "json(51)+csv(52 lines)+summary", "verdict": "PASS"}
+  ],
+  "negative_cases": [
+    "atra-1/Sumatra -> rejected (corrupted_lowercase_tail + code_is_pattern_tail + no_provenance_url)",
+    "TRUE placeholder -> rejected (placeholder_code)",
+    "SOA-008 with empty product_url -> rejected (no_provenance_url)",
+    "arin-3/Mazarin WITH url -> rejected (code_is_pattern_tail)"
+  ],
+  "gates_preserved": ["vendor line-sheet email = SEND gated to Steve (untouched)", "Shopify add-yard variant = customer-facing money write (gated)", "no dw_unified/shopify_products/canonical write fired"],
+  "cleanup": "none needed — all reads via READ ONLY txn; only local artifact files written",
+  "verdict": "PASS — 0/51 locally recoverable; recovery is correctly BLOCKED_ON_VENDOR_LINESHEET. Local backfill would fabricate identity/price."
+}

← e88e5d3 TK-11124: add per-yard $359 sellable variant to 18 sample-on  ·  back to Dw Unbuyable Recovery Pilot  ·  auto-data-snapshot: 2026-09-02T15:21:07 (1 data files) — tk1 3c3e915 →