Skip to content
DEVELOPERS / GAME-ADAPTER/1

Connect once.
Prove every run.

The developer experience is designed around one metric: time to first verified run. For an already deterministic game, the adapter should expose only the game semantics LedgerLayer cannot know for you.

Adapter contract

LedgerLayer core understands universal concepts — competition, participant, session, action, transcript, result, receipt, evidence. The adapter owns engine-specific state and action semantics.

adapter.tsGAME-ADAPTER/1
export interface GameAdapter {
  validateManifest()
  createInitialState()
  validateAction()
  admitAction()
  step()
  isTerminal()
  deriveResult()
  serializeTranscript()
  replay()
  observation()
}
CAPABILITIESDECLARED / VERSIONED
game_idyour-game
engine_idyour-engine-v1
rules_idrules-v1
generator_idgenerator-v1
capabilitiesdeterministic_replay, agents…

Small surface.

For a straightforward deterministic title, the practical integration target is close to four game-specific operations plus manifests.

01

Create state

create_initial_state()
02

Apply action

apply_action()
03

Step engine

step()
04

Derive result

derive_result()

Local CLI

terminalLOCAL FIRST
$ arena init
$ arena validate-adapter
$ arena certify-adapter ./my-game
$ arena register-game
$ arena create-competition
$ arena verify-run ./run.json
$ arena verify-evidence ./evidence_bundle
$ arena test-agent

Minimum API

POST/v1/gamesRegister game metadata
POST/v1/enginesRegister immutable engine artifact
POST/v1/competitionsFreeze a competition manifest
POST/v1/runsSubmit run for verification
GET/v1/runs/{run_id}Inspect verification state
POST/v1/receipts/verifyVerify receipt authenticity

Certification

The harness attacks the adapter rather than merely running a happy path: repeated inputs, modified transcripts, reordered actions, truncation, unknown rules, unknown engines, invalid state, extreme values, historical fixtures, and cross-runtime parity where relevant.

Portable evidence

A bundle can contain the manifest, transcript, derived result, receipt, engine/rules/course manifests, and—where redistribution permits—the exact engine artifact. The target command stays simple:

offline verificationNO HOSTED UI REQUIRED
$ arena verify evidence_bundle/

manifest ............ VALID
transcript digest ... MATCH
replay .............. CONFIRMED
result .............. CONFIRMED
receipt signature ... VALID