metadata
title: CACE — Cultural Context Arbitration Environment
emoji: ⚖️
colorFrom: indigo
colorTo: purple
sdk: docker
pinned: true
license: apache-2.0
tags:
- reinforcement-learning
- openenv
- content-moderation
- multi-agent
- rlvr
- grpo
Cultural Context Arbitration Environment (CACE)
OpenEnv Hackathon 2026 | Theme 1 (Multi-Agent) + Theme 3.1 (World Modeling)
Trains a single LLM policy via GRPO to make culturally-aware content moderation decisions — using Meta's Oversight Board rulings (200+ binding public decisions) as the verifiable reward oracle.
Quick Start
from cace_env import CACEEnvClient, CACEAction
import asyncio
async def main():
# Connect to HF Space
async with CACEEnvClient(base_url="ws://YOUR_USERNAME-cace-env.hf.space") as env:
# V1: single case episode
result = await env.reset()
print(result.observation.observation[:200])
# Make a moderation decision (0=ALLOW, 1=REMOVE, 2=ALLOW_WITH_LABEL, 3=ESCALATE, 4=RESTRICT)
result = await env.step(CACEAction(action_int=0))
print(f"Reward: {result.reward:.4f} | Correct: {result.observation.reward_breakdown['correct']}")
asyncio.run(main())
V1 vs V2 Modes
| V1 (Simple) | V2 (Network) | |
|---|---|---|
| Episode | 1 post → 1 decision | 20 posts on social graph → pick 8 → 8 decisions |
| Observation | Enriched single case | Network batch with spread signals |
| Reward | 3-track reward | 3-track + network spread bonus |
| Use for | Quick training | Full demo |
Three-Track Reward
| Track | Weight | Measures |
|---|---|---|
| Cultural Meaning Resolution | 40% | Correct interpretation of culturally local language |
| Harm Detection Under Context | 35% | Catching real harm that looks ambiguous |
| Policy Calibration + Escalation | 25% | Right tool for right case — no lazy escalation |
Combined reward: [-1.0, +1.0] (normalised for GRPO)
Architecture
4 Frozen Agents (Groq/Azure — inference only, no gradients):
Intake Agent → language, region, policy clause
Cultural Context → charitable cultural interpretation
Adversarial Challenge → stress-tests the cultural argument
Policy Alignment → Meta Community Standards anchor
1 Trainable Agent (GRPO via Unsloth + TRL):
Decision Agent → ALLOW | REMOVE | ALLOW_WITH_LABEL | ESCALATE | RESTRICT_DISTRIBUTION
Reward Oracle: Meta Oversight Board — 200+ binding public decisions
No LLM judge. Fully deterministic reward.
Environment API
POST /reset → start episode (returns CACEObservation)
POST /step → apply CACEAction (returns CACEObservation with reward)
GET /state → current CACEState (for debugging)
GET /health → liveness check
GET /docs → FastAPI Swagger UI
GET /web → OpenEnv web interface