Docs › Competition
5. The sandbox and the time rules
When you upload, and for every match, your bot runs in an isolated container:
- no network, no access to files outside your bot, read-only filesystem
- 512 MB of memory, 1 CPU, 64 processes
- a fresh process every match
Time limits (the platform measures time itself, from when it sends the state to when it gets your answer):
| Call | Limit | If you break it |
|---|---|---|
reset(config) | 2 seconds | the upload is rejected, or in a match your bot is disqualified |
each act(obs) | 50 ms | that decision is ignored: your bot goes straight, and you get a strike |
| no answer at all for 1 second | your bot is killed and plays straight for the rest of the match |
- An exception or an answer other than
0,1,2also makes that decision "straight". - Occasional slow decisions are fine and only cost you that move. A bot that is late on more than 20% of its decisions (once at least 50 have been played), or that keeps the match waiting more than 20 seconds in total, is disqualified from that match: it plays straight, and the match is recorded with your bot as crashed. Upload validation uses the same rule, so a bot that is slow every time is rejected before it ever plays.
- Do your heavy setup in
reset()(2 seconds), not inact().
Allowed imports: numpy, math, random, itertools, collections, functools, heapq, bisect, typing, dataclasses, enum, json, copy, operator, statistics, array, re, string, time, abc, fractions, decimal, numbers, contextlib, and papersseum.
Blocked: eval, exec, compile, open, __import__, input, breakpoint, globals, locals, getattr, setattr, delattr, vars, from x import *, interpreter-escape attributes such as __subclasses__ and __globals__, raw numpy.load / numpy.fromfile, and torch. The upload check names the offending line and the reason.
Do not try to escape the sandbox, tamper with the platform or other bots, or abuse the service. Attempts get a bot banned.