The contract
obs carries the same fields your local-gym policy reads (proximity in
the same {"left","right"} dict form, collision, sensor_valid), so a
policy trained in LocalDreamEnv certifies unchanged. Two differences: the
exam adds t (tick index) and has no frame (the physics world has no
camera), and sensor_valid is always 1 there, because exact physics has no
post-reset settle window. Do not depend on it:
act returns an action in the wheel-fraction vocabulary:
wheels. The returned
wheels flow through the exact same downstream path as an evolved genome, so a
genome wrapped as a Policy reproduces its exam verdict bit for bit. This is
the acceptance test we run before every deploy.
Submit it
policy on an exam-only job:
The sandbox
Partner code is trusted and key-gated, and it runs locked down:- No network egress (blocked at the socket layer; the exam needs none).
- No subprocess or shell spawning.
- Resource-limited (memory + total CPU) and time-limited per call. A runaway or erroring policy fails the job; it never silently scores.
act(). Ship a Python module, not a converted graph.
What stays frozen
The policy is the only new degree of freedom. The world, spawn slots, episode count, control tick, proximity remap, scoring, and the anti-exploit control arms (the cruiser that must fail) are identical to every other exam, so your verdict is comparable to the whole program history.Want an SNN-native observation (spike trains, richer sensor channels) rather
than the proximity/collision contract? That is an extension we design with
you. Tell us your policy’s IO.

