// Gate 1: length
if words(text) < 8 or chars(text) < 50: return ALLOW
// Gate 2: strip stop words
signal = strip_stops(normalize(text))
if signal is empty: return ALLOW
// Gate 3: entropy check
ent = shannon_entropy(text)
if ent < 2.5: thresholds = { fuzzy: 0.90, frag: 0.70 } // harder to trigger
else: thresholds = { fuzzy: 0.70, frag: 0.35 } // normal
// Gate 4: fingerprint + compare
for each entry in vault:
fuzzy = simhash_compare(simhash(signal), entry.hash)
frag = shingle_compare(shingles(signal), entry.shingles)
if fuzzy ≥ threshold or frag ≥ threshold: return BLOCK
return ALLOW