EQUILIBRIUMEngine
← back to the journey

↑1 the same shape, one altitude up

A city is a slow character.

You watched one guard hold or break — a handful of state variables, sparse couplings, a threshold. Now run that exact shape slower and wider: its states are food_supply, unrest, cohesion, fear, legitimacy; a bad harvest is a channel; a riot is a threshold crossing. Not a new system — the same control loop, with a longer memory.

real · today

The character-scale engine is real and deterministic — states, couplings, thresholds, the cross-agent router, the full trace. You've been reading its actual runs all along.

vision · the frontier

The city scale is where this is heading — every claim below grounds on a mechanism that already exists, but the demos here are illustrative models, not a shipped city simulator.


↑2 the tipping console

Push a city across its threshold.

Below: 160 weeks of one city, computed the moment you touch a control. Fail the harvest and scarcity becomes a steady push into unrest; land a border raid and fear spikes and couples in. When unrest crosses the dashed line, the riot fires — then vents, and legitimacy pays for it. Same inputs, same 160 weeks, every time.

grounds on: states + thresholds grounds on: the real weather channel deterministic — try “run it again”
concept demo · city_as_slow_character vision — illustrative model
riot threshold · 0.75 calm boiling wk 0wk 40wk 80wk 120wk 160 wk 0
harvest normal
week cursor

    A riot you can cause is a riot you can debug. And what a city hears about itself moves the same way — follow a rumour ↓


    ↑3 the contagion field

    A slander, changed in the telling.

    Reputation is not a global score — it's a field of per-source relation states. A rumour is just an event with a long mean-free-path: it hops a trust-weighted graph, decaying at each hop, and every carrier's relation filter colours what they pass on. Drop one below and watch what reaches the top of the hill.

    grounds on: the cross-agent router, carrying a belief instead of an order grounds on: per-party relation states
    concept demo · rumour_contagion vision — illustrative model
    Old Symoncounter cook · the noodle bar

    “Guildmaster Orin shorted the grain levy.”

    signal 1.00 the first telling
    Maravendor · the street market

    “Orin has been skimming the levy for years.”

    signal 0.72 resents the guild → sharpens the blame
    Sergeant Broszthe door crew

    The guild is hoarding while the ward goes short.”

    signal 0.51 fears unrest → makes it collective
    Page Iltathe tower lobby

    They say the guild keeps back more than its share.”

    signal 0.33 neutral to both → softens, hedges
    The boss upstairsnine days later

    The guild cannot be trusted with the levy.”

    signal 0.18 what finally arrives — changed
    was said“Guildmaster Orin shorted the grain levy.”
    arrived“The guild cannot be trusted with the levy.”
    tracesignal ×0.18 · 4 relation filters · one man's debt became a faction's guilt — every hop inspectable
    deterministic — the same graph and filters always distort it the same way

    Person, crowd, province — it's the same five lines. Change altitude ↓


    ↑4 nested scales

    One physics, three clocks.

    Fast characters live inside slow polities. Send one identical disturbance through a guard, a keep, and a province — the same update rule answers at every altitude, only the decay constant changes. A hungry province doesn't simulate every citizen; it seeds the local tempers from its macro-state when you walk in.

    grounds on: the one generic state element — same equation, different constants
    concept demo · nested_scales vision — illustrative model
    a guard
    a sharp word on the door
    decay ≈ minutes
    a keep
    a bad week at the till
    decay ≈ days
    a province
    a lean winter
    decay ≈ seasons
    new = decay·old + (1 − decay)·setpoint + Σ gain·input + Σ coupling·other_state  // the only equation, at every altitude

    ↑5 why this is affordable

    Cost tracks attention, not population.

    Observer-gated worlds

    Distant settlements don't tick hot. Their slow states — resentment, scarcity, faction hostility — rest as a tiny vector until someone looks.

    State is the memory

    No history to replay, no log to lose — a settlement is O(1): a handful of numbers that fully determine its future.

    Deterministic resume

    On arrival, project forward from the last snapshot — the same equations give the same present, every time. Thousands of coherent settlements.