Recovery blocker was material, not motivational. Two fixes: (1) harvest floors and commons debris apply only to living, regenerating resources - stone does not regrow, so "leave half" merely stranded the world supply and kept the homeless homeless forever; minerals now quarry to depletion for every soul equally. (2) Matter conservation: idle variety-gathering touches only renewables, and packs may only shed what the land replaces - lossy make-room had milled 900+ stone to dust during demand flapping. Verified over 260 headless days: year-1 winter still wrecks the naive town, it rebuilds in 20 days, famine survivors found the first granaries from hunger memory, and year-2 winter passes with zero ruins on stored reserves. The town has a history now: naive youth, catastrophe, learning, resilient maturity. Remaining tuning in FINDINGS.md: granary sprawl, post-famine nourishment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
11 KiB
WorldSim — Soak Experiment Findings (July 2026)
Four long-run experiments against the South (Nature) town MVP. Each run:
15 NPCs, 256×256 world, seed 12345, ~240 simulated days (2 years) at
accelerated speed. Data: soak_stats.csv (daily), soak_npc_days.csv
(per-villager dominant states), soak_gifts.csv (every gift, with names).
Run 1 — Baseline (no seasons): the dead paradise
Setup: constant regeneration, upkeep + food demand only.
Result: perfectly stable, perfectly inert. 200 days: wood held a ±1% band, shelter condition pinned at 100%, zero trades, no roles — every villager Socializing-dominant ~114 of 119 days, 78% of waking life idle. The village completed all construction and expansion by day 3–4 and then had nothing left to want.
Lesson: a village is a metabolism, not a project. Equilibrium without pressure produces no society: no differentiation, no exchange, no structure. Abundance makes generosity unobservable.
Run 2 — Seasons (regen throttle only): the buffers win
Setup: 30-day seasons; winter cuts food regen to 5%, wood to 40%. Granary added (clay walls — first clay use), need-based gift trigger.
Result: winter became a worked season — gathering 4,889 ticks/day vs 1,857 in summer, wild stocks visibly drained and refilled. But nourishment ran the identical sawtooth year-round, the granary sat untouched at 150/150 through two winters, and trades stayed at zero across 240 days.
Lesson: three compounding buffers (the sustainability floor acting as a ~360-unit hidden savings account, personal pack reserves, wild food budget exceeding winter need) meant scarcity never reached an individual. Pressure that only raises labor doesn't create interdependence.
Run 3 — Frost: the hungry gap
Setup: winter now decays standing food ~7%/day toward 15% (frost kills the larder); granary draws deepened; anti-redeposit rule.
Result: the simulation came alive.
- First trades in sim history: 21 (17 deep winter, 4 early spring) — exactly when granary-empty met neighbor-with-food.
- Granary sawtooth textbook: full through autumn, empty by winter day ~25, refilled within 4 days of spring. Both years.
- The sim reproduced the "hungry gap" — a real agricultural phenomenon neither designed nor named in the code: worst hunger (village nourishment 0.21) fell in early spring, after stores ran out but before the land regrew past harvestable thresholds.
- Crisis cascaded: the food emergency pulled labor from heating (firewood reserves dipped to 10, condition below 100% for the first time).
- Balanced: severe hunger, zero lasting health damage, both years.
Lesson: storage limits + decay + regrowth lag ⇒ emergent seasonality of need. Sharing is a response, not a behavior: 480 days of abundance produced zero exchanges; ten days of genuine need produced twenty-one. Still missing: individual roles — identical souls in a global work queue respond identically (winter gather ticks all within 490–553).
Run 4 — The contrast test: 3 selfish souls among 12
Setup: villagers M/N/O run the East (Selfish) soul profile. Same engine, same possibility space; only behavior weights differ: low sustainability (strip nodes to ~15% vs the 50% commons floor), low generosity (refuse gifts; excluded from asking), low community bias (no communal work at all), high accumulation (double carry, standing hoard).
Result — the four-town thesis validated:
- Selfish villager-days: 0 build ticks (vs 104/day for nature souls), gather 69 vs 269, rest 0 (never tired), socializing 1,369 vs 921. A visible leisure class living off a working village.
- Gift network: 11 gifts, all nature→nature. The selfish never gave and never needed to receive. First individual differentiation appeared: Villager_A gave 4 of 11 gifts — the village's generous one.
- The 12 communal souls absorbed 15 souls' worth of burden without a single ruin.
The central finding: selfishness strictly won. Most leisure, least fatigue, fullest bellies, zero costs, no pushback. This is not a balance bug — it is the empirical case for the game's soul layer. Economics alone cannot make selfishness cost anything; that is the job of imprints, debris, echoes, and social memory (the Unity POC's warmth-echo system). The soul-consequence layer is not flavor on top of the economy — it is the only thing standing between the South town and being farmed by the East.
Run 5 — The soul layer, uncalibrated: everyone a sinner
Setup: warmth echoes (memory replaces omniscience), refusal debris, commons-line harvest debris, soul-to-soul atmospheric pressure, debris metabolic tax (faster drain, weaker meals).
Result: justice arrived — all 108 refusals belonged to the selfish three, whose health collapsed to 31–64 while nature souls held 100 (the selfish never rest, so they have no healing loop — laziness blocking recovery is fully emergent). But two pathologies: (1) the whole village ratcheted to maxed others-regard debris, because the 50% commons penalty line sat above the nature souls' own 45% harvest floor and debris had no clearing path — harm without healing; (2) warmth-weighted asking plus near-total gift transfers produced a 2,501-gift winter food-swapping loop, and the universal debris tax turned the hungry gap into famine (village nourishment 0.00).
Lesson: a moral system needs calibrated innocence and a redemption path, or it converges to universal guilt and reads as noise.
Run 6 — The soul layer, calibrated: the ledger works
Setup: commons line lowered to 40% (below any respectful floor); gifts capped (keep 5, give ≤3, ask only when genuinely hungry); giving heals the giver (−0.003 others-regard vs +0.02 per refusal — harm ~7× easier than healing).
Result — the design document, in numbers:
- Nature souls: debris 0.000 after two years. The innocent are innocent.
- Selfish souls: 0.225 and climbing. The debris gap is total and driven entirely by how each soul lives.
- Gift ping-pong dead (2 gifts); the contact log is 18 refusals — in the hungry gap the only villagers with surplus are the hoarders, so the starving ask them, are refused, and learn. The village's warmth map is a map of learned coldness pointing at three names.
- Material consequences within one lifetime are mild — the selfish stay comfortable. The sim's justice is written in the souls, not the outcomes. That is correct: in the full game, the ledger cashes out at death (heavy debris carries forward; the rebirth verdict; the grave nobody tends). The sim now produces exactly the input reincarnation consumes.
Next
Run 7 — Organic construction v1: the stone-lock collapse
Setup: two towns (South nature+selfish, North generational); all construction quotas removed. Shelters founded after three unsheltered nights (beds are real: 3 + modules); granaries founded from surplus.
Result: a construction boom (8 shelters, multiple granaries by day 10), then total civilizational collapse by day 40 — every building ruined, and both towns spent the remaining 200 days homeless among the monuments. Cause: a priority inversion. The homeless-gather-stone rule preempted every other communal priority, so once ruins made everyone homeless, all communal souls locked onto stone forever — foundations got laid, walls (wood) never did, firewood hauling and granary stocking ceased entirely, and the emergency rule prevented the emergency from ever ending.
Lesson: in a needs-driven economy, priority ordering is the constitution. An urgent rule that outranks the work needed to resolve it deadlocks the society. (Also: surplus-founding without scarcity memory produced granary sprawl by day 5 — buildings must be founded by lived need, not by momentary abundance.)
Fixes → run 8: construction sites outrank homeless stone-gathering (finish the walls before founding another foundation); homeless founding defers while any shelter is under construction; granary founding requires hunger memory + surplus, not surplus alone.
Runs 8–9 — Organic construction v2: fixed forward, broken backward
Headless debugging (runs driven from the CLI) found and fixed three real bugs: wilderness homes (founders built wherever their pack filled — usually at a stone mine 100+ cells out; homes now rise at the founder's habitual sleeping spot, within reach of the community), sleepless nights (low-fatigue villagers socialized all night, so beds went unused and rough nights — the founding trigger — never occurred; night now sends everyone to bed), and floor-sleeping (arrivals at a full shelter counted as sheltered; a bed must exist when you lie down in it).
Verified working: bootstrap founding near town, ~2,200 construction deliveries, first roofs by day 3, three seasons of stability.
Open problem (later resolved in run 10): the loop cannot recover from loss. The winter crisis ruins shelters and rebuilding stalls.
Run 10 — The mineral question: recovery achieved
Demand diagnostics found the recovery blocker was material, not motivational: homeless villagers correctly demanded stone (462/525 villager-days) but could not get it, twice over:
- The commons ethic stranded the stone. Respectful souls won't take the last half of any deposit — but stone doesn't regrow, so once all deposits sat at the floor, the world's remaining stone was morally untouchable and the homeless stayed homeless forever. Fix: the harvest floor is an ethic of regrowth — floors and commons debris now apply only to living, regenerating resources. Minerals quarry to depletion, for every soul equally.
- Lossy packs milled the mountains to dust. Idle variety-gathering mined stone as busywork, and the make-room rule vaporized cargo on every demand flap — 900+ stone destroyed in packs. Fix: idle gathering touches only what regrows, and packs may only shed what the land replaces. Minerals are mined on purpose and conserved.
Verified (260-day headless run): year-1 winter still wrecks the naive town — then it rebuilds within 20 days, the famine survivors found the first granaries (memory, as designed), storage grows through autumn, and year-2 winter passes with zero ruins on granary reserves. The town now has a history: naive youth, catastrophe, learning, resilient maturity. Organic civilization works end-to-end.
Remaining tuning (non-blocking): granary sprawl (hunger-scarred souls keep founding storage — ~10 granaries by day 200; needs a satiation rule), and chronically low average nourishment in the post-famine years (likely endless granary-stocking labor crowding out comfort — related to sprawl).
Soul layer: done and validated (runs 5–6). The expansion phase begins:
- Towns as spatial structure: multiple settlements with their own centroids, buildings, and granaries; NPCs affiliated with a home town but free to roam — the blend space between towns becomes real.
- The North (Generational) town: second settlement; its signature knowledge/teaching system (SPEC §5) is the largest unbuilt spec piece.
- Inter-town contact and trade routes (Phase 3); object-level soul residue traveling with traded goods.
- Save/load round-trip (SPEC §9 amendment) — still outstanding.