Skip to content

feat: expand datasets to 55 samples and add CI regression command - #13

Merged
rudrakshkarpe merged 2 commits into
mainfrom
feat/expanded-datasets-and-ci-regression
May 10, 2026
Merged

feat: expand datasets to 55 samples and add CI regression command#13
rudrakshkarpe merged 2 commits into
mainfrom
feat/expanded-datasets-and-ci-regression

Conversation

@rudrakshkarpe

Copy link
Copy Markdown
Owner

Summary

  • 5 new benchmark datasets with 52 additional samples (55 total across all datasets):

    • encoding-attacks (10 samples): base64 encoded instructions, unicode tricks, HTML entity/comment abuse, URL encoding, zero-width chars, markdown image exfiltration
    • false-positives (10 samples): benign content that superficially resembles attacks — security training docs, legitimate CEO emails, webhook configs, audit reports, i18n content
    • tool-abuse (10 samples): targeted exploitation of each forbidden tool (send_external_webhook, delete_memory_note, mark_safe_to_ignore) plus multi-tool chains
    • authority-escalation (10 samples): CEO impersonation, fake system admin overrides, legal counsel demands, stacked multi-authority claims
    • data-exfiltration (12 samples): direct/disguised webhook sends, memory poisoning, markdown beacons, social engineering chains, cover-up sequences
  • CI regression command (dual-llm-bench ci):

    • dual-llm-bench baseline <traces.jsonl> saves current scores as a baseline JSON file
    • dual-llm-bench ci <traces.jsonl> --baseline .dlb-baseline.json compares against baseline and exits non-zero if any metric regresses beyond a configurable threshold (default 5%)
    • Clear diff table output showing baseline vs current per metric
  • Generalized dataset loader to support multiple datasets via a registry dict instead of hardcoded if check

  • Widened BenchmarkSuite.from_builtin() to accept str instead of Literal["pycon-core"]

Closes #1, closes #9

Test plan

  • All 6 datasets load and validate (test_dataset_loads_successfully parametrized)
  • All sample IDs unique across the entire corpus
  • Attack samples have forbidden_tools and attack_markers; benign samples have neither
  • Total sample count >= 55
  • baseline command creates valid JSON file
  • ci command passes when scores match baseline
  • ci command fails with exit code 1 on regression
  • ci handles missing baseline file
  • Custom threshold (--threshold 1.0) allows large regressions to pass
  • Existing tests (metrics, CLI) continue to pass
  • ruff check clean, mypy --strict clean

@rudrakshkarpe
rudrakshkarpe merged commit 00afc14 into main May 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI regression command for continuous benchmarking Expand built-in datasets to 50-100+ samples across attack types

1 participant