SCENARIOS / SC-001 / GAME OF LIFE
SC-001 Cellular Automaton

Game of Life

Conway's automaton as a perfectly observable, deterministic grid world.

Sync Tick Spatial FSM
SC-001 / SCHEMATICCellular Automaton
Clock 240 Hz tick
Update Synchronous
Grid 20² toroidal
Cells 400
Observability Full
OVERVIEW

Conway's Game of Life rendered as a queryable data model. The board is a toroidal grid of cells, each an independent finite-state machine whose next state is a pure function of its eight neighbours. A generation runs as a two-turn protocol: living cells broadcast a message to their neighbours, then every cell counts the pings it received and applies the birth/survival rule. Because the update is synchronous, the outcome is identical no matter what order the cells are stepped in.

A clean, fully-observable testbed for spatial and temporal reasoning. The rules are trivial and deterministic, so any discrepancy between a prediction and the next board is unambiguously the predictor's — there is no hidden state to blame. Seeds include the classic still-lifes, oscillators and a glider.

VISUALIZATION

A live replay of a simulation run — scrub, step and explore.

Generation replay — Conway's automaton, board by board FULLSCREEN ⤢
TRAITS
Sync
Advances on a single global clock
Tick
Discrete fixed-step time
Spatial
Entities have position & topology
FSM
Entities are finite-state machines
SCHEMA

Linked tables with guaranteed referential integrity.

TABLECOLUMNSDESCRIPTION
cell ID, row, col, live_neighbors, generation, north_id, north_east_id, east_id, south_east_id, south_id, south_west_id, west_id, north_west_id, current_state One row per cell: grid coordinates, the eight Moore-neighbour references, the live-neighbour count and the ALIVE/DEAD state.
LIVE API

Generated REST endpoints. Also exposed as MCP tools.

POST /scenarios/game-of-life/experiments Seed a new board
POST /scenarios/game-of-life/experiments/{eid}/run Advance the board N generations
GET /scenarios/game-of-life/experiments/{eid}/entities/cell Read the live board, one row per cell
GET /scenarios/game-of-life/experiments/{eid}/events Append-only transition log
GET /scenarios/game-of-life/experiments/{eid}/dataset Download the exported dataset
SEMANTIC LAYER

OSI-compatible definition, emitted with the dataset.

# game-of-life.osi.yaml — emitted automatically
semantic_model:
  name: "game-of-life"
  source: "duckdb://game-of-life.db"
  entities:
    - name: cell
      primary_key: id
  dimensions:
    - name: state
      type: categorical
    - name: t
      type: time
  measures:
    - name: row_count
      agg: count
    - name: active
      agg: sum
      filter: "state = 'ACTIVE'"