[object Object]

← back to CelebritySignatures

signatures: permanently exclude Q352 (brand safety) from every surface

54991315d5540f6db9b6cedb4c0faf7816a09115 · 2026-09-09 14:44:41 -0700 · Steve

Filters the QID from mergedSignatures() so it never appears in feed, grid,
wear, or sitemap.

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

Files touched

Diff

commit 54991315d5540f6db9b6cedb4c0faf7816a09115
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Sep 9 14:44:41 2026 -0700

    signatures: permanently exclude Q352 (brand safety) from every surface
    
    Filters the QID from mergedSignatures() so it never appears in feed, grid,
    wear, or sitemap.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_014ikfY9DhpMDXkpNRpb5ufG
---
 server.js | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/server.js b/server.js
index 507d327..d8c0006 100644
--- a/server.js
+++ b/server.js
@@ -133,6 +133,8 @@ const ART_OCC = /(paint|sculpt|printmak|draughts|illustrat|photograph|architect|
 const ART_OCC_EXCLUDE = /(fashion designer|costume designer|couturier|game designer|sound designer|web designer)/;
 const isArtOcc = o => { const s = String(o).toLowerCase(); return ART_OCC.test(s) && !ART_OCC_EXCLUDE.test(s); };
 let _sigCache = null, _sigCacheAt = 0;
+// Permanently excluded from EVERY surface (feed, grid, wear, sitemap) — brand safety (Steve 2026-09-09).
+const SIG_EXCLUDE_QIDS = new Set(['Q352']); // Q352 = Adolf Hitler
 async function mergedSignatures() {
   if (_sigCache && Date.now() - _sigCacheAt < 60000) return _sigCache; // 60s cache
   const base = await load('celebrity_signatures.json', []);
@@ -143,7 +145,7 @@ async function mergedSignatures() {
   const cleanArtists = raw.length ? artists.filter(a => artistQids.has(qidOf(a))) : artists;
   const seenQ = new Set([...base.map(qidOf), ...cleanArtists.map(qidOf)]);
   const cleanAuthors = authors.filter(a => !seenQ.has(qidOf(a)));
-  _sigCache = [...base.filter(r => r.category !== 'Artists' && r.category !== 'Authors'), ...cleanArtists, ...cleanAuthors];
+  _sigCache = [...base.filter(r => r.category !== 'Artists' && r.category !== 'Authors'), ...cleanArtists, ...cleanAuthors].filter(r => !SIG_EXCLUDE_QIDS.has(qidOf(r)));
   _sigCacheAt = Date.now();
   return _sigCache;
 }

← abc8f51 signature-viewer: fix ink-collision crash + add user-adjusta  ·  back to CelebritySignatures  ·  game/murals/wear: render cleaned colored-ink signatures via 6a759ce →