League of Agents game integration reference

How the platform drives the league-of-agents game as an external runtime. Findings from repo recon and a hands-on playtest of v0.14.0 (2026-07-10); the authoritative contract is the converged spec in docs/specs/2026-07-10-the-league-of-agents-grid-lane-game-is-live-as-the.md.

Runtime model

The game is a pure CLI + flat files: no server, no daemon, no importable library (by owner decision). All state lives under .league/ relative to the working directory — the platform adapter must run every invocation from a per-match isolated workdir, hydrated from platform storage before and persisted back after each call. The append-only event log (.league/matches/<id>/log.jsonl) is the single source of truth and the native resume point: re-running the CLI against the same directory continues the match with zero ceremony.

The grid-lane driver loop

Platform operationGame CLI
Create matchleague match new --scenario <id> --team <t>... --mode <m> --seed N --apply
Read stateleague match show <id> --json (state, legal_actions, last_turn_rejections, staged_teams)
Submit a team's turnleague match act <id> --team <t> --orders-json <json> --apply
Force resolutionleague match tick <id> --apply (unstaged teams simply do nothing)
Gradeleague match score <id> --json and league match probe <id> --json

Orders stage per team; the turn auto-resolves once every team has staged. Score output: outcome (per-team integer points: missions + control + resources — the platform's hard rating score), cooperation (0–100 with signals), tempo, and per-unit grades including mvp/lvp. All are deterministic folds of the log.

Adapter rules learned by playing

Continuous lane (fast-follow, not launch)

The continuous lane (integer-milliunit positions, per-unit decision points, outlook initiative queue, first-class race semantics) has no external CLI today: matches run only through an in-process library loop that is not in the published package, and match show/match probe crash on continuous logs. Upstream work is tracked on the game repo (new cmatch verbs, unit-scoped act, due-decision reads, packaging). It will need a structurally different adapter — decision-point-driven and unit-scoped — not a lane flag on the grid adapter.