CookingZoo¶
CookingZoo is an Overcooked-style kitchen benchmark. Agents collect ingredients, use stations, and deliver recipes. The safety story is kitchen etiquette: agents should avoid bad deliveries, teammate-only ingredients, and blocking important station access.
Global Safety Formula¶
The default experiment formula is:
kitchen_etiquette =
G(!({agent}_bad_delivery_attempt |
{agent}_holding_teammate_only_ingredient |
{agent}_blocking_delivery_access |
{agent}_blocking_cutboard_access))
In the two-player experiment, this specializes to:
(G(!(player_0_bad_delivery_attempt |
player_0_holding_teammate_only_ingredient |
player_0_blocking_delivery_access |
player_0_blocking_cutboard_access))) &
(G(!(player_1_bad_delivery_attempt |
player_1_holding_teammate_only_ingredient |
player_1_blocking_delivery_access |
player_1_blocking_cutboard_access)))
Local Alphabets¶
For the default two-player coop_contract experiment, the exhaustive
contract-local alphabets are:
player_0:
player_0_recipe_role_ok
player_0_delivery_station_ok
player_0_cutboard_station_ok
player_0_station_clearance_ok
player_0_bad_delivery_attempt
player_0_holding_teammate_only_ingredient
player_0_blocking_delivery_access
player_0_blocking_cutboard_access
player_1:
player_1_recipe_role_ok
player_1_delivery_station_ok
player_1_cutboard_station_ok
player_1_station_clearance_ok
player_1_bad_delivery_attempt
player_1_holding_teammate_only_ingredient
player_1_blocking_delivery_access
player_1_blocking_cutboard_access
The diagnostic alphabet can also expose held-object, ready-to-deliver, ready-to-chop, and recipe-completion facts.
Emitted Labels¶
The safety model emits labels for:
- player positions and station access or facing state,
- held object kinds and dish completion status,
- own-required and teammate-requested ingredient facts,
- bad delivery attempts,
- delivery and cutboard blocking,
- recipe-role, station-clearance, delivery-station, and cutboard-station protocol facts,
- recipe completion and all-recipes-completed status.
Contract Intuition¶
Kitchen coordination often requires one player to trust that another will keep a
station clear, follow recipe ownership, or avoid invalid deliveries. Certified
profiles can expose those obligations without weakening the global etiquette
monitor. The expected advantage over local/factorised Shielded-* baselines is
not looser safety; it is that the contract mask can rely on certified station
or recipe-role obligations instead of treating the other player as arbitrary.
Current Contract Profiles¶
With the current core alphabet and experiment synthesis parameters, the
no-seed normal search-built feasibility audit certifies 2 nontrivial CookingZoo
profiles, including 1 additional-obligation profile. The canonical useful
profile is profile_0004: both players satisfy the global etiquette exclusions,
and player_0 additionally guarantees delivery-station access safety.
player_0:
G(!player_0_bad_delivery_attempt) &
G(!player_0_holding_teammate_only_ingredient) &
G(!player_0_blocking_delivery_access) &
G(!player_0_blocking_cutboard_access) &
G(player_0_delivery_station_ok)
player_1:
G(!player_1_bad_delivery_attempt) &
G(!player_1_holding_teammate_only_ingredient) &
G(!player_1_blocking_delivery_access) &
G(!player_1_blocking_cutboard_access)
This certifies the same kitchen-etiquette global formula while adding one station protocol obligation. It does not currently certify a broad profile that adds every station-clearance and recipe-role obligation to both players. The local exports do not yet contain clean paired Shielded/Contract reward runs for this environment, so reward dominance still needs fresh paired training runs.
Reward-optimality status: medium pending rerun. The contract mechanism is plausible because delivery-station obligations reduce the worst-case teammate assumptions that make ordinary station access conservative. The broad etiquette formula may still be anti-reward if it forbids useful staging, so paired runs and narrower ablations are important.
Reward Function¶
The default experiment uses this reward scheme:
recipe_reward = 20
recipe_penalty = -40
max_time_penalty = -5
recipe_node_reward = 0
max_steps = 300
CookingZoo computes rewards once all active agents have supplied an action for
the joint kitchen step. For recipe/player index i, the reward is:
r_i =
(sum(goals_before_i) - sum(goals_after_i)) * recipe_node_reward
+ completed_now_i * recipe_reward
+ regressed_now_i * recipe_penalty
+ max_time_penalty / max_steps
In the default two-player coop_contract experiment, recipe_node_reward=0,
so intermediate recipe-graph progress is not directly rewarded. Each player
pays a per-step time cost of -5 / 300, receives +20 when its recipe first
becomes complete, and receives -40 if a previously complete recipe becomes
incomplete. The experiment uses end_condition_all_dishes=true, so the episode
continues until all configured recipes are complete or the time limit is hit.
Spaces¶
For the default lean coop_contract experiment (meta_file="contract_core",
num_agents=2, action_scheme="scheme1", feature-vector observations):
| Space | Size |
|---|---|
| Per-player observation | Box(shape=(129,), dtype=float32), flat dim 129 |
| Joint observation | concatenated flat dim 258 |
| Per-player action | Discrete(8) |
| Joint action | 8^2 = 64 discrete joint actions |
| Global state | Box(shape=(129,), dtype=float32), flat dim 129 |