mino.mobi · civ

civ — the world engine suite

One deterministic stack from planet to person, spread across four sites and unified here. mappa generates the world; civ runs ten millennia of emergent history on it; polis grows the cities; names and org mint the people, cultures and institutions that populate all of it. Every layer is a pure function of a seed — a URL is a world, a run, a city, a company.

I The planet

10 000 km · geology
reference layer

A dependency-free procedural planet: tectonic plates → elevation → climate → Whittaker biomes → rivers. The same integer seed yields the same world in node, browser, or Worker — everything downstream imports mappa/engine.js rather than forking it.

Deep-time climate forcing, an interestingness battery scoring each world, and ?w= permalinks that are the world config.

civ runs directly on a mappa world — the world seed you pick below is a mappa seed, and every run cross-links to the planet it happened on.

II The history — this site

10 000 yr · civilizations
live · API

A coevolutionary agent-based civilization simulation. Individuals turn over by birth and death; lineages, cultures and institutions carry identity across ten millennia. Nothing about eras is scripted — agriculture and industry are emergent phase transitions.

One run is a pure function of (world, config, civSeed, ticks): the same URL regenerates the same chronicle, bit-identical at the edge and in your browser, and edge-caches forever.

The timeline tells any run in three lenses: great man of history (prophets proclaim, leaders raise states, the eminent are remembered with temperament and vocation), sweep of historical forces (phase transitions, climate pulses, credit cycles, meme selection — with belief doctrine vectors and the evolved institution rulesets), or the history of technology (first inventions, independent reinventions, diffusion milestones). Filter any lens to one named continent. Cities are actors (engine epoch 2): settlements emerge wherever mappa's rivers, coasts and resources concentrate people, agglomerate (urban gravity raises carrying capacity), build walls once their culture knows masonry, stand sieges, get sacked, fall and revive — each an org-of-orgs containing the institutions seated there. Their shock history flows into polis as boundary conditions: the world beyond drives the city, not the reverse. Major organizations link straight to their org chart. Climate is visible everywhere it acts: a forcing ribbon under the playback, a FRED series, and timeline onset / peak / release entries.

Every page takes a mesh resolution (900-cell standard up to 2400 fine): above the edge cap the run computes in your browser — same engine, bit-identical — just finer coastlines, more homelands, slower.

The tech tree (engine epoch 3) is a 24-capability prerequisite DAG — no scripted eras, behaviour branches only on capabilities held. Its agricultural spine is vendored from the cards tech pool: granary → crop rotation → seed drill → fertilizer → green revolution, plus terracing (pays only on slopes) and the water works wells and aqueduct. Each is a real mechanic, not a badge: the agtech ratchet multiplies effective carrying capacity (a green-revolution culture feeds ~2.4× what its land alone would — the ratchet Malthus missed), while the fresh-water balance pushes back — per-cell thirst scales with density, supply comes from mappa's rain, rivers and lakes, and where demand outruns supply a water multiplier caps K until wells or aqueducts lift it. Both ledgers run in FRED (energy.*, water.*), and industrial energy is now geographically sourced: coal and oil are mappa resources, and fossil output depends on actually holding the deposits.

CORS-open, no-key API: /api/civ/run · /api/civ/frames · /api/civ/sweep · /api/civ/sites · /api/civ/timeline?mode=greatman|forces · /api/civ/health

a civ chronicle names homelands, dynasties and states — the founding conditions a city sim needs. That handoff is live: /api/civ/sites emits every state seat as a founding, and each one links straight into polis (phase III, shipped).

III The hinterland & the city

a day's walk → a street
the city cascade

Polis is the city proper, run as a cascade of three histories: civ (the über-macro), the hinterland (the mesoscale — a civ cell's neighborhood retiled with real terrain, where the "town every day's walk" lattice is minted under civ's demographic envelope and struck by civ's recorded shocks), and only then the city itself — streets determined by habitat, districts typed by the civ city's actual institutions.

Mappa carries no truth below its cells, so each level re-derives its finer geography (rivers by flow accumulation, coasts by era sea level) deterministically from the level above.

a city is made of institutions and people with names — the bottom rungs. org's siteSeed(worldSeed, city, cell) bridge now has its first consumer: a civ founding's siteSeed string seeds the polis city, so civ, polis and a future sited org all agree on it.

IV The people & institutions

1 person · a word
live · API

One seed → one coherent set of names that read as a single invented culture: 12 blendable phonotactic culture packs × 5 setting registers × 5 kinds, uniqueness enforced hard. A URL is a namebook.

1 institution · a hierarchy
live · API

One seed → one whole organisation: 8 verticals × 7 shapes, every box a deterministic person (craft/drive/wit triad, temperament, vocation), the whole tree rolled into a performance oracle — same people, different shape, different score. Expands infinitely downward.

civ now speaks with this voice (phase II, shipped): every civ culture draws a culture-pack blend, and its prophets, dynasts, faiths, guilds and cities are named from its books — Thremund the Younger of the Dylfjord State; Vylfstrand, seat of the Byhoingugn. Run hashes are untouched (names were never hashed).

The unification roadmap

The suite grew as separate tendrils; the full plan for pulling them into one stack is in STRATEGY.md. The short version:

  1. I — one address. This hub; the dashboard moved to /dash/ (old run permalinks redirect); every layer keeps its seed-is-the-URL contract.
  2. II — one naming voice (shipped). civ's cultures, people, beliefs, institutions and cities are named by the rite/names engine, one culture-pack blend per civ culture; names:'legacy' in the config replays the old strings. Chronicle hashes are unchanged — names were never part of the hash.
  3. III — the civ → polis handoff (shipped). /api/civ/sites emits every state's rise as a founding (seat lon/lat, tick, toponym, siteSeed); polis grows the city on the same world at the same cell, seeded by the siteSeed string. The dashboard links each founding straight into polis.
  4. IV — institutions with insides (shipped — first slice). Every civ institution and faith carries an org address (vertical, shape, seed world:seat:cell:kind+id) — one click on the development page opens it as a full org chart at rite.mino.mobi/org/, its people named in the institution's own culture voice. Every great person is a full org person (triad, temperament, civic vocation — a valid hoop NPC). Open: org performance feeding back into civ/polis economies.
  5. V — outward. Frozen chronicles as ATProto records, the fable /city wing, and hoop as the walkable end of the same stack.

And because a generative system is a theory made to run: every atomic assumption about human development embedded anywhere in the suite — with its mechanic, its scholarly lineage, and an honest label on how sure we are — is catalogued at the claims.

Everything here is deterministic and permalink-stable: if you can link it, you can regenerate it, forever. · mino.mobi