[object Object]

← back to Sample Followup Sweep

TK-11524: close sample-followup no-email gap (item d)

be622a9a50dd61a68b52bef67b77b9097169db6e · 2026-09-12 20:07:28 -0700 · Steve Abrams

- lib/slug-aliases.cjs: add SCHUMACHER->sch to the single-source-of-truth
  SLUG_ALIASES. The merge previously lived only in build-fleet.js's local
  VID_ALIAS, so scheduled-run.mjs's runtime contact bridge mapped raw vid
  SCHUMACHER->slug 'schumacher' (no contact) -> CONFIRM-SAMPLE-EMAIL skip-gap
  (the two-copies-diverge class the file header warns about, cf SAND->Sandberg).
- data/contacts.json ulr: resolve Ulrich Welter -> info@welter-wandunikate.de
  (Welter Wandunikate; verified via Gmail two-way order thread msg 17e4fa0f0ecd5b7d),
  HIGH confidence, held needs_confirm:true pending Steve confirm (no auto-send).
- data/contacts.json tbd: disposition no-chase (FileMaker placeholder vid, not a
  real vendor; real fix = correct the source memo vid in FileMaker, gated).

Verified: contacts.json valid, build-fleet.js parses, slugForVid(SCHUMACHER)=sch,
0 undispositioned no-email slugs remain (was 6).

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

Files touched

Diff

commit be622a9a50dd61a68b52bef67b77b9097169db6e
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sat Sep 12 20:07:28 2026 -0700

    TK-11524: close sample-followup no-email gap (item d)
    
    - lib/slug-aliases.cjs: add SCHUMACHER->sch to the single-source-of-truth
      SLUG_ALIASES. The merge previously lived only in build-fleet.js's local
      VID_ALIAS, so scheduled-run.mjs's runtime contact bridge mapped raw vid
      SCHUMACHER->slug 'schumacher' (no contact) -> CONFIRM-SAMPLE-EMAIL skip-gap
      (the two-copies-diverge class the file header warns about, cf SAND->Sandberg).
    - data/contacts.json ulr: resolve Ulrich Welter -> info@welter-wandunikate.de
      (Welter Wandunikate; verified via Gmail two-way order thread msg 17e4fa0f0ecd5b7d),
      HIGH confidence, held needs_confirm:true pending Steve confirm (no auto-send).
    - data/contacts.json tbd: disposition no-chase (FileMaker placeholder vid, not a
      real vendor; real fix = correct the source memo vid in FileMaker, gated).
    
    Verified: contacts.json valid, build-fleet.js parses, slugForVid(SCHUMACHER)=sch,
    0 undispositioned no-email slugs remain (was 6).
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01R3SgrKtLCZRzmFK5fp9qy8
---
 data/contacts.json   | 12 ++++++++++--
 lib/slug-aliases.cjs |  5 +++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/data/contacts.json b/data/contacts.json
index ee16066..dc22574 100644
--- a/data/contacts.json
+++ b/data/contacts.json
@@ -296,8 +296,16 @@
   "ulr": {
     "name": "Ulrich Welter",
     "needs_confirm": true,
-    "unresolved_email": true,
-    "contact_source": "George/Gmail mining 2026-08-20 (grounded on live outstanding-memo Mfr Patterns): George: our sample requests addressed 'Attn: Sample Dept Ulrich Welter' (J-codes, DWS prefix) \u2014 vendor NAME confirmed but no reply-email captured; needs an Ulrich Welter sample-desk address before it can draft"
+    "unresolved_email": false,
+    "sample_email": "info@welter-wandunikate.de",
+    "confidence": "HIGH",
+    "contact_source": "TK-11524 (worker-w03, 2026-09-12) George/Gmail resolution: Ulrich Welter = Welter Wandunikate (DW flock-velvet 'Austrian Prince' / glass-bead mfr). Address info@welter-wandunikate.de confirmed via Gmail msg 17e4fa0f0ecd5b7d \u2014 a two-way DW<->Ulrich order/cost/shipping thread (Ulrich emailed FROM this address to info@designerwallcoverings.com). Held needs_confirm:true pending Steve's confirm per the standing convention before it can draft."
+  },
+  "tbd": {
+    "name": "(placeholder — unidentified vendor)",
+    "disposition": "no-chase",
+    "disposition_reason": "TK-11524 (worker-w03, 2026-09-12): vid 'TBD' is a FileMaker data-entry placeholder, not a real vendor — there is no sample desk to chase. The durable fix is correcting the vid on the source memo in FileMaker (a canonical FM write, gated/out-of-scope for this data-hygiene pass). Dispositioned so the empty sample_email is EXPECTED, not a phantom gap.",
+    "disposition_set": "2026-09-12"
   },
   "1838-wallcoverings": {
     "name": "1838 Wallcoverings",
diff --git a/lib/slug-aliases.cjs b/lib/slug-aliases.cjs
index ba2ac73..bc24bdf 100644
--- a/lib/slug-aliases.cjs
+++ b/lib/slug-aliases.cjs
@@ -19,6 +19,11 @@ const SLUG_ALIASES = {
   'AS CREATION': 'san',                 // Sancar (AS Creation)
   'BM': 'green',                        // Greenland / bmwallpaper
   '1838': '1838-wallcoverings',         // bare vid + '1838 Wallcoverings' = one vendor (Scott Myer)
+  'SCHUMACHER': 'sch',                  // long vid spelling = same vendor as 'SCH' (F. Schumacher). TK-11524:
+                                        // this merge previously lived ONLY in build-fleet.js's local VID_ALIAS,
+                                        // so scheduled-run.mjs's runtime contact bridge mapped raw vid
+                                        // 'SCHUMACHER' -> slug 'schumacher' (no contact) -> ‹CONFIRM SAMPLE EMAIL›
+                                        // skip-gap. 'sch' carries la-samples@schumacher.com + a no-chase disposition.
 };
 
 // FileMaker vid values carry stray CR/whitespace — a Kravet record's vid is literally

← 319610c auto-data-snapshot: 2026-09-12T10:01:53 (2 data files) — dat  ·  back to Sample Followup Sweep  ·  auto-data-snapshot: 2026-09-13T00:21:19 (1 data files) — dat 924ba34 →