Skip to main content

Runner environment contract

The first environment is exepert-runner@runner-v1. Its kernel exposes manifest, reset, step, snapshot, restore, and close. State advances at a fixed 60 Hz using integer/fixed-point values. Gameplay RNG and cosmetic RNG are independent; cosmetic choices cannot change transition digests.

Actions and observations

The discrete action contract is stable for runner-v1:

ValueAction
0Wait
1Jump

Each step returns a normalized 12-value observation covering player vertical position and velocity, grounded state, obstacle distance/geometry/presence, pickup distance/height/presence, and game speed. The manifest is the machine-readable source for ordering and numeric bounds.

Reward and termination

  • +0.01 for a survived step
  • +1 for collecting a pickup
  • -1 on collision
  • terminated on collision
  • truncated at the configured limit, never above 10,800 steps

Every result includes observation, reward, terminated/truncated flags, transition metadata, a snapshot, and a deterministic fnv1a64 state digest. Snapshots are versioned and validated before restore.

Artifacts and conformance

Manifest schema 1 and trajectory schema 1 are independent of the app version. A trajectory begins with one header, contains action/result step records, and ends with the final digest and outcome. An interrupted run writes an explicit aborted: true end record. Replay verifies the recorded digest instead of presenting an incompatible run as successful.

Conformance runs the same seed/action sequence through the direct kernel, Node worker, browser adapter, and replay path. Transition and final digests must match exactly. This guarantee is scoped to environment transitions—not model weights, wall-clock timing, rendering pixels, or floating-point training code.