evidence-grade environments for evaluating agents · WallRiderLang · TRVM

Write the wall. Run the world.
Keep the proof.

TRAAVIIS provides evidence-grade environments for evaluating agents, and proves what happened inside them. TRVM worlds are its strongest deterministic substrate. Write a world in WallRiderLang, and trvs lowers it to a content-addressed SemanticArtifactID, folds each episode into a replayable film, and verifies that film with every applicable check. Same world, same scenario, same trajectory — same hash, every time.

author the world run the episode record the film verify & replay
trvs — run captured · verbatim CLI output
$ trvs run worlds/alley.wrl
world sem-8ae91fe9cbc5fd086ce4356d587c403211e5c7b2b3ebdd316496367429ecfe4a scenario scen-2be578f63401d0a424be78f069cc81278efcb3469ae405ec66a2a340c26b8842 reducer ic_ref epochs 7 epoch film 1 56a2980eb5530db250848395 2 23c7c0cd5d2e7688f0be1b62 3 b9cd725ac52a876bf754b16c 4 2c2d8ac24faafa9e2492dea2 5 7cf6b32b260e16fba6952cbc 6 fb270e91d8d4ac3f2e3b5bc0 7 8c7bf5edcab3693a81de70ec film 8c7bf5edcab3693a81de70ec

Every terminal on this page is verbatim output from the real trvs CLI folding worlds/alley.wrl over the TRVM engine — nothing here is scripted. TRAAVIIS does not embed, select, or route a model; the shipped world commands call none. The same world always folds to the same identity and the same film; that is the whole point.

$ pipx install traaviis · then trvs doctor · needs the TRVM/forge engine on-path
authora WallRiderLang world file
runfold the episode, deterministically
rewardobjective, computed — not asserted
verifyreference · native · oracle
replaycontent-addressed evidence, reproduced

Two researchers should be able to answer four questions and never argue about the answers: did we run the same world, the same scenario, the same trajectory — and did the verifiers agree? That is what a content-addressed environment is for. Reward is a computed number over a proven film, not a claim.

Identity

A world is what it means, hashed.

trvs id lowers the source to its canonical semantic graph and hashes it. Presentation — where a node sits, its colour, the wire curve — never enters the hash; a rotor or a rewire does. Two files that mean the same world print the same SemanticArtifactID; one meaningful edit and the id moves. It is the world's fingerprint.

trvs — id captured · verbatim CLI output
$ trvs id worlds/alley.wrl
sem-8ae91fe9cbc5fd086ce4356d587c403211e5c7b2b3ebdd316496367429ecfe4a

semantic

sem-… — the world's meaning, geometry-independent.

scenario

scen-… — the run inputs, deliberately kept out of identity.

film

the per-epoch evidence the deterministic fold produces.

Verifiable

Prove the film. Show the coverage.

trvs verify folds the world through the pure-Python reference reducer, re-folds it through the compiled native reducer, and cross-checks both against an independent hand-written oracle where that oracle's domain applies. A film is not asserted — it is checked by every applicable verifier, and the coverage is explicit. Golden Spinner agrees 3/3; a verifier that cannot apply is reported not_applicable, never as pass or fail.

trvs — verify captured · verbatim CLI output
$ trvs verify worlds/alley.wrl
world sem-8ae91fe9cbc5fd086ce4356d587c403211e5c7b2b3ebdd316496367429ecfe4a scenario scen-2be578f63401d0a424be78f069cc81278efcb3469ae405ec66a2a340c26b8842 reference native oracle agreement 3/3
certificate · triple fold agreement · exit 0
reducers reference native oracle
filmic_ref = ic32 = oracle — byte-for-byte
exit0 agree · 1 disagree · 2 unavailable
Replayable

Pin a film. Prove it reproduces. Diff two worlds.

A film is content-addressed evidence. trvs replay re-folds a world and, given a pinned --expect id or --film hash, asserts the fold reproduces it — exit 0 when it does, 1 when it drifts. trvs diff folds two worlds and marks the first epoch where their films diverge. This is the replayable-reward substrate an RL loop can gate on.

