llm-security-commons/conformance
Kjell Tore Guttormsen 0ffee85a4b fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word
schema/finding.schema.json defines a finding `id` as DS-<scanner>-<counter>,
built from a process-global counter: stable across neither runs nor
processes, and the schema says so itself. The corpus keys its comparison on
the lexicon's stable rule identity. Two normative documents in one
repository using one word for both would produce runtimes failing every case
for a reason unrelated to detection.

Also adds spec section 3.1, which publishes the bridge a consumer actually
needs and which neither normative document named: a runtime's own label
reaches a pattern_id through the lexicon's `aliases` object, and a runtime
absent from that object has no published way to be compared -- a mapping
kept privately in a consumer is the drift this repository exists to prevent.

Regenerated all 83 fixtures; re-verified from the corpus alone against both
runtimes, 83 cases, 0 failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhXDL82FRrQWedEmUg12Pj
2026-08-10 04:44:59 +02:00
..
config__bypass-safety fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
config__disable-filtering fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
config__ignore-claudemd fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
config__override-system-prompt fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
data-uri__executable fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__academic-context fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__educational fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__fictional fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__hypothetical fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__red-team fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__research-purpose fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__security-audit-sim fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__test-pretense fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
evasion__thought-experiment fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hidden-comment__agent-directed fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__approve-immediately fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__brevity-skip fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__details-omitted fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__just-approve fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__no-need-review fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__scope-minimization fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__suppress-review fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hitl-trap__too-long fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
homoglyph__cyrillic-latin-mix fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
html-obfuscation__aria-label fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
html-obfuscation__display-none fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
html-obfuscation__offscreen fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
html-obfuscation__visibility-hidden fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
html-obfuscation__zero-font fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
html-obfuscation__zero-opacity fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
html-obfuscation__zero-size-overflow fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-p2sql__inject-sql fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-p2sql__sql-inject fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-recursive__conditional-response fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-recursive__inject-output fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-xss__event-handler fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-xss__iframe-src fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-xss__javascript-uri fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
hybrid-xss__script-tag fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
identity__new-directive fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
identity__new-role fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
identity__no-longer fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
identity__pretend fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
identity__you-are-now fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
indirect__direct-address fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
indirect__instruction-to-ai fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
indirect__trigger-based fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
leetspeak__disregard fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
leetspeak__forget-instructions fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
leetspeak__ignore-previous fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
leetspeak__override fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
markdown__link-anchor-injection fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
markdown__link-ref-comment fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
multi-lang__french fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
multi-lang__german fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
multi-lang__spanish fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
nl-indirection__download-execute fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
nl-indirection__extract-exfiltrate fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
nl-indirection__fetch-execute fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
nl-indirection__read-dotfile fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
nl-indirection__send-external fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
normalization__claudemd-conflict fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
normalization__prioritize-user fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
normalization__skip-confirmation fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
normalization__user-precedence fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
override__disregard fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
override__forget-instructions fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
override__ignore-previous fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
override__override-instructions fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
override__prior-constraints fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
override__suspend-constraints fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
reframing__actual-task fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
reframing__real-purpose fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
reframing__should-actually-do fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
spoofed-header__hash-system fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
spoofed-header__inst fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
spoofed-header__instructions fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
spoofed-header__pipe-system fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
spoofed-tag__system-close fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
spoofed-tag__system-open fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
sub-agent__delegate-bypass fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
sub-agent__spawn-dangerous fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
unicode__zero-width-in-word fix(conformance): name the fixture field pattern_id, not id — the schema already owns that word 2026-08-10 04:44:59 +02:00
manifest.json feat(conformance): build the 83-case corpus; the 13-pattern blocker dissolves under measurement 2026-08-10 04:40:56 +02:00