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_gym_step.pyfor a minimal runnable 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:
../examples/README.md../examples/attacks/attack_gym_step.py../examples/guardrails/guardrail_optimal.py
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:3600seconds total, which becomes3600for single-track runs or1800/1800for dual-track runs