OpenEnv Benchmark · Meta PyTorch Hackathon x SST 2026
+
Cascade Containment
+
OpenEnv Benchmark · Meta PyTorch Hackathon × SST 2026
-
ENVIRONMENT RUNNING
+
+
Environment Live
+
+
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
-
-
Environment Type
-
Sequential RL
-
Resource allocation under uncertainty
-
-
-
Task Difficulty Levels
-
3
-
Easy · Medium · Hard (3-day data lag)
+
+
+
Sequential Resource Allocation Under Cascade Dynamics
+
+ A city health authority allocates scarce medical resources across districts to contain a spreading epidemic.
+ Resources are limited. Data may be delayed. Infections spread geographically. Hospital collapse ends the episode.
+ The same mechanics — cascade spreading, delayed observation, resource scarcity — apply to wildfire deployment,
+ cyberattack isolation, and misinformation containment.
+
Generalisation — Same Mechanics, Different Domains
-
-
🍕 Epidemic Containment
Primary framing — allocate testing, restrict movement, deploy medical resources
-
🔥 Wildfire Resource Deployment
Pre-position crews before fire reaches populated areas; delayed satellite data
-
🛡️ Cyberattack Isolation
Quarantine systems before lateral movement; scarce security team resources
-
📢 Misinformation Containment
Deploy corrections before false narratives entrench; network spread dynamics
+
Generalisation Domains
+
+
🦠 Epidemic
Primary framing
+
🔥 Wildfire
Pre-position crews; satellite lag
+
🛡️ Cyberattack
Isolate systems; detection lag
+
📢 Misinformation
Deploy corrections; network spread
+
-
-
-
-
Rule-Based Baseline Agent
-
- Runs a complete episode server-side using a greedy rule-based policy: always allocates to the highest-infected district,
- falls back to restrict when resources are exhausted. No LLM or API keys required.
- Scored by the deterministic grader.
-
-
-
-
-
- Click any task to run a live episode and see grader scores
+
+
+
+ Click "Run Validation" to execute all Phase 1 automated checks against the live environment.
-
-
-
-
-
-
Grader Design
-
- The grader is fully deterministic — no randomness, no LLM calls.
- Given identical trajectories it always returns identical scores in [0.0, 1.0].
-
+
+
What Phase 1 Checks
+
+
Check
Requirement
+
HF Space deploys
Environment responds on port 7860
+
OpenEnv spec compliance
reset(), step(), state property all function correctly
+
3+ tasks with graders
Easy, Medium, Hard all produce grader scores in [0.0, 1.0]
+
Invalid actions handled
Bad input doesn't crash the episode
+
Difficulty progression
Tasks scale in complexity (districts, steps, resources)
+
Grader deterministic
Same trajectory always returns same score
+
-
-
Score Components
-
-
Containment Score
-
45%
-
-
Fraction of district-days below 0.4 infection threshold
-
-
-
Hospital Score
-
30%
-
-
Avg capacity preserved; ×0.6 multiplier if any breach
-
-
-
Efficiency Score
-
15%
-
-
Fraction of resource actions targeting districts above threshold
-
-
-
Speed Score
-
10%
-
-
1 − (steps / max_steps) if episode ends before time limit
+
+
+
+
+
+
+
2
+
+
Agentic Evaluation
+
Scored — run rule-based and LLM agents against all tasks; inspect grader output
-
-
-
Key Design Decisions
-
-
→Dense reward signal — all 5 terms fire independently each step.
-
→Decaying containment bonus — early action worth more than late reaction.
-
→Hospital breach multiplier — any collapse multiplies hospital score by 0.6.
-
→Grace period — first 2 steps excluded from containment scoring.
-
+
+
+
+
+
+
+ Rule-based greedy agent — allocates to highest-infected district; restricts when resources exhausted
-
-
Partial Observability (Hard Task)
-
-
Hard task exposes infection rates from 3 days ago via rolling infection_history buffer.
-
Agent receives noisy growth_rate_hint to reason about trajectory without precise current data.
-
Hospital capacity is always accurate — hospitals report in real time.
-
Grader evaluates against true hidden state, not agent's observed state.
+
+
Running episode...
+
+
+
+
+
Final Score
+
—
+
+ —
+
+
+
+
+
+
+
Hospital 45%
+
—
+
+
+
+
Containment 30%
+
—
+
+
+
+
Efficiency 15%
+
—
+
+
+
+
Speed 10%
+
—
+
+
+
-
-
-
-
-
-
-
GRPO-Style Simulated Learning
-
- The baseline implements simulated GRPO with episodic memory — no weight updates required.
- The prompt is the policy. Memory updates are the policy improvement.
-
-
-
4
Rollouts / task
-
L1
Memory similarity
-
20
Max memory size
-
R−μ
Advantage signal
-
-
-
-
-
Learning Loop
-
-
1. Rollout 1 — base prompt, no prior knowledge
-
2. Compute advantage = Ri − mean(completed)
-
3. If advantage > −0.5 → store positive-reward steps
-
4. If below threshold → suppress, memory unchanged
-
5. Next rollout retrieves top-3 similar past decisions
-
6. Memory injected into prompt before each step
-
7. Report best grader score across all rollouts
+
+
Step Log
+
+
-
-
Environment Variables
-
-# Required for inference.py
-API_BASE_URL="https://router.huggingface.co/v1"
-MODEL_NAME="meta-llama/Llama-3.1-8B-Instruct"
-HF_TOKEN="hf_your_token_here"
-ENV_BASE_URL="https://therubberduckdebuggers-cascade-containment.hf.space"
-
-# Run evaluation
-python inference.py
+
+
+ Select a task above to run a live episode and inspect grader scores.
-
-
Baseline Score Benchmarks
-
-
Task
Agent Type
Containment
Hospital
Efficiency
Final Score
Breach
+
+
+
+
LLM + GRPO Baseline Benchmark Scores
+
+
Task
Agent
Containment
Hospital
Efficiency
Score
-
Easy
-
Dumb greedy
0.35
0.90
0.60
-
~0.50
-
No
+
Easy
+
Greedy
0.35
0.90
0.45
+
~0.50
-
Easy
-
LLM + GRPO memory
0.59
0.94
1.00
-
~0.62
-
No
+
Easy
+
LLM + GRPO
1.00
1.00
1.00
+
0.88–0.93
-
Medium
-
Dumb greedy
0.18
0.21
0.57
-
~0.23
-
Yes
+
Medium
+
Greedy
0.18
0.21
0.40
+
~0.23
-
Medium
-
LLM + GRPO memory
0.15
0.94
0.87
-
~0.55
-
No
+
Medium
+
LLM + GRPO
0.44–0.73
0.97–1.00
0.87–1.00
+
0.70–0.85
-
Hard
-
Dumb greedy
0.23
0.20
0.29
-
~0.21
-
Yes
+
Hard
+
Greedy
0.12
0.18
0.25
+
~0.21
-
Hard
-
LLM + GRPO memory
0.21
0.74
0.87
-
~0.57
-
No
+
Hard
+
LLM + GRPO
0.28–0.51
0.86–0.97
0.47–0.73
+
0.58–0.65
+
+ The gap between greedy and LLM+GRPO demonstrates meaningful discrimination. Greedy agents score 0.21–0.50; LLM+GRPO agents score 0.62–0.93.
+ No policy trivially achieves high scores — genuine triage intelligence is required.
+
-
-
-
-
OpenEnv Interface Compliance
-
- Implements the standard 3-method OpenEnv interface.
- CityState is a plain dataclass (hidden ground truth — never sent to agent).
- state is a @property returning the OpenEnv tracking State.
-
-
-
env.reset(task_name)→CityObservation
-
env.step(action)→CityObservation
-
env.state→State
+
+
+
+
+
3
+
+
Human Review
+
Meta & Hugging Face engineers assess real-world utility, creativity, and exploit robustness
+
+
+
+
+
+
+
Real-World Utility
+
+
▸WHO-modelled epidemic response. Resource allocation, restriction policy, and hospital capacity constraints match real public health frameworks.
+
▸Multi-domain transfer. Wildfire deployment, cyberattack isolation, and misinformation containment share identical mathematical structure — same trained policy generalises.
+
▸3-day information lag on the hard task reflects real reporting delays in surveillance systems — not a toy mechanic.
+
▸Hospital breach at 10% capacity matches ICU overflow thresholds where triage and diversion begin, not at zero.
+
+
+
+
Novelty & Creativity
+
+
▸Cascade dynamics class. No existing OpenEnv benchmark covers the spreading-cascade / delayed-observation / resource-scarcity problem class.
+
▸Structural partial observability. The 3-day lag is enforced at the environment layer — the agent cannot test its way around it.
+
▸GRPO episodic memory baseline. Prompt-as-policy with advantage-gated memory update — no weight gradients.
+
▸Decaying containment bonus. Early action is exponentially more valuable, teaching proactive not reactive strategies.
+
+
+
+
+
+
Exploit Resistance
+
+
Potential Exploit
Prevention Mechanism
Status
+
+
Always restrict everything
+
Penalty of −0.20 per restriction on districts below 0.20
+
Blocked
+
+
+
Always use "test" to game data
+
Test costs 1 resource; real-time data already provided; no benefit
+
Blocked
+
+
+
Trivially containable (easy task too easy)
+
Random spread rates [0.03–0.08] create variance; greedy agent scores only ~0.50
EpisodicMemory class. Stores high-reward (obs, action) pairs. Retrieves top-k similar past situations by L1 distance on infection profiles.
-
🎯
baseline/evaluator.py
GRPO-style loop. N rollouts per task. Advantage = Rᵢ − mean(R). Reinforces above-average rollouts. Reports best grader score.
+
+
+
+
+
+
+
Deterministic Trajectory Scorer
+
+ The grader receives the full episode trajectory (hidden ground truth, not agent observations) and returns a score in
+ [0.0, 1.0]. No randomness. No LLM calls. Identical trajectories always produce identical scores.
+