mino.mobi · the world engine suite · polis

polis — the city cascade

Polis is the city proper. A city cannot be simulated alone: its history is a client of everything above it. So a city here runs as a cascade of three histories, each one boundary conditions for the next, each one refining the same deterministic world — because mappa carries no truth below its cells, every level mints its finer geography (coasts, rivers, biome edges recomputed at higher resolution), conditioned on the level above and seeded by the address.

The cascade

the über-macro · 10,000 yr · planet
live

Cultures, states, faiths, wars — and cities as actors: where population concentrates, walls rise, sieges break, sackings land. The event stream a city inherits: its founding, its founder culture, its sackTicks, the global climate curve, and its demographic envelope (a per-city population series).

A civ cell is ~a week's walk across — the macro knows that a city exists and what happened to it, never its street plan.

boundary conditions down: founding + culture + shocks + climate + the population envelope, via /api/civ/sites.
the mesoscale · one region · a day's walk
live (the former polis sim)

The civ cell's neighborhood retiled as a finer Voronoi mosaic carrying real terrain — rivers re-derived by flow accumulation, coasts breathing with sea level. Here the "town every day's walk" lattice is generated (minimum-spacing founding over site-vs-situation scores): the macro cannot see it, so the mesoscale mints it — constrained by civ's envelope and struck by civ's shocks (sacks, droughts) at their recorded moments.

Arrive from a civ run: ?civ=1&world=…&city=k. Sister view: a whole continent as a closed system.

boundary conditions down: which town is the city, its neighbors and trade arteries, its local terrain patch.
the micro · streets · habitat-determined
first layer live — the settlement field

The city proper: districts, blocks, streets — so strongly determined by habitat that the plan falls out of the terrain: the river bend fixes the port, the defensible rise fixes the citadel, walls trace the epoch-2 fortification, district kinds come from what the civ city actually contains (its institutions rollup — a city is an org of orgs). Recursive Voronoi descent, every address a seed: world:city:cell:d2:b5:lot3.

The settlement field is live — the original polis theory's three field regimes run as one life cycle over a true Voronoi frame: founding spokes to the one engine that matters (the Physarum star), coverage capillaries sprouting toward worst-served tissue (the hypoxia solver), then the arterial hierarchy as flux between district anchors once the base diversifies. On top runs the land market (Ricardo → von Thünen → Alonso): every cell goes to the use that bids most for its access — commerce takes the core, industry the mill and port, and the farms that feed the town rise first and are displaced outward as the land grows too dear (Sinclair's development shadow empties the near fringe before the city even arrives). And the mesh itself is alive: the city is one continuous Voronoi over a growing point set, and every tick every cell holds the power of mitosis — where product (rent × area) runs high the cell divides and the whole diagram re-tessellates, seamlessly. Fine grain downtown and coarse pasture at the edge are outcomes of the land market, not settings. Walls rise on the civ tick and leave a fringe belt; sacks burn quarters that rebuild. And now the city has people — individuals, one dot per person, each with a trade (the harbour fills with dockers and sailors, the works with smiths, the court with clerks) so the districts read at a glance. They choose homes by trading rent against commute, arrive by birth or as immigrants through the gates, and the whole city breathes — souls commute to work by day and home by night. Institutions rise at each quarter (the export base — the harbour company, the court, the works), led by named notables and opening as full org charts. And around them the secondary economy spins up, exactly as the base multiplier says it must: bakers, taverns, smiths, markets, temples — a hundred small establishments where most people actually work, sited by Christaller thresholds (a bakery on every corner, one goldsmith for the whole town). The city is scored on a vitality oracle (à la hoop/econ) — is it a good place to live, not just how big? And it has a money supply: surplus pools into capital, the cost of capital falls as banking deepens, and the town goes into debt to raise the indivisible things it can't yet afford — bridges that span the river and let the city reach across the water, a mole, a market hall, an aqueduct — until it over-leverages and a Minsky crash wipes the books. Tap anyone to inspect them.

Arrive from a civ run: ./city/?civ=1&world=…&preset=…&city=k — the envelope, the era ticks, the walls tick and every sack arrive as boundary conditions. Blocks and plots (the Conzen burgage layer) are the next descent: the engine for it is live as morph, below. The full design: STRATEGY.md, Phase VII.

down again: the settlement field's cells become blocks, their edges streets, and the blocks are cut into plots with buildings on them.
blocks · plots · buildings
the engine, as a toy — not yet wired to the field

The descent below the cell, after Conzen: a town plan is its streets, its plots and the buildings on the plots, laid down at different times. Each district is a grain laid out by one era's idea of a street (an organic core, a planned grid, a boulevard scheme round a rond-point, a modern grid, a suburb), each lattice at its own angle, so where two meet there is a boulevard on the seam and the triangular plots where flatirons stand. Every block is shared among the streets it fronts by its straight skeleton, each frontage cut into plots back to the middle of the block (burgage strips in the core, merged plots later), and every building stands on the front of its plot, as deep, tall and roofed as its era built. All of it is convex clipping, so the plots tile the blocks exactly. The toy generates a city of ~4000 buildings in ~150 ms, in plan and in model; next it takes its districts, eras and streets from the settlement field's history instead of from a seed.

Why run three histories?

Because that's how downscaling works — a regional model nested in a global one, nested again for the site. Same discipline here: each level's aggregates must track the level above (the hinterland's towns sum toward the civ city's envelope; the city's wards sum toward its town), while each level adds structure the level above cannot represent. The upper runs are cheap and content-addressed: the civ run caches forever, the hinterland runs in milliseconds — the cascade for one city costs barely more than the city itself.

The original polis theory → · the timeline of any world →