Skip to content

Games Domain Contract

Use this document for games-domain rules. Exact active scenes and tasks live in docs/ACTIVE_TASK_INVENTORY.md and docs/tasks/games/.

Scope

Games covers recognizable game artifacts where the visible state, local rules, and rendered pieces are enough to solve the query. Prefer fully observable, low-convention tasks over hidden-information strategy.

Scenes may include boards, cards, dice, arcade screens, score strips, option boards, counterfactual board-style grids, or rule panels when those elements are part of the visible game state.

Scene Boundary

A games scene is the stable game grammar: board topology, piece vocabulary, movement/capture/scoring convention, and answer interface. Keep one scene for a game family even when board size, palette, player color, piece skin, or camera style varies.

Create a new scene when the visible rules or board grammar change materially, for example a standard grid board vs a radial board, a card tableau vs a dice tray, or a board-only view vs a source-plus-option-board view if that scaffold changes the task contract.

Task And Query Boundary

Split tasks when the game reasoning program changes: choosing a legal move, computing the resulting board, counting captures, scoring a move, selecting an option board, or reading a status are separate objective contracts when their answer/annotation schemas or program skeletons differ.

Valid query_id axes include mirrored player color, row/column axis, direction, legal-piece type, threshold direction, or other bounded parameters inside one stable rule program. Do not use query_id to hide separate public objectives.

Annotation Policy

Prompt-facing annotation should stay on visible game witnesses: cells, pieces, move paths, merge pairs, captured groups, option boards, score/status readouts, or rule-table entries. Use map annotation when source and destination, before and after, or reference and candidate roles must be bound correctly.

For games counting tasks, prefer bbox / bbox_set / bbox maps when the counted witnesses are selectable area-like objects: grid cells, tiles, board squares, cards, bricks, gems, bubbles, blocks, discs, tokens, pellets, balls, or scoreable objects. Prefer point / point_set for localization-style tasks and compact feature witnesses where the answer is a specific center/location rather than a collection of counted objects, such as a selected option cell, first-hit object, impact point, endpoint, graph-like node, empty liberty, or completion point. Use segment / segment_set for row/column spans, merge links, paths, and shot trajectories.

Selected option bboxes are valid only when the option itself is a visual candidate board/panel or complete candidate artifact.

Rendering And Text

Repeated-unit game scenes should vary board/unit size and style when feasible, while computing annotation from the final layout. Board skins, tile palettes, piece treatments, lane skins, card/table chrome, and HUD style are scene-local visual axes.

Do not draw generic scene titles that merely name the game. Keep in-image text when it is part of the game grammar or answer interface, such as card ranks, coordinates, option labels, called-number headers, movement strips, or visible rule/status panels.

Required labels, readouts, and markers should use shared legibility helpers or the games-domain wrappers built on them.

Shared Code

Scene-local shared modules should contain board/rule state, legal move or scoring helpers, rendering, layout, style, text/marker helpers, and annotation projection. Public task files own target construction, answer binding, annotation binding, prompt slots, and task-specific trace fields.

Promote helpers to src/trace_tasks/tasks/games/shared/ only after multiple games scenes reuse them.