Arena
Where this fits
Section titled “Where this fits”Arena is the during-turn, operator-initiated comparison surface in the conversation quality lifecycle. You run the same prompt against multiple configured models, inspect bounded metadata, then accept, dismiss, stitch, or merge a winner into the session.
Shadow Evals measure change across sessions; arena compares models inside a session before you commit to one answer. That makes Arena a decision-forum concept, adjacent to the Sessions continuity family rather than a session restore/checkpoint primitive.
Changes live output?
Section titled “Changes live output?”Only after you accept (or auto-select accepts for you). Until then, status
surfaces are metadata-only — no candidate bodies in /arena or
bmo arena status.
Reach for it when
Section titled “Reach for it when”You want two or more model voices on the same prompt — for example before merging a docs paragraph, recipe tweak, or verified worktree change — without guessing which model answered best.
Inspect
Section titled “Inspect”| Job | Route | What it shows |
|---|---|---|
| Maintainer posture | bmo arena status [--session-id] [--json] | Detached/live posture, enablement, eligibility, candidate totals, latest round summary |
| TUI round launcher | /arena | Same snapshot plus create-round form |
| Remote / agent | GET /v1/sessions/{id}/arena/status, get_arena_status | Parity read surface (mutations stay on create/accept tools) |
The snapshot never includes raw prompt text, candidate bodies, validation stdout, diffs, or worktree paths.
Walkthrough: docs paragraph shootout
Section titled “Walkthrough: docs paragraph shootout”You are refactoring this feature page and want two model voices on the opening copy before merge.
| Step | Action | Question answered |
|---|---|---|
| 1 | Enable [options.arena] with mode = "text" and two models | Is arena armed for this workspace? |
| 2 | Open /arena in an active session | What is eligibility and session-bound posture? |
| 3 | Enter a prompt and create a round | How many candidates ran and in what state? |
| 4 | Review metadata in /arena or chat; accept one candidate | Which answer becomes the next assistant message? |
Optional: pair with Shadow Evals when
auto_select_policy = "eval_shadow" — a separate, opt-in policy that picks a
winner from shadow scorecards for the same session and user message.
Creating and resolving rounds
Section titled “Creating and resolving rounds”- TUI:
/arena— inspect status, enter a prompt, optionally override models. - Agent / MCP:
create_arena,arena_accept,arena_dismiss, stitch, merge. - HTTP: session/message arena routes for remote clients.
Verified mode
Section titled “Verified mode”Set options.arena.mode = "verified" for worktree-backed candidates with an
optional validation_command. Arena status reports whether the current working
directory is eligible (valid Git checkout with at least one commit).
Related
Section titled “Related”- Conversation quality — lifecycle map
- Concept Map — where Arena sits in the docs taxonomy
- Sessions — session lifecycle, branches, and checkpoints
- Shadow Evals — across-session measurement;
eval_shadowauto-select - Slash commands
- CLI commands
- Configuration reference
- Implementation notes: arena topic