trvs — replay --expect captured · verbatim CLI output
$ trvs replay worlds/alley.wrl --expect "$(trvs id worlds/alley.wrl)"
world sem-8ae91fe9cbc5fd086ce4356d587c403211e5c7b2b3ebdd316496367429ecfe4a scenario scen-2be578f63401d0a424be78f069cc81278efcb3469ae405ec66a2a340c26b8842 reducer ic_ref epochs 7 epoch label film 1 set rotor = quar 56a2980eb5530db250848395 2 idle pulse tick 23c7c0cd5d2e7688f0be1b62 3 set rotor = 256. b9cd725ac52a876bf754b16c 4 reset orb fault 2c2d8ac24faafa9e2492dea2 5 set rotor = 128. 7cf6b32b260e16fba6952cbc 6 idle pulse tick fb270e91d8d4ac3f2e3b5bc0 7 set rotor = 10.0 8c7bf5edcab3693a81de70ec final film 8c7bf5edcab3693a81de70ec reproduced ✓ yes
trvs — diff captured · demo world vs an n=4 variant
$ trvs diff worlds/alley.wrl worlds/alley_n4.wrl
a sem-8ae91fe9cbc5fd086ce4356d587c403211e5c7b2b3ebdd316496367429ecfe4a (alley.wrl) b sem-24cf1b583f925ed27a4107272064546019a7042dd902f0a415786bc57b0f6113 (alley_n4.wrl) identity ✗ differ epoch a film b film 1 56a2980eb5530db25084 cefc85b866ab3430a66f 2 23c7c0cd5d2e7688f0be 0a18b4ed95946e59b1c4 3 b9cd725ac52a876bf754 52cecf7a5f31f9c731e3 4 2c2d8ac24faafa9e2492 b1258d4f2293c12e9043 5 7cf6b32b260e16fba695 d6e497c2efae09f87bdb 6 fb270e91d8d4ac3f2e3b 5d1fe6a506110328aca9 7 8c7bf5edcab3693a81de 318829a5c9bf543272c6 first divergence epoch 1
Legible

See exactly what you wrote — as the engine sees it.

trvs inspect shows the lowered world: every actor with its resolved static config, every edge with its kind, and any diagnostics. The named rotor quarter_turn_z has already become [181, 0, 0, 181]; the wires carry their semantic kind. Nothing hides between your source and its identity.

trvs — inspect captured · verbatim CLI output
$ trvs inspect worlds/alley.wrl
world sem-8ae91fe9cbc5fd086ce4356d587c403211e5c7b2b3ebdd316496367429ecfe4a profile forge.world.core.v1 actors 6 edges 4 diagnostics 0 actors d0 door ob orb p0 pulser clock=['periodic', 2, 0] p1 pulser clock=['once', 1] r0 relay sp spinner configurable=True n=8 rotor=[181, 0, 0, 181] w=16 graph p0 --SignalWire--> r0 p1 --SignalWire--> d0 r0 --SignalWire--> sp sp --SocketControl--> ob
The terminal

One honest workflow.

trvs is a small, stable surface. Seven commands ship today and fold real worlds over the TRVM engine; the rest are the environment surface that turns a subject into something an agent can be evaluated against. Its beachhead is trvs eval-one — a one-shot evaluation of a single frozen subject. Nothing below embeds, selects, or routes a model.

trvs doctorengine location, versions, verifier availabilityshipped
trvs idthe world's SemanticArtifactID — pure identityshipped
trvs inspectactors, edges, resolved config, diagnosticsshipped
trvs runlower + deterministically fold; per-epoch filmshipped
trvs verifyreference · native · oracle agreement (strict)shipped
trvs replayre-fold a film and assert it reproducesshipped
trvs diffcompare two worlds' identity + per-epoch filmsshipped
trvs eval-oneevaluate one agent run over one frozen subjectshipped
trvs verify-episodere-verify a saved episode with no agent processshipped
trvs initscaffold an environment for a substrate templateshipped
trvs packclose a scaffold into a verified, reopened packageshipped
trvs evalrun an agent over a split, score every episodeshipped
trvs serveexpose an environment to an agent (ORS · MCP)later

shipped commands are real over the engine today. planned commands describe the environment surface below and are not yet built — they are the published roadmap, not a claim.

The environment surface · planned

A neutral kernel. Protocols are adapters.

A tool list tells an agent what it can call. It does not define tasks, splits, rewards, episode completion, or reset. So TRAAVIIS's internal contract is a neutral Episode Kernel — and public protocols are adapters over it, not runtime law. The Open Reward Standard is the first and primary adapter; MCP is a compatibility adapter; a local JSONL surface is for automation and debugging.

startprepare a subject for a task
observedeterministic projection of state
stepone action → advance to next boundary
resetreconstruct initial state (≠ replay)
finalizeseal trace + outputs; pin episode receipt

The kernel carries no substrate semantics; any verb may be unsupported. Evidence Residency v1 is one-shot and implements only start → finalize. For the TRVM profile, observe is a label-free projection and step advances the fold to an epoch boundary.

primary adapter — trvs serve world.trvs --ors
The Open Reward wire surface — list_tasks · session · call_tool → reward · finished — over the neutral kernel. Runs locally; exportable to training stacks. not yet built
compatibility adapter — trvs serve world.trvs --mcp
The same world as MCP tools / resources / prompts, wrapping the kernel — never the source of truth. not yet built

Strategy: do not compete with hosting catalogs. TRAAVIIS aims to be one of the best ways to author deterministic environments that export to them.

The artifact ladder · planned

One clean question each.

