Skip to content

Getting started

designed · Phase 1 (#29, #33, #39, #40) · PLAN §13.1, §22.7, §22.8

Two processes, no orchestrator, no containers (PLAN §13.1). Everything the engine needs is .NET 10; the clients need Node 22.

Run the stack

dotnet run --project src/NextIteration.Api       # engine + API on http://localhost:5000
npm run dev --prefix clients/app                 # Vite dev server on http://localhost:3000, proxies /api → 5000

or both at once:

scripts/dev.ps1     # Windows
scripts/dev.sh      # macOS / Linux

Open http://localhost:3000/ for the Universe Viewer and http://localhost:3000/dev for the Developer Studio. Create a universe with the village scenario from the Studio, or:

POST /universes  { "config": { "seed": 42 }, "scenario": "village" }
POST /universes/{id}/start

Run the tests

dotnet test                                   # unit + integration, full intended duration
dotnet test tests/NextIteration.Harness --filter milestone=phase-1    # the Phase 1 story milestone

Run the harness

dotnet run --project tests/NextIteration.Harness -- village --seeds 10 --days 10 --out out/
dotnet run --project tests/NextIteration.Harness -- village --seeds 1 --days 10 --golden --processes 2

The first writes summary.md, report.json and chronicle excerpts; the second is the determinism gate. See Harness.

Write a system

A system is one class implementing ISimulationSystem plus a manifest. The complete walkthrough is SYSTEM_DEVELOPMENT.md in the repository root; the contract is on Tick pipeline and systems; the rules that bite are on Determinism and in CLAUDE.md's invariants. Register it inactive by default until its increment's done-when passes (CLAUDE.md → PROGRESS TRACKING).

Edit this wiki

pip install mkdocs-material
mkdocs serve        # http://127.0.0.1:8000/, live reload
mkdocs build --strict

Section references like §7.3 are checked by scripts/check-docs.sh against PLAN.md's headings; links are checked by the strict build.

Publishing is automatic: a push to main that touches docs/ or mkdocs.yml builds the site in Actions, commits it to the site branch and deploys it to nextiteration.maurer.nu within about a minute (.github/workflows/docs.yml). Pull requests only build; nothing is published from a branch. Which version am I reading? The footer of every page names the source commit, the build time and the latest phase-* tag; /version.json carries the same; the site branch's history is the list of every published state, each commit named after the source commit it was built from.