/** * SMI-5876 Wave 1 / SMI-5881: evidence-tier classification for * JAILBREAK_PATTERNS + AI_DEFENCE_PATTERNS. * @module @skillsmith/core/security/scanner/patterns.jailbreak.evidence * * Split out of patterns.jailbreak.ts (SMI-5881 — that file was approaching * the 500-line audit:standards gate again, same reason it was split out of * patterns.ts in SMI-5876) so EVIDENCE_TYPE_BY_PATTERN's declaration doesn't * grow patterns.jailbreak.ts every time a new pattern is added. * * Keyed by OBJECT IDENTITY, exhaustive over both arrays (asserted by test in * scanner-evidence-tiers.test.ts), but classifyEvidence() (SecurityScanner. * evidence.ts) still defaults UNMAPPED patterns to `imperative_instruction` — * fail-closed: forgetting to classify a newly added pattern makes it * strongest, never weakest. * * Built from parallel index-aligned arrays (not per-named-const references) * because the individual pattern consts (JB_IGNORE_PREVIOUS, AD_ROLE_MARKER_ * BARE, ...) are private to patterns.jailbreak.ts and intentionally not * exported — this file only ever sees the same JAILBREAK_PATTERNS / * AI_DEFENCE_PATTERNS arrays every other consumer sees, so a length mismatch * (pattern added to one array, tier forgotten here) is impossible to * misalign silently: the two arrays below MUST stay index-aligned with the * exported pattern arrays, or scanner-evidence-tiers.test.ts's exhaustiveness * assertion catches it immediately. * * Consumed ONLY by SecurityScanner's severity resolution. Every other * consumer of JAILBREAK_PATTERNS / AI_DEFENCE_PATTERNS (memory-injection- * scanner.ts's quarantine gate, SecurityScanner.quickCheck()) ignores it by * design — both those call sites test bare pattern presence, not evidence * tier, and that is intentional (see their own inline comments). */ import type { EvidenceType } from './types.js'; export declare const EVIDENCE_TYPE_BY_PATTERN: ReadonlyMap; //# sourceMappingURL=patterns.jailbreak.evidence.d.ts.map