TRAAVIIS separates what a thing means from how it is shipped. The environment contract (env-…) fixes the subject, tasks, rewards, and splits; the outer package (bundle-…) carries presentation and docs and may change without moving env-…. Each layer answers exactly one question, and re-scoring a trace never pretends the behavior changed. The lowest rung is the substrate subject, sealed differently per substrate; everything above it is shared.

substrate subject

same subject? TRVM seals sem-… + scen-…; Residency seals snap-….

rew-… · task-…

a reward rubric, and a task binding subject + prompt + reward + termination.

trace-… · episode-…

the observable record (TRVM's film-… is its exact-trace case), and the receipt.

env-… · bundle-…

the environment contract, and the transport package — identity vs. shipping.

Evaluation before training · shipped

Prove the environment before you train in it.

The first job is not a trainer, and the first interface was not a batch — it was a one-shot trvs eval-one over a single frozen subject. Now that that is boring, trvs eval runs a whole split and emits one episode-… per task. Because every episode is verified and content-addressed, the numbers are reproducible and each trace is re-checkable on its own, with no agent process.

trvs — eval real output
$ trvs eval lab-pkg --split test --output episodes/ --agent python3 agent.py
[1/2] task-082e11c181f3be21aa82e138 ok reward 1 [2/2] task-0cd4992e274e07fc7da0bddd ok reward 1 environment env-aa7df5dde4a4999e4ddedff40a9fc2d0de039… split test (2 tasks) episodes task-082e11c181f3be21aa82e138 ok reward 1 episode-cfef6da48401cdb434c4d05a11715c527f29db19e… task-0cd4992e274e07fc7da0bddd ok reward 1 episode-01bea141effec36b35d4341516051d918d61a07ab… ok 2/2 mean reward 1 episodes kept 2/2 evaluation episodes/evaluation.json

Verbatim output, ids truncated to fit. The package is reopened and every task-/rew-/snap- re-derived from the bytes on disk before the first agent process starts, so a tampered package costs zero episodes. eval mints no new id: the ladder stops at env-…, so its evaluation.json is an index over episodes that are each already content-addressed.

ok and episodes kept are two lines because they answer two questions: what the evaluation found, and whether the evidence you asked for is still on disk. A run can be fully ok and still have failed to retain its own proof — and a score with no retained proof is not a result you can take away. The exit code reads them in precedence: 0 all ok and all kept · 1 ran and disagreed · 2 could not run, or could not keep what was asked for.

Flagship worlds

One proves the mechanism. The next one earns the thesis.

The Spinner is the conformance artifact — exact, tiny, already folding three ways. Evidence Residency is the first end-to-end environment that shows what evidence-grade agent evaluation actually looks like. Two more worlds widen the surface after it lands.

Golden Spinner shipped

The identity, replay and triple-fold tutorial. Installs, verifies, and reproduces byte-for-byte. Proof that the mechanism is real.

Evidence Residency next

An agent inspects a frozen repository, finds one real spec/implementation inconsistency, cites the conflicting evidence, proposes the smallest patch, runs the declared checks — and returns a structured finding plus a re-verifiable receipt. The first evidence-grade evaluation environment.

Courier / Factory planned

Move objects, open gates, route signals, spend energy, obey safety constraints, complete deliveries — spatial state, long-horizon tasks, objective rewards, resets, splits.

WallRider / Graffiti planned

An agent moves through a city and writes executable tags that alter surfaces, routes and permissions. It proposes graph edits; TRVM decides what they mean. The brand demo.

Where the seams are

TRAAVIIS is the product. It stands on a stack.

The boundary is frozen on purpose. trvs carries no world semantics — it packages capabilities the layers below already provide, for someone who does not know the internal history of TRVM.

TRAAVIISthe product — CLI, environment surface, evaluator, packaging
trvsthe command-line interface
TaskSpecV1the substrate-neutral assignment + evaluation contract
WallRiderLangthe language for TRVM worlds, actors and world rules
Forgethe compiler, identity and artifact pipeline
TRVMthe deterministic execution substrate
Spinner Benchthe reference workbench and conformance laboratory
Primitives, not features

What TRAAVIIS is not.

trvs is a thin, honest terminal over an engine that already exists. Its credibility comes from what it refuses to do.

Not a coding agent

trvs builds and proves environments. It is not another Claude Code, not a chat interface.

Not a model router

TRAAVIIS does not embed, select, or route a model. The fold is deterministic; the reward is computed. Evaluation runs an agent command supplied by the user.

Not an RL cloud

Worlds run locally. TRAAVIIS authors environments that export to hosting stacks — it is not the catalog.

Not a game engine

WallRider worlds are deterministic agent environments, not a rendering or physics engine.

Not the language or engine

WallRiderLang defines a world; TRVM/Forge lower and fold it. trvs carries no world semantics.

Not trust-me

Every film is checked by every applicable verifier and content-addressed. Disagreement is exit 1, not a warning.