SCENARIOS / SINGLE DATA TABLE
Data

Single Data Table

One passive Person table that shows off the faker data generators.

Sync FSM
FAKER {firstname} {email} {city} {number:..} {uuid} render PERSON one passive row per entity
SCHEMATICData
Clock event
Update Synchronous
Entities 1 (Person)
Rows spawn.seed (250 default)
Columns 41 faker (33 string + 8 numeric)
Behaviour Passive — one absorbing state
OVERVIEW

A pure data-generation scenario. A single Person machine sits in one absorbing state and never moves; the work all happens once, when each row is created. Every field uses func: faker — 33 string dimensions (names, contact, address, employment, internet, finance, and pattern templates) and 8 numeric measures (bounded number draws plus latitude/longitude). With no seed file, the spawn.seed count drives the engine to generate each row from its templates, so one turn produces the full, final table.

The canonical reference for the faker strategy: it shows which gofakeit generators render as a string dimension versus a numeric measure, and how templates compose — single tokens, multi-token templates, generator arguments, and the digit/letter fill-character patterns. It is also the quickest path to a realistic flat table of people for seeding demos, fixtures, or load-testing a downstream pipeline.

TRAITS
Sync
Advances on a single global clock
FSM
Entities are finite-state machines
SCHEMA

Linked tables with guaranteed referential integrity.

TABLECOLUMNSDESCRIPTION
person ID, full_name, email, phone, full_address, company, job_title, card_type, badge_id, uuid, signup_date, bio, age_years, salary_usd, credit_score, latitude, longitude, current_state One row per Person: 41 faker-generated columns (33 string dimensions + 8 numeric measures) spanning identity, contact, internet, address, work, finance and miscellany, plus the engine's ID/Age/state columns.
LIVE API

Generated REST endpoints. Also exposed as MCP tools.

POST /scenarios/single-data-table/experiments Seed a new table of people
POST /scenarios/single-data-table/experiments/{eid}/run Advance one turn to materialise the table
GET /scenarios/single-data-table/experiments/{eid}/entities/person Query the generated person rows
GET /scenarios/single-data-table/experiments/{eid}/events Append-only event log
GET /scenarios/single-data-table/experiments/{eid}/dataset Download the exported dataset
SEMANTIC LAYER

OSI-compatible definition, emitted with the dataset.

# single-data-table.osi.yaml — emitted automatically
semantic_model:
  name: "single-data-table"
  source: "duckdb://single-data-table.db"
  entities:
    - name: person
      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'"