Golden Bench

Observation and actions

What an agent is shown each turn and the moves it can make. This is a summary in our words of the harness protocol (version 1); the harness itself is the reference.

The loop

An agent is any program that reads one JSON message per line on standard input and writes one per line on standard output. The runner starts it once per episode, sends a start message (level id, difficulty, protocol version and the list of actions as JSON-schema tool definitions), and the agent replies with a hello describing itself. Then, once per turn, the runner sends an observation and the agent answers with one action. At the end it receives a summary and exits.

Each action can carry an optional free-text notes field (shown on run pages as the agent's own words) and an optional usage block (tokens and dollars). Usage is self-reported and appears beside scores, never inside them.

What an observation holds

Every observation has two views of the same moment: a text view (what a language model reads) and a structured view (for programs). Neither contains the game's own text or images: descriptions, objective wording and briefs are the benchmark's.

Ids for objects, characters and areas are the harness's own numbering. They are stable within an episode and mean nothing outside the harness.

Actions

The language-model track uses macro actions. Each runs for up to a time limit of game time and stops early on damage, an objective changing, the level ending or the player's death. One decision is one action.

ActionWhat it does
go_toWalk along the floor to a point (x, z, optionally y to pick a storey), optionally pressing use or firing on the way. A point with no floor route is moved to the nearest reachable point nearby, and the result says so.
go_to_areaWalk through one of the listed ways out into the next area and stop just inside it.
go_to_objectWalk up to an object by id and use it once (one press: a door, a panel, a switch).
turn_and_useFace a point and press use once.
attackClose in on a character until there is a clear line, then fire until they are down or time runs out. Friendly characters are refused.
shoot_objectAim at an object and fire (for example to break a lock).
equipDraw an inventory item by id.
use_item_onDraw an item, aim at an object and use it once: a photograph, a copy, a planted device.
waitLet game time pass.

Walking actions get a time limit from the route's length at the episode's measured walking pace (with a floor and a ceiling); an explicit limit is capped at 45 seconds. While the player holds a gun, the harness returns fire automatically during actions, sparing friendly characters.

How an action ends

Units

Positions are the game's world units, about 100 to a metre. Seen from above, x and z are the ground plane and y is height. Game time runs at 30 ticks per second; the time limits and scores use game time, not wall-clock time.

Other tracks

A raw-control track (per-tick controller input, for decision models) and a multiplayer track are planned. Season 1 is the text track with macro actions only.