How AI History Run works
A maze with one way through, whose stations are the history of artificial intelligence, stored in a contract on Robinhood Chain that also grades every run.
What it is
The site does not hold the maze. A contract does: 961 bytes of map, the entrance, the exit, and twelve station cells with their labels. Your browser reads those bytes out of chain state and renders them as corridors. You walk. Each cell you cross is one move. When you reach the exit, you hand the list of moves to the contract, and the contract walks the same map with the same rules and decides whether that was a finish.
The maze
Because the maze is perfect, the path from the entrance to the exit is unique. The stations are placed on that path, spaced along it, so any walk that reaches the exit has passed every station, in order. Dead ends only add moves.
The stations
The year and the title are on chain as the station label. The one-line notes live only on the site.
Moves
0 up cell - 31 1 right cell + 1 2 down cell + 31 3 left cell - 1
The engine records a move every time your position crosses into a neighbouring cell. Corridors are one cell wide, so a crossing is always to one of the four neighbours. The moves are sent as bytes in calldata: a clean run is 260 bytes, a wandering one a few thousand.
The judge
verify(bytes moves) view returns (bool ok, uint32 steps, uint8 reached, uint16 stopped) submit(bytes moves) returns (uint256 index)
verify starts at the entrance and applies each move. A move off the grid, into a wall or with an unknown code ends the walk and returns where it stopped. Each time the current cell is the next station, the station counter advances. The walk is a finish only if all twelve stations were counted and the last cell is the exit. It is a view: the site calls it before sending anything, so you see the verdict for free.
submit calls verify and reverts with Rejected(steps, reached, stopped) if it is not a finish. Otherwise it appends a run, counts a finish for the sender, updates their personal best if fewer steps, and the record if fewer than anyone.
What it refuses
- An empty run, or one over 6,000 moves.
- A step off the grid or into a wall: the walk stops there and
stoppednames the cell. - A run that ends anywhere but the exit.
- A run that reaches the exit with a station missing. In a perfect maze this cannot happen by walking; only by forging the bytes.
- A run that does not begin at the entrance. Every run does, by definition: the first move is applied from the entrance cell.
The hall
The site lists the last fifty runs straight from the contract, the record, and the number of finishes. There is no server between you and that list.
The engine
A raycaster in plain JavaScript on a canvas. The wall textures are arithmetic and change with the era of the corridor you are in: riveted steel and dials for the fifties, circuit board for the eighties and nineties, server racks with lamps for the twenties. The floor is tiled and the ceiling carries a lamp every cell, both cast per row. The plaques are drawn on the fly with the Pons mark, the sounds are synthesized. The only image file is the Pons mark. On a desktop, click the view to capture the mouse; W A S D move and turn, Q E strafe. On a phone, the left half of the view moves and the right half turns. The minimap shows only the cells you have walked.
Contract
Labyrinth map, entrance, exit, stations; verify, submit, runs, board
no owner, no setters, nothing to withdraw
Tested against a fork of Robinhood Chain mainnet: a maze whose entrance is a wall is refused at deployment; the solution verifies; a detour verifies with two more steps; one step short, a step into a wall, off the edge, an unknown move, an empty run, a run starting at the second cell and a run over 6,000 moves are refused; a first finish sets the record; a shorter run takes it; a tie is a personal best but not a record; a rejected submit carries the reason.
$AIHR
An ordinary Pons coin on Robinhood Chain. It has no rights over the labyrinth.
