← back to Sample Followup Sweep
stamp_aliases: stamp-only recipient aliases (WQ contract@/lindsaydetwiler@, RBL support@rebelwalls.com); send routing unaffected + test (TK-12351)
d7b4973ef2054f227a016544c91af1cd409f717b · 2026-09-26 13:10:29 -0700 · Steve Abrams
Files touched
M .gitignoreM data/contacts.jsonM scripts/sent-stamp-core.mjsA test/stamp-aliases.test.js
Diff
commit d7b4973ef2054f227a016544c91af1cd409f717b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sat Sep 26 13:10:29 2026 -0700
stamp_aliases: stamp-only recipient aliases (WQ contract@/lindsaydetwiler@, RBL support@rebelwalls.com); send routing unaffected + test (TK-12351)
---
.gitignore | 1 +
data/contacts.json | 11 +++++++++--
scripts/sent-stamp-core.mjs | 4 +++-
test/stamp-aliases.test.js | 21 +++++++++++++++++++++
4 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index 6f58160..aad1443 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ dist/
build/
.next/
out/
+.claude/
diff --git a/data/contacts.json b/data/contacts.json
index a9598a9..4e23ae3 100644
--- a/data/contacts.json
+++ b/data/contacts.json
@@ -12,7 +12,11 @@
"wq": {
"name": "WallQuest / Malibu",
"sample_email": "orders@wallquest.com",
- "account_number": "651317"
+ "account_number": "651317",
+ "stamp_aliases": [
+ "contract@wallquest.com",
+ "lindsaydetwiler@wallquest.com"
+ ]
},
"thi": {
"name": "Thibaut",
@@ -139,7 +143,10 @@
"rbl": {
"name": "Rebel Walls (via Gimmersta US)",
"sample_email": "support@gimmersta.com",
- "account_number": "On File"
+ "account_number": "On File",
+ "stamp_aliases": [
+ "support@rebelwalls.com"
+ ]
},
"spn": {
"name": "Spoonflower (online \u2014 no rep desk)",
diff --git a/scripts/sent-stamp-core.mjs b/scripts/sent-stamp-core.mjs
index 60dd4cb..fefc87d 100644
--- a/scripts/sent-stamp-core.mjs
+++ b/scripts/sent-stamp-core.mjs
@@ -71,7 +71,9 @@ export function buildEmailVid(fleetVendors, contacts, { slugAliases = {}, slugFo
const map = {};
for (const [slug, c] of Object.entries(contacts || {})) {
const vids = slugVids[slug]; if (!vids || !c) continue;
- for (const field of [c.sample_email, c.main_email]) {
+ // stamp_aliases: extra recipient addresses recognised as this vendor for STAMPING ONLY — send
+ // routing never reads this field, so adding one cannot change who a letter goes to (TK-12351).
+ for (const field of [c.sample_email, c.main_email, ...(Array.isArray(c.stamp_aliases) ? c.stamp_aliases : [])]) {
for (const one of String(field || '').toLowerCase().split(/[,;]\s*/)) {
const t = one.trim(); if (!t) continue;
const set = (map[t] = map[t] || new Set()); for (const v of vids) set.add(v);
diff --git a/test/stamp-aliases.test.js b/test/stamp-aliases.test.js
new file mode 100644
index 0000000..2f2d343
--- /dev/null
+++ b/test/stamp-aliases.test.js
@@ -0,0 +1,21 @@
+// TK-12351: stamp_aliases map extra recipient addresses to a vendor for STAMPING ONLY.
+const assert = require('assert');
+const fs = require('fs'), path = require('path');
+(async () => {
+ const core = await import('../scripts/sent-stamp-core.mjs');
+ const fleet = [{ slug: 'wq', vid: 'WQ' }];
+ const contacts = { wq: { sample_email: 'orders@wallquest.com', stamp_aliases: ['contract@wallquest.com'] } };
+ const map = core.buildEmailVid(fleet, contacts);
+ assert.deepStrictEqual(core.vidsForRecipient(map, 'Contract CS <contract@wallquest.com>'), ['WQ'], 'alias must map to WQ');
+ assert.deepStrictEqual(core.vidsForRecipient(map, 'orders@wallquest.com'), ['WQ'], 'primary still maps');
+ assert.deepStrictEqual(core.vidsForRecipient(map, 'nobody@x.com'), [], 'unknown stays unmapped');
+ // send routing must never read stamp_aliases: only the stamp core may reference it.
+ const offenders = [];
+ for (const dir of ['lib', 'bin', 'scripts']) for (const f of fs.readdirSync(dir)) {
+ if (f === 'sent-stamp-core.mjs' || !/\.(m?js|cjs)$/.test(f)) continue;
+ if (fs.readFileSync(path.join(dir, f), 'utf8').includes('stamp_aliases')) offenders.push(dir + '/' + f);
+ }
+ if (fs.readFileSync('server.js', 'utf8').includes('stamp_aliases')) offenders.push('server.js');
+ assert.deepStrictEqual(offenders, [], 'stamp_aliases leaked into non-stamp code: ' + offenders);
+ console.log('stamp-aliases: ALL PASS');
+})().catch(e => { console.error('FAIL:', e.message); process.exit(1); });
← 5b98d5b Sent-stamp watcher: dead-letter heartbeat + vid-keyed pull-f
·
back to Sample Followup Sweep
·
auto-data-snapshot: 2026-09-26T13:16:02 (1 data files) — dat d8151a8 →