Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Limits and budgets

These values describe the checked-in Ants registration and deployment configuration as of 27 September 2026. A deployed competition’s announced rules take precedence if its configuration differs. Byte units are binary: 1 KiB = 1,024 bytes and 1 MiB = 1,048,576 bytes.

Model and adapter

LimitCurrent valueApplies to
Maximum size metric64 MiBLargest eligible class; no season may set a class above it
Memory a class may allow, at most262,144 flat bytes, and 16 bytes a cellThe two numbers a season sets per class
ONNX opset range13–19 inclusiveThe platform’s window; a season sets its own
Manifest ABIorion:model@1.0.0manifest.json
Adapter operations1,000,000Each declared input’s adapter, per evaluation
Adapter boundary dtypesbool, i8, u8, i16, u16, i32, u32, i64, u64, f32, f64Tensors an adapter hands the graph
Probe inferences at admission5, at probe_dims; the median must fit the turn, 1,000 msWhether the graph runs at all, and fast enough to answer a turn (models.max_probe_ms in Kalam’s runner template)

The size metric is bytes(model.onnx) + bytes(manifest.json), uncompressed. The class table has all five size boundaries, and the format page lists the configured ONNX operators. No class has a compute cap of its own; the probe’s turn applies to every class.

Ants matches

SettingCurrent value
Players on a board2 to 8, fixed by each board
A board’s sides24 to 124 squares each
Squares on a boardat most 14,880
Maximum turns1,000
Turn deadline, per seat, covering its adapters and its inference1,000 ms
View radius squared77
Attack radius squared5
Gathering radius squared1
Strikes before forfeit5 cumulative per match, unless the season sets another
Stalemate duration150 consecutive qualifying turns
Domination thresholdAt least 85% of the population: every living ant, each colony’s hive counted once per standing hill, and every food on the board

The map table gives dimensions and generation inputs. Strikes are platform accounting. Under the game rules, an ordinary illegal move into water leaves the ant in place.

Admission and submissions

SettingCurrent value
In-flight candidate slots1 per model per season, covering testing and verified; a season may also cap the total across your models
Admission polling interval20 seconds
Admission batchUp to 4 candidates per run
The admit clock’s hold on a prepared submission180 seconds
A runner’s admission claim600 seconds
Admission attemptsAt most 3, then PROBE_TOO_SLOW if every attempt’s probe was over the turn, otherwise TIMED_OUT
Reference observations played at admissionThe first 64 of the reference set, each inference allowed 5,000 ms
Upload window, and the URLs’ lifetime30 minutes from the first POST
Trial repair limit3 trial rows
Trials no runner could load the candidate for3, counted apart from the repair limit
Submission endpoint rate1 request/second, burst 5, per authenticated principal

Season quotas

These have no platform-wide value. Each is absent unless the season declares it, and absent means no limit, so the table below lists what a season may set. GET /v1/games/{game}/submission reports your standing against the first six before you make a request.

RuleWhat it caps
entries.max_per_userhow many of your models may enter the season
entries.in_flight_maxhow many of your versions may be in admission at once
entries.versions_max_per_modelversions one model may enter
entries.versions_max_per_userversions you may enter across every model
entries.cooldown_sthe gap between one model’s submissions
entries.max_per_classhow many of your models may sit in one weight class: declared by the season, and not yet enforced
classes.allowwhich weight classes may be entered at all
graph.params_maxa parameter ceiling, independent of the byte cap
graph.opset_min / opset_maxthe ONNX opset window the season admits under
graph.op_allowlistthe operator set, narrowing the platform’s
unique_weights.scopewhether two entries may stand on the same weights

A rate limit overrides neither the one-candidate-per-model rule, the unique-weights rule nor any quota the season declares. The admission timeout guarantees no total turnaround time, and its validation deadline is longer than the turn deadline in a match.

Ratings and scheduling

SettingCurrent value
Initial rating mean25
Initial uncertainty8.333333333333334
Displayed ratingmu − 3 × sigma
Provisional uncertainty thresholdGreater than 3
Placement target / initial request cap8
Steady-state request cap2
Successor uncertainty multiplier2, capped at initial uncertainty
Requested cross-class fraction0.20, with pool-dependent fallback

These are policy settings, and they guarantee no competitor a match rate. Read Ranking before you interpret an idle or provisional entry.

Where values come from

Ants’ cartridge.json declares the limits every season’s board must fit (limits.boards, the three board rows above), turn limits, and the adapter budget. A season’s boards are its own: an admin uploads them, and GET /v1/games/ants/seasons/{slug}/maps lists them. The engine source implements geometry and game-ending rules. The season fixes the size boundaries and every quota in the table above, in the database, and Soma’s admission clock judges against them. The Orion templates in Soma’s and Kalam’s docker/ configure opsets, trials, ratings, scheduling and the operation budget the node enforces. The repositories page names each owner.