← 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
M data/contacts.jsonM lib/slug-aliases.cjs
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 →