JED Documentation
This documentation set covers the JED package as it exists today: a Python SDK and benchmark for evaluating tool-using agents under adversarial pressure.
JED supports three package workflows:
- attack-only evaluation
- guardrail-only evaluation
- dual-track attack+defense evaluation
The public Kaggle competition uses the attack-only path. The package itself supports all three.
Choose Your Path
I am building a public Kaggle submission
Start here:
GETTING_STARTED.mdfor the fastest path to a workingattack.pyKAGGLE_REDTEAM_GUIDE.mdfor the public submission contractSCORING.mdfor the normalized attack scoring modelCOMPETITION_RULES.mdas a placeholder until the official Kaggle rules page is live
Use this path if:
- you are submitting
attack.py - you want behavior that matches
aicomp evaluate redteam - you care about the public leaderboard contract
I am developing attacks with the package
Start here:
ATTACKS_GUIDE.mdfor attack strategy, replay behavior, and environment usageAPI_REFERENCE.mdfor SDK and CLI details../examples/attacks/attack.pyfor the canonical high-level attack example
Use this path if:
- you are iterating on
AttackAlgorithm - you want to use
aicomp test redteam - you need package-level attack experimentation outside the public Kaggle flow
I am developing guardrails
Start here:
GUARDRAILS_GUIDE.mdfor theGuardrail.decide(...)contractSCORING.mdfor defense scoringTESTING_GUIDE.mdfor validation and CI-aligned test commandsAPI_REFERENCE.mdfor guardrail and environment details
Use this path if:
- you are writing
guardrail.py - you want to test defense-only behavior with
aicomp test defense - you want to understand the current context keys and decision types
I am evaluating attacks and defenses together
Start here:
COMPETITION_DESIGN.mdfor the package workflow splitGUARDRAILS_GUIDE.mdfor the defense sideATTACKS_GUIDE.mdfor the offense side../examples/README.mdfor runnable examples and smoke tests
Use this path if:
- you are packaging
submission.zip - you want to measure attack and defense together
- you need the package dual-track workflow rather than the public Kaggle contract
Core Concepts
These ideas appear throughout the docs:
- Replay-based scoring: evaluators replay returned attack candidates and recompute traces, predicates, and cell signatures before scoring.
- Workflow split:
aicomp evaluate redteamis the public attack-only standalone scorer;aicomp evaluate defenseandaicomp evaluate dual, plusaicomp test, support guardrail-only and dual-track package workflows. - Environment defaults: local evaluator runs default to
sandbox; pass--env gymexplicitly when you want GymAttackEnv. - Submission shapes: public Kaggle uses
attack.py; package workflows also supportguardrail.pyandsubmission.zip.
Recommended Reading Order
If you are new to the project:
GETTING_STARTED.mdKAGGLE_REDTEAM_GUIDE.mdSCORING.md- one of
ATTACKS_GUIDE.mdorGUARDRAILS_GUIDE.md, depending on your workflow API_REFERENCE.mdwhen you need exact interfaces and defaults
Examples and Validation
Examples:
Useful validation paths:
aicomp test redteam attack.py --budget-s 60aicomp test defense guardrail.py --budget-s 60aicomp test dual submission.zip --budget-s 60
Quick Reference
- Public Kaggle submission shape:
attack.py - Standalone evaluator entrypoint:
aicomp evaluate - Public Kaggle mode:
aicomp evaluate redteam - Package dual-track entrypoints:
aicomp evaluate dualandaicomp test dual - Default public attack budget:
1800seconds - Default
aicomp testbudget:1800seconds forredteam,1800seconds fordefense, or3600seconds total for dual-track runs (1800/1800split)