WallRiderLangWRL CORE 0.1.2 · FROZEN
THE REAL IDENTITY SPINE, IN YOUR BROWSER

Seal a world.

Type WRL Core world source on the left. It is desugared, parsed, validated, canonicalized and hashed as you type — by a JavaScript port of the same spine that runs inside TRVM Forge. The sem- ids below are real: the pinned conformance fixture seals here to the exact id every Forge battery folds against. Nothing is sent anywhere.

self-check: running…

World source
Canonical graph

      
Canonical artifact bytes

      
Desugared source

      
SemanticArtifactID

What this page is doing

desugar sugar.v2 parse strict world mouth validate typed codes canonicalize order-independent serialize sorted-key JSON sha-256 → sem-

The reference implementation's canonical bytes are json.dumps(artifact, sort_keys=True, separators=(",",":")). Every value in a sealed artifact is an ASCII string, an integer, a boolean, or a container of those — so a recursive key-sorted serializer reproduces those bytes exactly, and WebCrypto SHA-256 reproduces the id. That is why this playground can be honest rather than illustrative.

The serializer is hand-rolled rather than JSON.stringify for one reason: rotor lanes are BigInt. At w=64 a lane may legally reach 264−1, and a JS number cannot hold it — an authored 9223372036854775807 would serialize as 9223372036854776000 and quietly mint a different id from the arbitrary-precision reference. Lanes are exact here at any width. Every other artifact scalar is bounded to ±(253−1) and refused — never rounded — outside it.

What it deliberately does not do: lower to a backend, compile to interaction-calculus terms, or reduce to a Film. Those live in TRVM and are not a browser's job. This page covers the semantic half of the pipeline — everything up to and including identity.

Where this is stricter than the current Forge parser

Two mouths, one identity function. Every difference below is a rejection, so for every world both accept the canonical bytes are identical — no id can move across the gap. This is the intended Core 0.1.3 tightening, implemented in the browser first because this is the surface an author actually touches.

Things worth trying